複数のキーボードがインストールされているペアリングステーションで頻繁に作業しています。setxkbmap
with -device <ID>
を使用して特定のキーボードのレイアウトを設定することができます(からxinput
のIDを使用)が、多くの場合、どのキーボードを使用しているかは明らかではありません。両方のキーボードを試してみることの前後を避けた方がよいので、この情報を取得するための簡単なツールを作成したいと思いsetxkbmap
ます。私は次のような典型的なユースケースを期待しています:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Linuxでこの情報を提供するインターフェースはどれですか?理想的にはXなしでも動作するはずですが、それは要件ではありません(Xなしでこれをサポートするツールは多くないようです)。
これまでの調査結果:
- Linux は、複数のキーボードの異なるレイアウトを同時にサポートするために、入力しているキーボードを知る必要があります。
xinput
→list.c→list_xi2
→は、XIQueryDevice
デバイスIDにより使用可能提供しますsetxkbmap
。showkey
そしてxev
、キーボードIDを印刷しません。xinput list-props $ID
キーボードイベントの送信先を示します。ただし、別の回答のコードを使用すると、このデバイスはキーボードを識別するために何も印刷しないようです。ほとんど可能な解決策の1つは、
xinput --test <ID> &
キーボードIDごとに実行し、最初に返されるものを確認することです。それに伴う問題は、実際にキーボードである「キーボード」を特定することです。$ 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
、対応するキーボードのキーを打つ、あなたが現れて「ゴミ」を参照してください必要がありますので、あなたのキー押下は確かに1つのdevのファイルではなく他の人に向けられています。