Controlador de dispositivo de cliente de teclado USB
Finalidad
Da soporte a los dispositivos de teclado USB (Universal Serial Bus).
Sintaxis
#include <sys/usbdi.h>
Descripción
El cliente de teclado consta de un programa de fondo que interactúa con el controlador del sistema USB (USBD) y un programa frontal que interactúa con las aplicaciones AIX® como, por ejemplo, el terminal de baja función (LFT) y las aplicaciones de servidor X. El controlador del cliente del teclado USB no tiene conocimiento del hardware del adaptador USB subyacente. En su lugar, el controlador de cliente envía solicitudes de control al teclado USB a través de USBD y recibe sucesos de entrada a través de USBD. El controlador de cliente de teclado se identifica a sí mismo como un controlador de teclado genérico estableciendo el campo devid en sus datos predefinidos de Object Data Manager (ODM) en 030101. El dispositivo padre del cliente de teclado es el pseudo dispositivo, usb0. El cliente de teclado no tiene ningún hijo. Cada dispositivo de teclado que está conectado al sistema AIX se representa como /dev/kbd0, /dev/kbd1, etc.
El controlador de cliente de teclado USB da soporte a la conexión de varios dispositivos de teclado USB. Cada dispositivo se enumera en ODM y se marca como disponible. El controlador de cliente trata todos los teclados como un único dispositivo lógico. Los valores de diodo emisor de luz (LED) se envían a todos los teclados y los sucesos de entrada de todos los teclados se envían a un único anillo de entrada. El seguimiento de estado por parte del controlador de cliente garantiza que una clave no genere sucesos de interrupción consecutivos y que el retardo y la repetición de tipo gráfico se manejen adecuadamente.
Se crean archivos especiales (por ejemplo, /dev/kbd0, /dev/kbd1, etc.) para cada dispositivo de teclado USB. Si hay al menos un dispositivo de teclado USB disponible, una aplicación (normalmente la aplicación de servidor LFT o X) puede abrir cualquiera de los archivos especiales del teclado USB.
El método de configuración del controlador de dispositivo del sistema USB proporciona un tratamiento especial para el teclado debido a las reglas de configuración y ordenación estrictas del subsistema de gráficos. Cuando tanto el controlador de host USB como el adaptador de gráficos están en un estado disponible y no hay ningún teclado existente, el USBD garantiza que se defina al menos una instancia de teclado USB. El controlador de cliente de teclado USB utiliza la operación USBD_OPEN_DEVICE_EXT ioctl para abrir el dispositivo que genera un asa válida incluso cuando no hay ningún teclado USB conectado al sistema. La operación ioctl devuelve el valor EAGAIN si no hay ningún dispositivo de teclado y el controlador de cliente trata el dispositivo como desconectado. Cuando se conecta un teclado USB, el USBD realiza una llamada de retorno de reconexión al cliente de teclado y el dispositivo se inicializa permitiendo que los sucesos de entrada fluyan a las aplicaciones de servidor LFT y X.
Subrutinas dependientes del dispositivo
El controlador de dispositivo de adaptador USB sólo da soporte a las subrutinas open, close, ioctly config .
abrir y cerrar subrutinas
La subrutina open se utiliza para crear un canal entre el llamante y el controlador de cliente de teclado. El archivo especial del teclado da soporte a dos canales de este tipo. La llamada de subrutina open se procesa normalmente, excepto que los parámetros OFlag y Mode se ignoran. El teclado da soporte a una solicitud fp_open de un proceso de kernel. El controlador de cliente de teclado se multiplexa para un cambio ordenado de control entre las aplicaciones de servidor LFT y X. El canal de teclado abierto más recientemente es el canal activo al que se envían los sucesos de entrada. Sólo un canal puede estar abierto en el modo kernel a la vez. El cliente de teclado USB da soporte a la conexión de varios dispositivos de teclado USB. Por lo tanto, se pueden definir uno o más archivos especiales. Si hay al menos un dispositivo de teclado USB disponible, una aplicación (normalmente la LFT o el servidor X) puede abrir cualquier archivo especial del teclado USB porque el controlador del cliente del teclado ignora la especificación de número menor. Sin embargo, sólo se pueden definir dos canales independientemente del número de dispositivos de teclado USB disponibles.
La llamada de subrutina close se utiliza para finalizar un canal.
Operaciones de lectura y escritura
El controlador de cliente de teclado no da soporte a las operaciones read y write . Una operación read o write en el archivo especial del controlador se comporta como si se hubiera realizado una operación read o una operación write en el archivo /dev/null .
subrutina ioctl
| Operación | Descripción |
|---|---|
| IOCINFO | Devuelve una estructura devinfo , que se define en el archivo de cabecera sys/devinfo.h , que describe el dispositivo. El primer campo de la estructura (devtype) se establece en el valor DD_INPUT ; el resto de la estructura se establece en cero. |
| KSQUERIID | Consulta el identificador de dispositivo del teclado. |
| KSQUERYSV | Consulta el vector de servicio del teclado. |
| KSREGRING | Registra el anillo de entrada. |
| KSRFLUSH | Vacila el anillo de entrada. |
| KSLED | Establece o restablece los LED de teclado. |
| KSVOLUME | Establece el volumen de alarma. |
| KSALARM | Suena alarma. |
| KSTRATE | Establece la tasa de tipificación. |
| KSTDELAY | Establece el retardo tipográfico. |
| KSKAP | Habilita o inhabilita el sondeo de mantener activo. |