Hallo Leute,
ich habe so eine Tastatur.
Jetzt wollte ich mit Hilfe der PS2Keybord Examples die Tastencodes auslesen.
Elektrische Verbindungen funktionieren und Tastaturcodes werden auch im Serial Monitor angezeigt.
Laut der Codierung in der Lib gibt es einige Tasten gar nicht und andere doppelt.
So erzeugt der Druck auf "LEERGUT" 0x32 und der Druck auf "2" auch 0x32.
Wie kann ich die echten Tastaturcodes als DEC oder HEX auslesen?
Letzter Ausweg wäre, einen alten verstaubten Uralt-PC mit PS2 Anschlüssen zu reaktivieren und in einem Editor zu schauen, was bei den jeweiligen Tastatureingaben passiert.
das ist ja auch keine normale Tastatur, meinste nicht auch.
Die Sondertasten wirst du selbst definieren müssen.
Das kann einem auch bei Sondertasten auf sonstigen "normalen" Tastaturen passieren.
Ist mir schon klar, dass das keine "normale" Tastatur ist. Trotzdem sollte doch jeder Tastendruck eindeutig identifizierbar sein. Wie kommen sonst die Supermarktkassen damit klar?
Ich kenne zwar die Lib nicht, aber Du musst berücksichtigen, dass eine PS2-Tastatur bei einem Tastendruck gegebenenfalls auch mehr als 1 Byte sendet. Auch beim Loslassen werden Codes gesendet.
Wenn die Lib das bereits versucht zu decodieren, könnte es gut sein, dass sie mit dieser Sondertastatur nicht klarkommt.
So weit, wie ich bisher festgestellt habe, sendet jede Taste nur beim Druck einen 1 Byte Code.
Der Schlüsselschalter mit den entsprechenden Benutzercodierungen sendet einen 2 Byte Code.
Was ist, wenn die Tastatur einfach umprogrammiert wurde und jemand der "Leergut"-Taste den Wert 0x32 zugewiesen hat, was ja im ascii-Code die Ziffer 2 ist?
Ich vermute mal, dass den Tasten keine Adressen zugewiesen wurde, sondern Werte, wenn du einen Weg/Programm findest, kannst du jeder Taste wahrscheinlich unterschiedliche Hexwerte zuweisen, die du dann als Adresse nutzen und auswerten kannst.
freddy64:
Letzter Ausweg wäre, einen alten verstaubten Uralt-PC mit PS2 Anschlüssen zu reaktivieren und in einem Editor zu schauen, was bei den jeweiligen Tastatureingaben passiert.
Wenn du die Software von Nixdorf findest und auf deinem PC zu laufen kriegst, kannst du den PS2/USB-Adapter mal testen, oder ähnliche. Unter Umständen hapert es aber fehlender 64 bit-Unterstützung der Software, da hatte ich mir vor Jahren wegen einer Casio-Kasse (Serieller-Port) mit einer VM, mit Win 7 oder XP in 32 bit, geholfen.
Hab einen Weg gefunden,
in der PS2Keyboard.cpp einfach ein neues Array mit den Hex Werten einer Standard IBM-erstellt und einige Werte auf 0 gesetzt, damit Key Up ignoriert wird.
Ob das jetzt mit den tatsächlichen Zeichen übereinstimmt (Tastatur am PC) ignoriere ich in diesem Fall.Wichtig ist nur, dass jede Taste einen eindeutigen Wert liefert. Und das funktioniert prima.
Interessant wäre noch:
Wie kann ich Daten an die Tastatur schicken? Ich würde gern eine der 3 LED's von der Tastatur (NUM_LOCK, CAPS_LOCK oder SCROLL) als Bereitschaftsanzeige verwenden.
Die Tastatur ist über 2 GPIO's mit dem ESP32 verbunden. Ein PC sendet doch auch irgendwie Daten, damit die LED's leuchten.
Da verändert sich zwar wieder jeder gelieferte Tastaturcode, aber das habe ich gleich wieder angepasst.
Vor Jahren hatte ich Mal mit einem Keyboard gespielt, auch konnte man vom PC aus die LEDs vorgeben, aber die Übernahme - also, daß die LEDs auch so leuchteten, wie zuvor bestimmt, passierte erst beim nächsten Tastendruck oder was in der Art.
Also eine Blink-LED war nicht möglich, da die Information nur übernommen wurde, wenn die Tastatur was sendete.
Müsste PureBasic oder was mit Visual-Irgendwas als Sprache gewesen sein, also auch dort nur vorgegebene Libs, Die halt irgendwas irgendwie machen.
Ob Das auch direkter geht und vor Allem ohne eine Aktion an der Tastatur auszulösen - kA.
Du meinst so was wie "SendKeys"? So simuliere ich mit AutoIT (VB-Variante) und VBA einen Tastendruck, zur Ausführung bedarf es aber immer noch einen (windows) Rechner.
@TO: Vielleicht kannst du die CapsLock, NumLock oder Scrolltaste über den ESP ansprechen und den Druck simulieren, dann wirst du aber auch die jeweiligen Funktionen der Tasten auslösen. Schau mal in die von mir verlinkte Bedienungsanleitung, da findest du auf der letzten Seite die Adressierungen der jeweiligen Tasten, CapsLock konnte ich als Taste CL ausfindig machen, teste es doch mal mit den Angaben.
Das ist weit als 10 Jahre her, weshalb ich mir in der Sprache nicht sicher bin.
Man konnte aber relativ einfach Windows-Programme erstellen, war kein 'normales' Programm, sondern in diversen Events, man konnte Parameter umsetzen (... Hintergrundfarbe eines Fenster, Fenster in Vordergrund, so Kram).
Für irgend etwas dachte ich, eine blinkende LED am Keyboard sähe doch cool aus
Ging so aber halt nicht.
Also du meinst quasi die temporäre Manipulation von anderen Programmen? Sollte mit AutoIT machbar sein, mit der Hintergrundfarbe hab ich es nie getestet, aber Programm in den Vordergrund zu holen und es remote zu bedienen funktioniert damit heute noch ziemlich gut. Klappt aber nicht mit jedem Programm, aber mit vielen. Nur wird das dem TO nicht viel bringen.
Hab eine Lib gefunden, die so etwas können soll.
Da muss ich mich aber erst mal durch den Code wühlen. Die 3 LED's auf der Tastatur blinken im Sekundentakt. Könnte aber auch am ESP liegen, dass das 3V Signal nicht eindeutig von der Tastatur als HIGH erkannt wird, oder die TX Funktion in der Lib stimmt nicht. Tastatur VCC ist zwar an +5V aber der ESP arbeitet ja intern doch nur mit 3.3V.
Ich habe momentan nur die POS Tastatur, die dann mal an eine Kasse soll. Nicht mal die Wühlkiste gibt noch eine PS2 PC Tastatur her.
freddy64:
Hab eine Lib gefunden, die so etwas können soll.
Da muss ich mich aber erst mal durch den Code wühlen. Die 3 LED's auf der Tastatur blinken im Sekundentakt. Könnte aber auch am ESP liegen, dass das 3V Signal nicht eindeutig von der Tastatur als HIGH erkannt wird, oder die TX Funktion in der Lib stimmt nicht. Tastatur VCC ist zwar an +5V aber der ESP arbeitet ja intern doch nur mit 3.3V.
Ich habe momentan nur die POS Tastatur, die dann mal an eine Kasse soll. Nicht mal die Wühlkiste gibt noch eine PS2 PC Tastatur her.
Die verlinkte Lib scheint nicht für einen ESP/ESP32 geschrieben zu sein. Kann schon sein, dass die 3V3 vom ESP zu wenig sind, oder auch die 5V der Tastatur zu viel für den ESP.
Ist vielleicht etwas übertrieben oder umständlich, aber kannst du die Tastatur mit einem 5V-Arduino (Mega, Uno, Nano ProMini-5V etc.) testen? Wenn die Funktion damit möglich ist, kannst du dir Gedanken über Spannungsdifferenzen der Signale machen.