Tengo un antiguo teclado IBM 122 modelo clave M que estoy adaptando para usar en una computadora moderna. Estoy usando un Teensy 2.0 para codificar y manejar el lado USB de las cosas. Tomé prestado el firmware del proyecto de teclado Humble Hacker ( https://github.com/humblehacker/keyboard ) y agregué las teclas adicionales en la configuración de compilación. Hasta aquí todo bien.
Todas las teclas "normales" funcionan, pero el núcleo parece estar soltando las teclas adicionales ( F13- F24, etc.).
La ejecución /lib/udev/keymap -i input/event0
muestra los códigos de escaneo de todas las teclas normales, pero nada para las teclas adicionales.
Ejecutar wireshark
para capturar paquetes en el puerto USB muestra que el teclado ESTÁ enviando los códigos de escaneo, pero parece que el núcleo los está soltando en principio.
Siento que esto es algo en los controladores del kernel que simplemente no entrega códigos de escaneo que no espera.
Pensaría que habría algún tipo de mapa de claves "maestro" en algún .h
archivo en el origen del kernel en algún lugar, pero hasta ahora, no he tenido éxito en mis esfuerzos por encontrarlo.
Vale la pena enfatizar que no estoy preguntando sobre el mapeo de las teclas adicionales en X, como tantas otras antes que yo. Este es un problema de bajo nivel, aparentemente relacionado con el núcleo. Suponga por el momento que no usaré X en absoluto. Lo que necesito es que aparezcan los códigos de escaneo cuando corro /lib/udev/keymap -i
, puedo hacer el resto desde allí.
fuente
evtest
en lugar de/lib/udev/keymap -i
, ¡no sé si eso va a salir nada diferente.Respuestas:
El núcleo ve los códigos de escaneo extraños y los suelta. Intentaría obtener esos valores de códigos de escaneo y luego actualizar el índice de la base de datos de hardware. Así que en breve el plan es el siguiente:
obtener los códigos de la salida dmesg: dmesg debería generar algo como esto cuando se presiona el código de tecla desconocido:
a0
siendo el valor del código.crear un archivo de asignación de códigos de teclas personalizado. Los ejemplos y la ayuda están en el archivo predeterminado
(
/usr/lib/udev/hwdb.d/60-keyboard.hwdb
para Arch, puede ser diferente en otras distribuciones).Actualice y active la base de datos de hardware ejecutando los comandos:
donde
eventXX
corresponde a su teclado (puede obtenerlo ejecutandoevtest
). También puede reiniciar en lugar de disparar.Busque en la wiki de Arch y en el archivo de asignación de códigos de teclas predeterminado para obtener una descripción más detallada (o en su documentación de distribución si no es Arch).
Este es el método confiable y simple, hace que el mapeo en el nivel del kernel funcione, sea cual sea el servidor de visualización, DE, etc.
fuente
Este sitio web ofrece conversiones de teclado personalizadas http://straypoetry.com/ibm-model-m-keyboard/
Según la información de este sitio web: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html
fuente