Driver del dispositivo client della tastiera USB
Finalità
Supporta i dispositivi della tastiera USB (Universal Serial Bus).
Sintassi
#include <sys/usbdi.h>
Descrizione
Il client della tastiera è costituito da un backend che si interfaccia con USBD (USB system driver) e un front end che si interfaccia con le applicazioni AIX® come le applicazioni LFT (low function terminal) e server X. Il driver client della tastiera USB non ha alcuna conoscenza dell'hardware dell'adattatore USB sottostante. Il driver client invia invece le richieste di controllo alla tastiera USB tramite USBD e riceve gli eventi di input tramite USBD. Il driver del client di tastiera si identifica come driver di tastiera generico impostando il campo devid nei relativi dati predefiniti di Object Data Manager (ODM) su 030101. L'unità principale del client della tastiera è la pseudo unità usb0. Il client della tastiera non ha alcun child. Ogni periferica della tastiera collegata al sistema AIX è rappresentata come /dev/kbd0, /dev/kbd1e così via.
Il driver client della tastiera USB supporta l'attaccamento di più dispositivi della tastiera USB. Ogni periferica è enumerata in ODM ed è contrassegnata come disponibile. Il driver client tratta tutte le tastiere come un unico dispositivo logico. Le impostazioni LED (light - emitting diode) vengono inviate a tutte le tastiere e gli eventi di input da tutte le tastiere vengono inviati ad un singolo anello di input. Il tracciamento dello stato da parte del driver del client garantisce che una chiave non generi eventi consecutivi di interruzione e che i ritardi di tipo typematic e ripetere vengano gestiti adeguatamente.
Vengono creati file speciali (ad esempio, /dev/kbd0, /dev/kbd1e così via) per ciascuna periferica tastiera USB. Se c'è almeno un dispositivo di tastiera USB disponibile, un'applicazione (tipicamente l'applicazione server LFT o X) può aprire uno qualsiasi dei file speciali della tastiera USB.
Il trattamento speciale per la tastiera è fornito dal metodo di configurazione del driver del dispositivo USB a causa delle rigide regole di configurazione e ordinamento del sottosistema di grafica. Quando sia il controller host USB che l'adattatore grafico sono in uno stato disponibile e non è presente una tastiera esistente, USBD garantisce che sia definita almeno un'istanza della tastiera USB. Il driver client della tastiera USB utilizza l'operazione USBD_OPEN_DEVICE_EXT ioctl per aprire la periferica che genera una maniglia valida anche quando al sistema non è collegata alcuna tastiera USB. Il valore EAGAIN viene restituito dall'operazione ioctl se non vi è alcuna periferica tastiera e il programma di controllo client considera la periferica come scollegata. Quando si collega una tastiera USB, viene effettuata una chiamata di riconnessione al client della tastiera da parte dell'USBD e il dispositivo viene inizializzato consentendo agli eventi di input di fluire nelle applicazioni del server LFT e X.
Subroutine dipendenti dal dispositivo
Il driver unità adattatore USB supporta solo le sottoroutine open, close, ioctle config .
- sottoroutine aperte e vicine
La sottoroutine
openè utilizzata per creare un canale tra il chiamante e il programma di controllo del client della tastiera. Il file speciale della tastiera supporta due canali di questo tipo. La chiamata della sottoroutineopenviene elaborata normalmente ad eccezione del fatto che i parametri OFlag e Mode vengono ignorati. La tastiera supporta una richiestafp_openda un processo kernel. Il driver client della tastiera è multiplex per una modifica ordinata del controllo tra le applicazioni LFT e X server. Il canale di tastiera aperto più di recente è il canale attivo a cui vengono inviati gli eventi di input. Solo un canale può essere aperto nella modalità del kernel alla volta. Il client della tastiera USB supporta l'attaccamento di più dispositivi della tastiera USB. Così si possono definire uno o più file speciali. Se c'è almeno un dispositivo di tastiera USB disponibile, un'applicazione (tipicamente il LFT o il server X) può aprire qualsiasi file speciale della tastiera USB perché il driver client della tastiera ignora la specifica del numero minore. Tuttavia, solo due canali possono essere definiti indipendentemente dal numero di dispositivi della tastiera USB disponibili.La chiamata della sottoroutine
closeviene utilizzata per terminare un canale.- Operazioni di lettura e scrittura
Il driver del client della tastiera non supporta operazioni
readewrite. Un'operazionereadowritenel file speciale del programma di controllo si comporta come se un'operazionereado un'operazionewritefosse stata effettuata nel file /dev/null .
- subroutine ioctl
- Il programma di controllo unità tastiera supporta le seguenti operazioni secondarie ioctl :
Tabella 1. subroutine ioctl Operazione Descrizione IOCINFO Restituisce una struttura devinfo, definita nel file di intestazione sys/devinfo.h , che descrive la periferica. Il primo campo della struttura (devtype) viene impostato sul valoreDD_INPUT; la struttura rimanente viene impostata su zero.KSQUERYID Identificatore del dispositivo della tastiera. KSQUERYSV Query del servizio di servizio della tastiera. KSREGRING Registra anello di input. KSRFLUSH Svuotate l'anello di input. KSLED Imposta o rimette i LED della tastiera. KSVOLUME Imposta il volume di allarme. KSALARM Suona allarme. KSTRATE Imposta la velocità tipografica. KSTDELAY Imposta ritardo tipografico. KSKAP Abilita o disabilita il sondaggio keep - alive.