Autor |
Beitrag |
Yeti
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 09.01.07 17:35
Ich hab mal ne Frage.
Man kann ja mit Delphi die LED Leuchten seiner Tastatur ansteuern. Also CapsLock und die anderne beiden noch...
Ich hab ne Tastatur von Logitech.
Und die hat ne zusätzliche LED leuchte.
Wenn die normalen funktionen der F-Tasten aktiviert sind, dann leuchtet die, und wenn die extrafunktionen der F-Tasten aktiviert sind, dann leuchtet sie nicht.
Um das ein und auszustellen, gibt es ne Taste.
Wie greif ich nun mit Delphi auf die Taste zu, so dass die LED an und aus geht, so wie bei CapsLock etc.
Habt ihr da vllt ne Idee?
Würde mich freuen.
LED von den anderen 3 Tasten zum leuchten zu bringen hab ich geschafft mit ein wenig hilfe im internet ^^
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure SetLED(Key: Byte; MakeOn: Boolean); var KS: TKeyboardState; OnOrOff: Boolean; begin GetKeyboardState(KS); OnOrOff:= KS[Key] <> 0;
if (OnOrOff xor MakeOn) then begin if (Win32Platform = VER_PLATFORM_WIN32_NT) or (Key <> VK_NUMLOCK) then begin keybd_event(Key, $45, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(Key, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); end else begin KS[Key]:= Ord(MakeOn); SetKeyboardState(KS); end; end; end; |
Und dann zum aktivieren:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); begin SetLED(vk_NumLock,True); SetLED(vk_Scroll,True); SetLED(vk_Capital,True); end; | Moderiert von Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 09.01.2007 um 16:36
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Di 09.01.07 17:38
[Vermutung ON]
Ich befürchte, das ist ein Feature innerhalb deiner Tastatur, auf das du von außen - also vom PC und somit von Delphi - nicht zugreifen kannst.
[Vermutung OFF]
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 09.01.07 17:41
Mir wurde gesagt, dass ich den Keycode abfangen müsse/könne...
Ist das nicht vllt möglich?
Wenn ich wüsste wie das geht, dann müsste ich doch theoretisch die Taste ansteuern können...
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Di 09.01.07 17:45
Wenn es die gleiche Tastatur ist, die ich bereits ausgetauscht hab (wegen völliger Entnervung), trifft deine Vermutung höchstwahrscheinlich zu.
Die Tastatur von der ich spreche, hatte Standardmäßig (bei jedem Booten erneut) die Funktionen der F-Tasten deaktiviert und mit völlig unnützen, "ach so pratkischen" Funktionen wie ... "Emails" (Ich benutze kein Outlook, danke Logitek) Musik Play Stop etc. (Natüüürlich kann man den Nemp mit diesen komischen Tastendingern nicht steuern... *argh*) ersetzt. Ich habe die Tastatur mit meiner alten Ergoforce marke Steinalt ersetzt und bin glücklich damit.
Wenn es bei dir vom Tastaturentreiber aus keine Möglichkeit gibt, diese Taste standardmäßig an- oder auszuschalten, dann seh ich Schwarz für dein Vorhaben...
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 09.01.07 17:48
Also ich hab nicht das Problem, dass meine Tastatur beim Booten die F-Tasten ausstellt und mit anderen "nützlichen" dingen ausstattet...
Ich will eig. nur die LED leuchte zum blinken bringen ^^
Weiß aber bisher nicht, wie ich drauf zugreifen soll.
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Di 09.01.07 17:52
Also hier: www.delphi-forum.de/viewtopic.php?t=39219, nicht gleich oben, sondern unten der Post von Adrian,
(das oben ist ja allgemein bekannt) hat schon mal jemand das Problem gehabt. Gab aber auch kein Ergebnis, leider.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 09.01.07 18:00
Naja, dann hoffen wir mal, dass es hier besser läuft ^^
Ich hab ja eine vierte LED leuchte.
Geht es denn nicht, den KeyCode abzufangen, der entsteht, wenn ich die taste drück, die die LED leuchte an und ausmacht und somit mit Delphi auszuführen?
Oder lieg ich da ganz aufm Holzweg
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Di 09.01.07 20:02
Yeti hat folgendes geschrieben: | Ich hab ja eine vierte LED leuchte.
Geht es denn nicht, den KeyCode abzufangen, der entsteht, wenn ich die taste drück, die die LED leuchte an und ausmacht und somit mit Delphi auszuführen?
Oder lieg ich da ganz aufm Holzweg |
Weißt du denn, ob deine Tastatur überhaupt irgendwas zum Computer sendet, wenn du diese Taste drückst?
Vielleicht schaltet die Taste einfach nur innerhalb der Tastatur die Geschichte um, so dass der Computer davon gar nichts mitbekommt.
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 09.01.07 20:27
Also wenn ich die Taste drücke, erscheint auf dem Bildschirm die schrift "Erweiterte Funktionstasten" bzw "Standartfunktionstasten", je nach dem ob ich die LED an oder ausschalte... Es muss dementsprechend also etwas an PC gesendet werden...
Das sieht so aus (Ausschnitt vom Desktop)

