
Tengo la configuración actual:
- Un teclado PS2
- Un teclado USB
Entonces uso esto:
xinput --create-master SecondKeyboard
xinput --reattach "Keyboard Id" "Master Id"
para separarlos.
Pensé que podía crear un diseño personalizado y listo, un teclado para escribir y otro para atajos, luego descubrí que xkb no permite crear diseños que hagan clic en varias teclas (como presionar capslocky hacer ctrl+ alt+ f4).
Entonces mi idea fue ejecutar xbindkeys solo en uno de los teclados, ya que tienen diferentes identificaciones. ¿Puedo hacer que esto suceda?
Respuesta1
Resumen rápido de los distintos niveles involucrados:
Su teclado genera códigos de escaneo. Estos son asignados por las capas de entrada del kernel a eventos de código clave en /dev/input/eventX
. El controlador X evdev
toma estos eventos y los traduce a símbolos de claves. Luego, la extensión XInput hace que todos los eventos de los esclavos del teclado central virtual estén disponibles como eventos X normales, mientras que los otros eventos solo están disponibles como eventos XInput.
Entonces tienes las siguientes opciones:
1) Configure un código de escaneo personalizado para asignar códigos clave. Estas asignaciones son por dispositivo, por lo que esto es realmente posible, pero se hace a través de un IOCTL, y no parece haber herramientas listas para ello aparte dehwdben udev
. Luego puede utilizar los nuevos keycides en xkb
. Ambos teclados se mantienen como teclados centrales.
2) Amplíe xbindkeys
para comprender los eventos de XInput, de modo que pueda usarlo para vincular eventos desde un teclado no central. Esto requerirá programación, pero debería ser comparativamente sencillo. En este caso, desacople un teclado del teclado principal como ya lo hizo.