Einheitentreiber für USB-Tastaturclient
Zweck
Unterstützt die USB-Tastatureinheiten (Universal Serial Bus).
Syntax
#include <sys/usbdi.h>
Beschreibung
Der Tastaturclient besteht aus einem Back-End, das mit dem USB-Systemtreiber (USBD) verbunden ist, und einem Front-End, das mit den AIX® -Anwendungen, wie z. B. dem LFT-(Low Function Terminal) und X-Server-Anwendungen, verbunden ist. Der Treiber für den USB-Tastaturclient hat keine Kenntnisse über die zugrunde liegende USB-Adapterhardware. Stattdessen sendet der Clienttreiber Steueranforderungen über die USBD an die USB-Tastatur und empfängt Eingabeereignisse über die USBD. Der Tastaturclienttreiber identifiziert sich selbst als generischer Tastaturtreiber, indem er das Feld devid in seinen vordefinierten Object Data Manager-Daten (ODM) auf 030101setzt. Die übergeordnete Einheit des Tastaturclients ist die Pseudoeinheit usb0. Der Tastaturclient hat kein untergeordnetes Element. Jede an das AIX -System angeschlossene Tastatureinheit wird als /dev/kbd0, /dev/kbd1usw. dargestellt.
Der USB-Tastaturclienttreiber unterstützt den Anschluss mehrerer USB-Tastatureinheiten. Jede Einheit wird im ODM aufgelistet und als verfügbar markiert. Der Clienttreiber behandelt alle Tastaturen als eine einzige logische Einheit. Die Einstellungen für Leuchtdioden (LEDs) werden an alle Tastaturen und Eingabeereignisse von allen Tastaturen an einen einzigen Eingangsring gesendet. Die Statusverfolgung durch den Clienttreiber stellt sicher, dass ein Schlüssel keine aufeinanderfolgenden Unterbrechungsereignisse generiert und dass die typische Verzögerung und Wiederholung entsprechend behandelt werden.
Für jede USB-Tastatureinheit werden Gerätedatei (z. B. /dev/kbd0, /dev/kbd1usw.) erstellt. Wenn mindestens ein USB-Tastaturgerät verfügbar ist, kann eine Anwendung (in der Regel die LFT-oder X-Serveranwendung) jede beliebige USB-Tastaturgerätedatei öffnen.
Eine besondere Behandlung der Tastatur wird durch die Konfigurationsmethode des USB-Systemeinheitentreibers aufgrund der strengen Konfigurations-und Sortierregeln des Grafiksubsystems bereitgestellt. Wenn sowohl der USB-Host-Controller als auch der Grafikadapter verfügbar sind und keine vorhandene Tastatur vorhanden ist, stellt die USBD sicher, dass mindestens eine USB-Tastaturinstanz definiert ist. Der USB-Tastaturclienttreiber verwendet die USBD_OPEN_DEVICE_EXT ioctl -Operation, um die Einheit zu öffnen, die einen gültigen Griff generiert, auch wenn keine USB-Tastatur an das System angeschlossen ist. Der Wert EAGAIN wird von der Operation ioctl zurückgegeben, wenn keine Tastatureinheit vorhanden ist und der Clienttreiber die Einheit als getrennt behandelt. Wenn Sie eine USB-Tastatur anschließen, erfolgt ein Verbindungsrückruf an den Tastaturclient durch die USBD und das Gerät wird initialisiert, sodass Eingabeereignisse an die LFT-und X-Serveranwendungen fließen können.
Einheitenabhängige Subroutinen
Der Einheitentreiber für den USB-Adapter unterstützt nur die Subroutinen open, close, ioctlund config .
Subroutinen öffnen und schließen
Die Subroutine open wird verwendet, um einen Kanal zwischen dem Aufrufenden und dem Tastaturclienttreiber zu erstellen. Die Gerätedatei für die Tastatur unterstützt zwei solcher Kanäle. Der Aufruf der Subroutine open wird normal verarbeitet, außer dass die Parameter OFlag und Mode ignoriert werden. Die Tastatur unterstützt eine fp_open -Anforderung von einem Kernelprozess. Der Tastaturclienttreiber wird für eine geordnete Änderung der Steuerung zwischen den LFT-und den X-Server-Anwendungen gemultiplext. Der zuletzt geöffnete Tastaturkanal ist der aktive Kanal, an den die Eingabeereignisse gesendet werden. Im Kernelmodus kann jeweils nur ein Kanal geöffnet sein. Der USB-Tastaturclient unterstützt den Anschluss mehrerer USB-Tastatureinheiten. Daher können eine oder mehrere Gerätedateien definiert werden. Wenn mindestens eine verfügbare USB-Tastatureinheit vorhanden ist, kann eine Anwendung (normalerweise der LFT-oder der X-Server) eine beliebige Gerätedatei der USB-Tastatur öffnen, da der Treiber des Tastaturclients die Angabe der Nebengerätenummer ignoriert. Es können jedoch nur zwei Kanäle definiert werden, unabhängig von der Anzahl der verfügbaren USB-Tastatureinheiten.
Der Aufruf der Subroutine close wird zum Beenden eines Kanals verwendet.
Lese- und Schreibvorgänge
Der Tastaturclienttreiber unterstützt keine read -und write -Operationen. Eine Operation read oder write für die Gerätedatei des Treibers verhält sich so, als ob eine Operation read oder write für die Datei /dev/null ausgeführt wurde.
ioctl-Unterprogramm
| Operation | Beschreibung |
|---|---|
| IOCINFO | Gibt eine devinfo -Struktur zurück, die in der Headerdatei sys/devinfo.h definiert ist und die Einheit beschreibt. Das erste Feld der Struktur (devtype) wird auf den Wert DD_INPUT gesetzt; die verbleibende Struktur wird auf null gesetzt. |
| KSABFRAGE-ID | Fragt die Tastatureinheitenkennung ab. |
| KSQUERYSV | Fragt den Tastaturservicevektor ab. |
| KSREGRING (ERNEUT erstellen) | Registriert den Eingabering. |
| KSRFLUSH | Leert den Eingabering. |
| KSLED' | Setzt Tastaturanzeigen ein oder zurück. |
| KSDATENTRÄGER | Legt die Alarmlaustärke fest. |
| KSALARMGenericName | Akustisches Signal. |
| KSTRATENGenericName | Setzt die Schreibgeschwindigkeit. |
| KSTVERZÖGERUNG | Legt die typematische Verzögerung fest. |
| KSKAPGenericName | Aktiviert oder inaktiviert das Keepalive-Polling. |