Versión corta de lo que quiero lograr: Tengo un pedal (INFINITY-IN-USB-1, si tiene algún interés) que se implementa como un dispositivo HID genérico, y me gustaría que se comportara como control y teclas alt en Linux. Estoy buscando algo en el nivel de X, es decir, no solo programas individuales.Cómo capturar la entrada HID sin procesar en Linux?
Versión más larga: Tengo esta configuración funcionando en Windows XP llamando a dll RegisterRawInputDevices y GetRawInputData y escuchando la entrada en una ventana oculta. Todo se logra con un script bastante sencillo Autohotkey (puede publicar aquí si alguien está interesado). El punto es que no hay necesidad de ningún controlador adicional, etc .; solo se necesitan los dll nativos de Windows.
Quiero que esta configuración funcione en Linux (más específicamente Gnome en Ubuntu, pero de vez en cuando uso otro gestor de distribución/ventanas, por lo que la solución en el nivel de X es apreciada). Este pedal no se registra como teclado o joystick, sino como dispositivo HID con UsagePage 12, Uso 3. Noté que el último Ubuntu puede detectar y usar las teclas favoritas en el teclado natural de Microsoft, que también se registra como dispositivo HID. *. Utilizo esas teclas en Windows utilizando el mismo método que el que uso el pedal (es decir, sin el software incluido). Así que supongo que este pedal también puede funcionar en Linux, pero la pregunta es ¿cómo?
[Soy nuevo en la materia de nivel inferior en Linux, así que por favor sea generoso con enlaces a la introducción o tutorial siempre que sea aplicable.]
* Para aquellos que no lo sepan, los registros de teclado Microsoft Natural como un teclado regular y un dispositivo HID genérico. Sin alguna aplicación (como la aplicación incluida) que sepa cómo interpretar la entrada HID, las teclas normales funcionarán, pero las teclas favoritas y las teclas de funciones especiales son inútiles.
Para aclarar, Linux no está viendo las prensas de pedal como entrada. Reconoce el dispositivo USB, pero xev no da salida para las prensas de pedal. He visto informes de personas que utilizan el pedal con éxito con WINE para el software de transcripción, pero eso debe funcionar en una forma de Windows y no da lo que quiero (lo que hace que el pedal parezca un teclado para todas las aplicaciones nativas de Linux). Me pregunto si se necesita algún controlador de bajo nivel de teclado Linux ?
Aquí hay más información: Si expido el presente en el terminal
cat /dev/usb/hiddev0
(dev/usb/hiddev0
es mi pedal), consigo los códigos de primas correspondientes a mis prensas de pedal. Eso es un comienzo. Sé lo que significa ese código en bruto: en binario, 0001, 0010, 0100 corresponde a cada pedal, respectivamente, y la combinación de prensas de pedal envía una combinación de esos números binarios, y liberaciones de entrada de pedal de cualquier pedal que se esté presionando (si todo el pedal está arriba, se envía 0000).
¿Cómo consigo que X escuche dev/usb/hiddev0
y traduzca los códigos brutos a un código clave especial tal que pueda mapearlos con xmodmap o algo así?
¿Puedes elaborar un poco más? ¿Cómo escucha uno/dev/usb/hiddev0 programáticamente (el artículo que enlazó solo habla de uinput)? El programa resultante (que escucha en hiddev y envía eventos de teclado/mouse a través de uinput) tendría que ejecutarse como daemon, supongo? – polyglot
Sí, supongo por su pregunta que ya sabe cómo leer hiddev0. Probablemente estarás escribiendo un daemon. Comience por escribir un programa que lea continuamente hiddev0 e imprima impresiones. Luego puede modificarlo para emitir nuevos eventos a través de uinput. Esto básicamente reinyectará estos eventos nuevamente en el kernel, pero como eventos de teclado o mouse (de su elección). No serán necesarios cambios a X. –
Ese parece ser un artículo muy popular sobre uinput. Vinculado a de toda la web. Por desgracia, ya no está allí y Google solo encontró una copia modificada de PDF-> texto convertido. ¿Alguien tiene el PDF original en un lugar donde se puede compartir? –