我有两个键盘:一个旧的 ps/2 键盘和一个 usb 键盘。我希望 usb 键盘采用美国布局(或者最好让 usb 键盘遵循 gnome 中选择的布局),而 ps/2 键盘采用自定义布局(快捷键和其他东西 :D)。我尝试在运行时使用setxkbmap -device 8 -layout ru
(俄语布局进行测试)在每个键盘上设置单独的布局,但这会将所有键盘上的布局都设置为俄语。
philippe@tnw:~$ xinput -list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ MOSART Semi. Wireless Keyboard & Mouse id=9 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=10 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=11 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ MOSART Semi. Wireless Keyboard & Mouse id=8 [slave keyboard (3)]
↳ Eee PC WMI hotkeys id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
编辑: 找到了答案的一部分:当您为设备指定布局时,您必须在所有硬件上包含所需的所有布局。因此,如果我想在设备 2 上使用俄语,在设备 3 上使用美国英语,那么我需要在为设备 2 指定布局时使用“ru,us”,为设备 3 指定 us,ru。像这样
setxkbmap -device 2 -layout ru,us
setxkbmap -device 3 -layout us,ru
我仍然需要在启动时获取它并进行自定义布局。如果能提供帮助我将不胜感激。
答案1
你需要使用
xinput --create-master SecondKeyboard
创建单独的主键盘,然后将第二个键盘重新连接到新的主键盘:
xinput --reattach "键盘 ID" "主 ID"
您使用来自
xinput--列表
这样,键盘就分开了,可以单独处理。例如,您有两个焦点,可以同时用两个键盘在两个应用程序中编写代码,并通过在 setxkbmap 等中指定不同的主 ID 来设置不同的键映射。