Lavoro frequentemente su stazioni di associazione in cui sono installate più tastiere. Posso usare setxkbmap
con -device <ID>
per impostare il layout di una tastiera specifica (usando un ID daxinput
), ma spesso non è ovvio in quale tastiera mi trovo. Sarebbe meglio evitare i tentativi di provare entrambe le tastiere, quindi mi piacerebbe scrivere uno strumento rapido per ottenere queste informazioni setxkbmap
. Mi aspetterei un caso d'uso tipico come il seguente:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Quale interfaccia fornisce queste informazioni su Linux? Idealmente dovrebbe funzionare senza X, ma questo non è un requisito (non sembrano esserci molti strumenti che supportano questo senza X).
Risultati finora:
- Linux deve sapere su quale tastiera sto digitando per supportare diversi layout contemporaneamente per più tastiere.
xinput
→ list.c →list_xi2
→XIQueryDevice
fornisce gli ID dispositivo utilizzabili dasetxkbmap
.showkey
exev
non stampare gli ID tastiera.xinput list-props $ID
mostra dove vengono inviati gli eventi della tastiera . Tuttavia, usando il codice di un'altra risposta sembra che questo dispositivo non stia stampando nulla per identificare la tastiera.Una soluzione quasi possibile è eseguire
xinput --test <ID> &
per ogni ID tastiera e vedere quale restituisce prima qualcosa. Il problema è quello di capire quali "tastiere" sono in realtà tastiere:$ 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
e premi un tasto sulla tastiera corrispondente, dovresti vedere "spazzatura" che appare, quindi i tuoi tasti premuti sono effettivamente diretti in un file dev e non negli altri.