Estoy tratando de encontrar una manera de reasignar las teclas del teclado con fuerza.
Intenté usar xmodmap y setxkbmap, pero no funcionan para una aplicación específica. Dichos comandos funcionan para otras ventanas / aplicaciones normales en X tho.
¿Creo que la aplicación puede estar leyendo los datos sin procesar del teclado e ignorando la entrada X?
Entonces, ¿cómo reasignar las teclas sin usar xmodmap y setxkbmap? si alguna vez se puede hacer usando algún software.
También probé xkeycaps, xkbcomp, pero no probé loadkeys, ya que se ejecuta en X.
Encontré aquí que podía intentarlo setkeycodes, "porque después de asignar el código de clave del núcleo, el botón debería funcionar en xorg" , pero también descubrí que "no se pueden usar 'setkeycodes' en teclados USB" , ese es mi caso (estoy interesado en el caso alguien lo hace funcionar en ps2 ya que creo que podría usar un adaptador).
Esto parecía prometedor "Asignar códigos de escaneo a códigos de teclas" , pero después de algunas pruebas nada cambió, aquí están:
Encontré el código de clave "36" (tecla "j") en vt1 con el código de showkey
escaneo "7e" (teclado ".") En vt1 conshowkey --scancodes
$cat >/etc/udev/hwdb.d/90-custom-keyboard.hwdb
keyboard:usb:v*p*
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_7e=36
$udevadm hwdb --update #updates file: /lib/udev/hwdb.bin
$udevadm trigger #should apply the changes but nothing happened
$cat /lib/udev/hwdb.bin |egrep "KEYBOARD_KEY_7e.{10}" -ao
KEYBOARD_KEY_7eleftmeta
$#that cat on hwdb.bin did not change after the commands..
Obs .: tampoco funcionó con: KEYBOARD_KEY_7e=j
Algunas formas más alternativas (por @ vinc17) para encontrar las claves:
evtest /dev/input/by-id/... o
input-kbd 3(coloque el índice de identificación encontrado en ls -l /dev/input/by-id/*ex. Event3)
PD .: * Si está interesado en probarse a sí mismo, el hilo relacionado para la aplicación es este: http://forums.thedarkmod.com/topic/14266-keyboard-issue-in-new-version-108/ Los problemas I tienen son las mismas: algunas claves (KP_Decimal, DownArrow, UpArrow, RightArrow) se ignoran y se consideran todas con el mismo valor "0x00"
showkey --scancodesno da los códigos de escaneo que udev espera (los valores son diferentes); la input-kbdutilidad proporciona los códigos de escaneo correctos.
evtestutilidad también debe proporcionarle los códigos de escaneo correctos: después de escribir una clave, debe obtener 2 líneas y la primera debe terminar con algo del formulario code 4 (MSC_SCAN), value xxx, donde xxxestá el código de escaneo. Pero el controlador de mi teclado tiene errores, y no obtengo esta MSC_SCANlínea para algunas teclas que quería reasignar. Es por eso que utilicé input-kbd, que enumera todos los códigos de escaneo para el dispositivo seleccionado.
/etc/udev/hwdb.bin, no/lib/udev/hwdb.bin. Pero aunque este archivo se actualiza correctamente, esto tampoco funciona para mí, incluso después de un reinicio. Quizás algo falta en la documentación. Acerca de esto: bugs.freedesktop.org/show_bug.cgi?id=82311