私は多くの場合、複数のキーボードが取り付けられたペアリングステーションで作業します。setxkbmap
withを使用して-device <ID>
特定のキーボードのレイアウトを設定できます。身分証明書:xinput
)、しかし一般的に私が使用しているキーボードでは明確ではありません。 2つのキーボードの間を行き来しないでください。したがって、このためのクイックツールを作成したかったのです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つは、各キーボードIDに対して実行し、
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)]
ベストアンサー1
デバイスの無効化
どのキーボードがどのキーボードであるかを識別するアイデアは次のとおりです。次のコマンドを使用できます。x入力デバイスを有効または無効にします。
はい
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=12 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=13 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=9 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=10 [slave pointer (2)]
⎣ 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)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=14 [slave keyboard (3)]
上記の出力は私のThinkpadノートブックのさまざまなデバイスを示しています。キーボードは1つだけ接続されています。このキーボードは次のとおりです。
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
次に、このデバイスで利用可能なプロパティを見てください。
$ xinput list-props "AT Translated Set 2 keyboard"
Device 'AT Translated Set 2 keyboard':
Device Enabled (124): 1
Coordinate Transformation Matrix (126): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.
上記で有効になっていることがわかりますので、無効にしてみましょう。
$ xinput set-prop "AT Translated Set 2 keyboard" "Device Enabled" 0
有効にするには:
$ xinput set-prop "AT Translated Set 2 keyboard" "Device Enabled" 1
このアイデア?
このコマンドを使用すると、キーボードのいずれかを有効または無効にして、どのキーボードを使用しているかを確認できます。