我经常在配对站中安装多个键盘。我可以使用setxkbmap
with -device <ID>
来设置特定键盘的布局(使用中的IDxinput
),但是通常我不清楚使用的是哪个键盘。最好避免反复尝试两个键盘,所以我想编写一个快速工具来获取有关此信息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
显示键盘事件的发送位置。但是,使用其他答案中的代码,似乎该设备无法打印任何内容来识别键盘。一种几乎可行的解决方案是
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
按下相应键盘上的一个键,您应该会看到“垃圾”出现,因此您的按键确实指向了一个开发文件,而不是其他文件。