So legen Sie einen benutzerdefinierten Tastatur-Scancode fest

7

Ich bin im Bereich Hardware im Allgemeinen neu. Für ein Projekt versuche ich, eine benutzerdefinierte Tastatur zu erstellen, die einige zusätzliche Tasten enthält, beispielsweise 20 bis 25 mehr als eine Standardtastatur. Ich habe über Scan-Codes und Scan-Code-Sets gelesen. Ich habe auch über Tastaturcodierer, Controller usw. auf Seiten wie diesen gelesen:

http://retired.beyondlogic.org/keyboard/keybrd.htm

http://www.computer-engineering.org/ps2keyboard

Trotzdem ist mir nicht klar, mit welchem ​​Encoder ich einen benutzerdefinierten Scan-Code generieren kann, der in keinem Standard-Scan-Code-Set definiert ist. Verarbeitet der Standard-Tastaturcontroller (8042-kompatibel) in einem PC auch diese nicht standardmäßigen Scan-Codes?

Vivek
quelle
Die meisten Tastaturen sind heutzutage USB-HID-Geräte. Es geht also nur darum, die gewünschten Codes in den Tastatur-Eingabebericht aufzunehmen ...
John Burton
Nun, ich sage "nur", es erfordert ziemlich viel Wissen und Software, damit alles funktioniert
John Burton
Ich kann keinen guten Artikel finden, der beschreibt, wie die USB-HID-Tastatur funktioniert, wie genau sie mit Host / PC kommuniziert usw. (wie oben beschrieben, beschreiben 2 Websites das PS / 2-Protokoll). Wenn Sie eine Website kennen, können Sie mir bitte die URL geben?
Vivek
@Vivek: Es wird wahrscheinlich keine Site geben, die nur USB HID beschreibt. Sie müssen USB selbst verstehen, von dem HID eine Teilmenge ist.
Davr

Antworten:

5

Atmel (und auch Microchip, glaube ich) verfügt über einen generischen HID-Treiber für ihre MCUs, an dessen Ende der vollständige Quellcode verfügbar ist (Client-Testsoftware und eingebetteter HID-Stack).

Beim Durchsuchen des Angebots von Atmel gibt es sogar eine vollständige Tastatur-Demo-Karte , ebenfalls mit Quellcode.

Es ist nicht das einfachste Beispiel (sie haben ihren eigenen Taskplaner geschrieben!), Aber ich denke, es sollte ziemlich einfach sein, zu modifizieren, um das zu tun, was Sie wollen.

Schauen Sie sich keyboard_task.cdie Tastatur-Demo der obigen Links an ( oder hier ). Es scheint genau das zu sein, was Sie wollen. Eine große Anzahl von Scancodes, mit denen eine Nachricht an den Computer geschrieben wird, indem eine Tastatur in einen beliebigen Texteditor emuliert wird.

Die tatsächlichen HID-Tastenanschlagwerte werden mit #define in eine aufgerufene Datei abstrahiert usb_commun_hid.h, die im obigen Download nicht (!) Enthalten zu sein scheint (ich denke, sie wird mit dem Compiler geliefert?), Aber sie werden nur einfachen Einzelbyte-Werten zugeordnet Sie sollten also in der Lage sein, mehr hinzuzufügen, als Sie möchten. (Siehe die a00102.htmlDatei im obigen Link.)

Ich würde mir vorstellen, dass Microchip etwas Ähnliches hat, aber ich habe momentan nicht allzu viel Lust, ihre Implementierung durchzuarbeiten. Wenn Sie möchten, kann ich dies möglicherweise später tun.

Natürlich hat dies keinen wirklichen Einfluss darauf, wie Sie diese Scancodes am Computerende dekodieren , aber auch hier hat Atmel .Net-Beispiele für die Kommunikation mit ihren HID-Geräten, sodass etwas Hackbares verfügbar sein sollte.

Connor Wolf
quelle
1

Ich wurde kürzlich in dieser Frage über zwei Optionen für die USB-Entwicklung aufgeklärt:

  • Das teensy USB-Entwicklungsboard (verwendet ATMEGA32U4 oder AT90USB1286 USB-fähigen AVR-Mikrocontroller)
  • Das Dienstprogramm inputattach (Linux) zum Registrieren serieller Geräte (wie eines FT232) als Eingabegeräte

Würde einer von diesen für Sie arbeiten? In jedem Fall müssen Sie Ihren eigenen Treiber dafür schreiben, da Ihr Betriebssystem das Senden von nicht standardmäßigen Scancodes nicht mag.

Der Vorteil von Standard-Scancodes besteht darin, dass jede Tastatur, die Sie anschließen, "nur funktioniert" (theoretisch). Wenn Ihnen eine Konfiguration nichts ausmacht, warum sollten Sie dann versuchen, die Scancodes zu emulieren?

Kevin Vermeer
quelle
0

Es sollte gut funktionieren, funktionieren diese "Multimedia" -Tastaturen nicht so? Mit den Tasten Play / Pause / Volume / etc?

davr
quelle
"Multimedia" -Tasten sind Teil des Standards selbst, IMO. Wenn Sie computer-engineering.org/ps2keyboard/scancodes2.html überprüfen, können Sie feststellen, dass allen Multimedia-Schlüsseln ein bestimmter Scan-Code zugewiesen ist. Und ich spreche über die Verwendung von nicht standardmäßigen Scan-Codes (diejenigen, die keinem bestimmten Schlüssel im Standard zugeordnet sind). Nach meinem Verständnis gibt es ungefähr 150 Scan-Codes, die nicht verwendet werden. (Fortsetzung im nächsten Kommentar ...)
Vivek
Selbst wenn wir bedenken, dass ungefähr 30 ungerade Werte als Befehle verwendet werden, gibt es dennoch einige Scan-Codes, die "undefiniert" sind. Ich möchte diese nutzen. Sprich im Bereich von 85h - DFh. Können wir das tun?
Vivek