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 --scancodes
no da los códigos de escaneo que udev espera (los valores son diferentes); la input-kbd
utilidad proporciona los códigos de escaneo correctos.
evtest
utilidad 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 xxx
está el código de escaneo. Pero el controlador de mi teclado tiene errores, y no obtengo esta MSC_SCAN
lí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