一台计算机上的两个键盘。当我用AI书写时,想要美国键盘布局,当我用BI书写时,想要瑞典键盘。可能?


47

我有一台笔记本电脑,可以使用外接键盘。当我使用外部键盘键入内容时,我想使用美式键盘布局,因为这是我拥有的外部键盘类型。另一方面,当我使用集成键盘键入文字时,我想使用瑞典语布局。

这可能吗?我将如何去做呢?

我在这里问是因为我认为我们将在这里找到大多数Linux专业知识。

Answers:


41

首先,您必须找到要更改的键盘设备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

嗨,我做到了,它对除箭头键和其他方向键(根本不再起作用)以外的所有功能都非常有用。可能是键盘是符合人体工程学的具有时髦按键映射的键盘之一...知道如何使它们重新工作吗?
btelles 2011年

8
那么,在启动时设置此配置而不是手动调用setxkbmap的最佳方法是什么?
理查德·特纳2013年

9

我可以肯定地说,您想要做的确实是可能的。我首先达到了指定的方案

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类似的命令。


9

尽管这个问题有点陈旧,但我认为我会分享自己的解决方案,因为其他答案都没有涉及如何在启动时进行此工作。

我的情况: 我有一个Happy Hacking键盘,可通过USB插入键盘,键盘上有可移动的键(控制大写锁定的位置等)。我大多数时候都使用这种键盘,但有时我想使用标准的笔记本电脑键盘或其他USB键盘。对于这些键盘,我创建了自定义键盘布局。

诀窍在于,自定义键盘布局不应应用于Happy Hacking键盘。

解决方案: 我创建了一个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

第一部分从根本上说,对于任何标准键盘,请使用带有custom变体的us布局。第二部分说到快乐的黑客键盘,使用带有基本变体的us布局。

您可以根据一系列参数来匹配设备:xorg doc


您的最新答案可能值得您发表评论。您在两者中都将标识符标识为“ Happy Hacking Kbd” ...我认为这可能是一个错误,第一个InputClass标识符应该是“通用键盘”
Daniel

1
@Daniel标识符实际上是不同的,“ Hackily Hacked Keyboard”和“ Happy Hacking Keyboard”,但仅略有不同:)
zanegray

感谢您的正确!...我怪我的
Daniel Daniel

...但是(对于键盘来说,这非常有用,也可以循环使用不同的多种布局!!像我们一样,一个键盘上的ru,ua和第二个键盘上的de,cz,ua)对我来说有所改变,以某种方式杀死了我的鼠标中键我的外部USB鼠标。必须寻找干扰是什么...
Golar Ramblar

我很想这个解决方案对我有用,但它不起作用-也许是因为我找不到正确的供应商ID?命令“ lsusb -v | grep -e idVendor”给了我“ 0x09da A4Tech Co.,Ltd.” 因此,我还尝试了各种选项(不使用十六进制代码,下划线而不是空格等)。然后,我尝试了通过“ xinput列表”和“ udevadm信息”(A4TECH)获得的供应商ID。我什至将数字30更改为50也因为我有一个文件“ /usr/share/X11/xorg.conf.d/40-libinput.conf”,其中包括全局键盘配置。但是我什么也没得到。有什么想法吗?(Ubuntu 18.04)
萨迪

5

根据setxkbmap的-device参数判断,这可能是可行的:

       -设备设备
               指定输入设备的数字设备标识为
               更新了新的键盘布局。如果未指定,
               X服务器的核心键盘设备已更新。

当然,我现在没有第二个键盘可以尝试。

-Dvorak用户


mph -device 0都可以切换,-device 2(根据Arkenklo的回答应该是板载键盘)不会切换任何东西,至少在我的笔记本电脑和USB键盘上不会。
Tommy McGuire

1

我认为您无法完全按照自己的方式进行操作。我知道两种选择:

1)您可以通过简单的鼠标单击/击键来切换。

使用Ubuntu / GNOME:

鼠标点击

在Ubuntu / Gnome中,如果已设置输入布局,请在面板上的空白处单击鼠标右键,然后单击“添加到面板”。选择“键盘指示器”以将其添加到面板中。那应该输入一小段文字来指示键盘布局,您可以单击此按钮进行切换。

键盘快捷键

系统->首选项->键盘->布局->布局选项

有一个选项“可以更改布局的键”。您可以将其设置为Alt + Shift,这不会干扰任何普通的键盘快捷键。

我想也有一种KDE的方法。

2)另一种选择是http://en.wikipedia.org/wiki/Xneur,但是我不确定这是否适用于瑞典语,并且对于与英语具有相似结构的语言可能也不可行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.