|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Di 09.01.07 21:22
Okay, dann passiert da was.
Unabhängig davon, dass die Taste tatsächlich etwas zum Compi sendet, weißt du aber noch nicht, ob es der Compi ist, der die LED einschaltet oder ob es die Tastatur selber ist. Letztlich willst du ja nur die LED ein- und ausschalten. Dazu musst du zumindest irgendeine Protokoll- und/oder Schnittstellenbeschreibung der Tastatur haben. Andernfalls wirst du ja nie wissen, was dein Programm der Tastatur senden muss, um die LED zu schalten.
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 09.01.07 21:34
mhhh
und wo find ich das nun?
Ich glaub es gibt wirklich keine Lösung 
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Mi 10.01.07 07:31
Yeti hat folgendes geschrieben: | mhhh
und wo find ich das nun?
Ich glaub es gibt wirklich keine Lösung  |
Hallo,
das ist schlicht Reverse Engineering: Speicheroszilloskop an die PS/2-Schnittstelle anschliessen, PS/2-Protokoll sorgfältig studieren, aufschreiben, welche Daten bei Betätigung der Spezialtaste(n) über die Schnittstelle gesendet/empfangen werden.
Bei den bekannten 3 LEDs ist das $ED $0x mit x: bit 0 Scroll Lock, bit 1 Numlock, bit 2 Capslock, nach IBM AT Technical Reference. Wenn sich der Entwickler was gedacht hat, hat er ja vielleicht bit 3 mit der 4. LED belegt. Vielleicht auch nicht, damit die Standardfunktionen nicht gestört werden, sonst müsste nämlich das BIOS angepasst werden.
Gruss Reinhard
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Mi 10.01.07 09:49
Titel: ne ganz einfache Tastaturtest Routine
hab mal was gebastelt, 1 Edit, 1 Listbox, Project1.exe im Anhang
Zum Test muss der Focus immer auf dem Edit liegen!
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin listbox1.items.add(pchar(inttostr(key))); listbox1.topindex:=listbox1.items.count-1; end; |
Also bei mir spricht er auch an, wenn ich NUM, ROLLEN, PAUSE etc. drücke
Einloggen, um Attachments anzusehen!
|
|
Manina
      
