我有一台笔记本电脑,我使用外接键盘。当我使用外接键盘打字时,我想使用美式键盘布局,因为我有这种类型的外接键盘。另一方面,当我使用集成键盘打字时,我想使用瑞典式布局。
这可能吗?我该怎么做呢?
我在这里提问是因为我认为我们可以在这里找到大多数 Linux 专业知识。
答案1
首先,您必须找到要更改的键盘的设备 ID:
$ xinput -list | grep -i key
⎣ 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)]
↳ LITEON Technology USB Keyboard id=9 [slave keyboard (3)]
↳ LITEON Technology USB Keyboard id=10 [slave keyboard (3)]
然后使用 setxkbmap 更改布局:
$ setxkbmap -device 9 dvorak
setxkbmap 的某些版本需要“-layout”参数:
$ setxkbmap -device 9 -layout dvorak
答案2
虽然这个问题有点老了,但我还是想分享我的解决方案,因为没有其他答案解决如何在启动时完成这项工作。
我的情况: 我有一个 Happy Hacking 键盘,通过 USB 插入,其按键可以移动(控制大写锁定的位置等)。我大部分时间都使用它,但有时我想使用标准笔记本电脑键盘或其他 USB 键盘。对于这些键盘,我创建了一个自定义键盘布局。
诀窍在于,自定义键盘布局不应应用于 Happy Hacking Keyboard。
解决方案: 我创建了一个这样的 Xorg 配置文件:
$ cat /etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass"
Identifier "Happily Hacked Keyboard"
MatchDevicePath "/dev/input/event*"
MatchIsKeyboard "on"
Driver "evdev"
Option "XkbLayout" "us"
Option "XkbVariant" "hhk"
EndSection
Section "InputClass"
Identifier "Happy Hacking Keyboard"
MatchIsKeyboard "on"
MatchVendor "Topre_Corporation"
Driver "evdev"
Option "XkbLayout" "us"
Option "XkbVariant" "basic"
EndSection
第一部分基本上说的是,对于任何标准键盘,都应将美国布局与自定义变体结合使用。第二部分说的是,对于 Happy Hacking 键盘,应将美国布局与基本变体结合使用。
您可以根据一系列参数匹配设备:xorg 文档
答案3
我可以肯定地说,你想做的事确实是可能的。我首先通过以下方式实现了指定的场景
sudo cat /dev/input/event(0,1,2..)
在每个键盘上打字时,我都会检查键盘是否被识别为单独的设备。然后,我简单地尝试了一下,尝试了
setxkbmap -device (1-x) us
。
我发现setxkbmap -device 1 us
配置了两个(所有)键盘,而setxkbmap -device 6 us
只影响了辅助键盘。相关因素可能是它们都是通过 PS/2 连接的。
当然,这不能保证对您有用,甚至不能归类为正确答案,但它证实了这是完全可能的。我不知道各个键盘是根据哪种方案命名的/dev/input
,但我确信可以在 udev 中指定名称,从而可以放入适当的setxkbmap
命令/etc/rc.local
或类似命令。
答案4
我认为您无法完全按照自己想要的方式做到这一点。我知道有两种选择:
1) 您可以通过简单的鼠标单击/按键进行切换。
使用 Ubuntu/GNOME:
鼠标单击
在 Ubuntu / Gnome 中,只要您已设置输入布局,请转到面板上的空白处,右键单击,然后单击“添加到面板”。选择“键盘指示器”将其添加到面板。这将输入一小段文本,指示您的键盘布局,您可以单击它进行切换。
键盘快捷键
系统 -> 偏好设置 -> 键盘 -> 布局 -> 布局选项
那里有一个选项“更改布局的键”。您可以将其设置为 Alt+Shift,这不会干扰任何正常的键盘快捷键。
我推测 KDE 也有办法做到这一点。
2)另一种选择是http://en.wikipedia.org/wiki/Xneur,但我不确定这是否适用于瑞典语,而且对于具有与英语相似结构的语言来说可能也不可能。