Ich arbeite häufig an Pairing-Stationen, auf denen mehrere Tastaturen installiert sind. Ich kann setxkbmap
mit -device <ID>
das Layout für eine bestimmte Tastatur festlegen (unter Verwendung einer ID vonxinput
), aber oft ist nicht klar, auf welcher Tastatur ich mich befinde. Es ist besser, das Hin und Her zu vermeiden, beide Tastaturen auszuprobieren. Daher möchte ich ein schnelles Tool schreiben, um diese Informationen zu erhalten setxkbmap
. Ich würde einen typischen Anwendungsfall wie den folgenden erwarten:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Welche Schnittstelle bietet diese Informationen unter Linux? Idealerweise sollte es ohne X funktionieren, aber das ist keine Voraussetzung (es scheint nicht viele Tools zu geben, die dies ohne X unterstützen).
Bisherige Ergebnisse:
- Linux muss wissen, auf welcher Tastatur ich tippe, um verschiedene Layouts für mehrere Tastaturen gleichzeitig zu unterstützen.
xinput
→ list.c →list_xi2
→XIQueryDevice
liefert Geräte-IDs, die von verwendet werden könnensetxkbmap
.showkey
undxev
drucken Sie keine Tastatur-IDs.xinput list-props $ID
Zeigt an, wohin Tastaturereignisse gesendet werden . Verwendung jedoch Code aus einer anderen Antwort scheint es , dieses Gerät nichts druckt die Tastatur zu identifizieren.Eine fast mögliche Lösung besteht darin,
xinput --test <ID> &
für jede Tastatur-ID zu prüfen, welche zuerst etwas zurückgibt. Das Problem dabei ist, herauszufinden, welche "Tastaturen" tatsächlich Tastaturen sind:$ 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
eine Taste auf der entsprechenden Tastatur drücken, sollte "Garbage" angezeigt werden, sodass Ihre Tastendrücke in der Tat in eine Dev-Datei und nicht in die anderen geleitet werden.