Beiträge: 44
Win 7 Pro
RAD Studio 2010 Pro
|
Verfasst: Mi 10.01.07 11:29
Meine Klapperatur ist zwar von Microsoft, aber das Problem kenn ich auch. Die Taste heißt da F-Umsch, beim Betätigen erscheint auf dem Bildschirm "F-Umsch ein" bzw. "F-Umsch aus". Entspricht also Yetis Problem, denk ich...
@Raffo: Das Dumme ist, daß eben kein OnKeyDown ausgelöst wird...  Dein Prog reagiert auf alle Tasten außer eben dieser einen, beim Betätigen passiert in der Listbox einfach nur --> nix...
_________________ Gates, oder Gates nicht ?
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 10.01.07 18:05
Leider zeigt dein Programm auch bei mir nichts an, wenn ich die Taste drücke ...
Wär aber auch zu schade gewesen...
Und naja... wo finde ich ein Speicheroszilloskop?
Das sicher nich billig.
Und wenn ich das dann kauf muss ich das auch erstma versteh was der mir erzählt.
Würde ziemlich teuer, oder gibs die billig? ^^
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Mi 10.01.07 18:19
Also ich hab da noch ne andere Tastatur, mit "FN" = Funktion, die spricht tatsächlich in meiner Procedure auch nicht an. Dann gibt da noch die "Power" / "Sleep" / "Weak Up" Taste - da zeigt er auch nix an (oder er fährt ja vorher runter).
Nichtsdestotrotz glaube ich, das EIN Treiber diese Nachricht bekommen muss, und eben diese muss abgefangen werden (by the way, ich hab diesen speziellen Treiber für meine Tastatur NICHT installiert, aber die POWER Taste funzt trotzdem.
Ja, wäre zu schade gewesen, wenn "zu" einfach ist...
|
|
OldGrumpy
      
Beiträge: 82
|
Verfasst: Mi 10.01.07 19:43
Das Handling für die Power-Taste an der Tastatur ist ziemlich weit "unten" im System, dazu musst Du einen Lowlevel-Zugriff auf die Tastatur realisieren. Ich hatte irgendwo mal was dazu gelesen, nachdem mich eine Tastatur bei der "Power" direkt oberhalb von PageUp lag, schier in den Wahnsinn getrieben hatte, weil ich alle Naselang aus Versehen nicht nur PageUp sondern auch Power erwischte, und das Mistvieh von Rechner dann runterfuhr *arghs*  Die Chancen stehen nicht schlecht, dass das mit der F-Taste (bei meiner Logitech heisst die Umschalttaste wirklich "F-Taste"  ) wenn überhaupt, dann auch sehr tief in den Windows-Eingeweiden gehandhabt wird.
Übrigens hast Du bei all den Spekulationen eines vollkommen übersehen: Der Status der F-Led wird von der Tastatur ganz alleine verwaltet. Es gibt also überhaupt keine Garantie, dass die Tastatur mehr macht, als den PC zu informieren. Vor allem wenn die F-Taste auch ohne Spezialtreiber (wie bei mir) funktioniert, liegen die Chancen gut (oder eigentlich eher schlecht für Dich) dafür dass Zugriff von aussen auf die LED gar nicht möglich ist.
|
|
Yeti 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 10.01.07 19:51
Also ich hab extra nen Programm installieren müssen, damit die Tastatur funktioniert.
Also denk ich mal auch treiber...
Zwar funktioniert die Tastatur auch so, aber durch das Programm kann ich umstellen, was die Tastatur bei den zusätzlichen F-Tasten machen soll...
Es müsste also doch möglich sein, irgendwie auf die Taste zuzugreifen...
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Mi 10.01.07 19:52
Dann würd ich doch so tun: So tun, das die Taste gar nicht existiert und diese Taste "rausziehen" - so das sie tatsächlich nicht existiert - denn was nutzt Dir ne Taste, die Du programmierst und NUR für DIESE Tastatur gilt, wenngleich Du (oh verzeih mir) nen Kaffee drüberschüttest - und Du mal wieder nen neues Modell suchen musst... gelle?
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Mi 10.01.07 19:58
Wenn dieses Signal tatasächlich von einem Treiber tief unten abgefangen wird, gibt es nur die Möglichkeit, einen geschichteten Treiber zu programmieren und ihn das Signal abfangen zu lassen. Beschäftige dich am besten mal mit C(++) und lade dir das DDK (Driver Development kit) von MS runter...
(Ach ja, nur so OT: Es gibt ein Delphi-DDK. Ist aber AFAIK nur experimentell, vergiss es mit Delphi...)
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|