我的计算机上有法语和美国键盘。我正在使用很棒的 wm 并设置了所有内容,以便我可以轻松地在键盘布局之间切换。但我还是得自己做。
理论上,计算机应该能够理解输入事件来自哪个键盘并使用与键盘相关的布局。我查过但没有找到好的答案。可以这样做吗?
我想我可以编写一段简短的代码来分析键盘事件并进行切换,但是:
- 它会与事件处理程序并行运行,因此可能会出现并发问题(例如这);
- 这看起来是一种肮脏的做法,我更喜欢干净的解决方案。
感谢您的帮助
答案1
您可以通过单独配置键盘来做到这一点。例如,我在笔记本电脑键盘上使用美国英语布局,并且有一个带有德语布局的 Sun Type 6 USB 键盘,并且我的 中具有以下内容/etc/X11/xorg.conf.d/10-evdev.conf
:
# Default configuration for all keyboards not handled explicitly
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "XkbRules" "evdev"
Option "XkbModel" "pc105"
Option "XkbLayout" "us(altgr-intl),de,ru"
Option "XkbOptions" "lv3:menu_switch,caps:hyper,compose:ralt,grp:rctrl_rshift_toggle,terminate:ctrl_alt_bksp"
EndSection
# Match the external keyboard by USB ID
Section "InputClass"
Identifier "Sun Type 6"
MatchIsKeyboard "on"
MatchUSBID "0430:0005"
Driver "evdev"
Option "XkbRules" "evdev"
Option "XkbModel" "sun(type6)"
Option "XkbLayout" "de"
Option "XkbOptions" "caps:hyper,compose:menu,terminalte:ctrl_alt_bksp"
EndSection