Con frecuencia trabajo en estaciones de emparejamiento donde hay varios teclados instalados. Puedo usar setxkbmap
con -device <ID>
para configurar el diseño de un teclado específico (usando una ID dexinput
), pero a menudo no es obvio en qué teclado estoy. Sería mejor evitar el ir y venir de probar ambos teclados, por lo que me gustaría escribir una herramienta rápida para obtener esta información setxkbmap
. Esperaría un caso de uso típico como el siguiente:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
¿Qué interfaz proporciona esta información en Linux? Idealmente, debería funcionar sin X, pero eso no es un requisito (no parece haber muchas herramientas que lo admitan sin X).
Hallazgos hasta el momento:
- Linux debe saber en qué teclado estoy escribiendo para admitir diferentes diseños para varios teclados simultáneamente.
xinput
→ list.c →list_xi2
→XIQueryDevice
proporciona ID de dispositivo utilizables porsetxkbmap
.showkey
yxev
no imprima ID de teclado.xinput list-props $ID
muestra dónde se envían los eventos del teclado . Sin embargo, usando el código de otra respuesta parece que este dispositivo no imprime nada para identificar el teclado.Una solución casi posible es ejecutar
xinput --test <ID> &
cada ID de teclado y ver cuál devuelve algo primero. El problema con eso es descubrir qué "teclados" son en realidad teclados:$ xinput | grep keyboard ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ WebCam SC-13HDL10931N id=10 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
less -f /dev/input/eventX
presionas una tecla en el teclado correspondiente, deberías ver aparecer "basura", por lo que tus pulsaciones de teclas se dirigen a un archivo de desarrollo y no a los demás.