当我在 MSI 笔记本电脑 GS75 Stealth 9SF 的内置键盘上打字时,似乎backslash
键 ( \|
) 和Right alt
键的映射被交换了。
无论我选择哪种键盘布局或语言,此问题仍然存在。
以下是xev
我按下右 Alt 键时的输出:
keycode 94 (keysym 0x5c, backslash)
XKeysymToKeycode returns keycode: 51
XLookupString gives 1 bytes: (5c) "\"
这是我按反斜杠键的输出:
keycode 108 (keysym 0xfe03, ISO_Level3_Shift)
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
当我使用外部 USB 键盘时,一切都按预期正常工作,所以看起来 SteelSeries 键盘制造商搞乱了键控代码?我一开始也是这么想的,但后来我意识到它在 Windows 上运行正常。
这是键盘布局的图片LaptopMag 的评论:
(来源:购买网站)
它是空格键右侧的这两个键。
答案1
在我的 MSI 笔记本电脑上,BIOS/UEFI 设置中的“高级”选项卡下有一个“反斜杠/alt 键交换”选项。您应该将其设置为“禁用”。
答案2
我已经在笔记本电脑上尝试使用右 Alt 键,对我来说这也是 108 键码。
我从你的输出中了解到,你的右 Alt 键(键码为 108)有修饰符,ISO_Level3_Shift
你可以通过运行以下命令来确认xmodmap
例如:
pratap@pratap:~$ xmodmap
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
pratap@pratap:~$
这意味着当你将右 Alt 键与 Shift 键组合时,它应该打印第 4 个键符
因此,您需要在运行之前从右 Alt 中删除修饰符
xmodmap -e "keycode 108 = backslash bar"
要从右 Alt 中删除修饰符,最好的方法是使用gnome-tweaks
或gsettings
设置:
gsettings get org.gnome.desktop.input-sources xkb-options
要将值设置为 none,请运行以下命令。[如果从上述命令获得多个选项,请小心]
gsettings set org.gnome.desktop.input-sources xkb-options "[]"
答案3
尝试选择“波兰语(旧版)”键盘布局,它对我有用