在我的新笔记本电脑键盘上,Shift 键旁边有一个奇怪的键。坦率地说,它对我来说毫无用处,并且较短的 Shift 键无法让我达到我习惯的一些组合。我想把那个键也变成左移,这样我又可以有一个长的左移了。
首先我尝试了 xmodmap 根据这个答案,和他一样,我也没有成功。
然后我尝试通过将左 Shift 键的条目复制到奇怪键的行中来创建新的 xmodmap 配置。然而,应用设置需要很长时间(> 10 秒),因此在我的 bashrc 中使用它不是一个选项,因为它使得打开新的终端选项卡花费太长时间。它也不能在 X 中运行,只能在终端中运行。我还读到 xmodmap 大多数被认为是过时的。
最后,我尝试使用 xkb,但坦率地说,根据 Arch wiki 和此处的条目,我无法真正弄清楚如何使用。
答案1
您可以使用 udev 将扫描码重新映射到键码,无论您使用的是 xorg、wayland 还是虚拟控制台,这都有效。
可以通过命令获取扫描码evtest
。当evtest
要求设备扫描时选择您的键盘,然后按您要重新映射的键。这是alt按下按键时的输出示例
Event: time 1688218985.587133, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
Event: time 1688218985.587133, type 1 (EV_KEY), code 29 (KEY_LEFTALT), value 1
然后创建一个 hwdb 文件,将扫描码映射到/etc/udev/hwdb.d
.
例如,此文件重新映射CapsLock到。Shift
# generic keyword
evdev:input:b0003v*p*
KEYBOARD_KEY_70039=shift
最后,运行以下命令来应用更改。
systemd-hwdb update
udevadm trigger
看将扫描码映射到键码获取详细说明和更多示例。
笔记:
- 如果您有 AT 键盘,请使用
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
与您的键盘相匹配的键盘。 - 可以从标题中找到输入事件代码列表linux/include/uapi/linux/input-event-codes.h
答案2
@memchr 的回答是一个好的开始,但对我来说还不够清楚
我不知道配置的所有复杂性。最后,这正是对我有用的。
sudo touch /etc/udev/hwdb.d/mx-keys.hwdb
- 创建一个配置文件(您可以将文件命名为您喜欢的任何名称,只要它具有.hwdb
扩展名)sudo evtest
- 选择您的键盘(evtest
如果需要则安装)。按您想要重新映射的键(在我的例子中,是>左侧旁边的键Shift),您将收到类似的输出
Event: time 1692951945.797570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70064
Event: time 1692951945.797570, type 1 (EV_KEY), code 86 (KEY_102ND), value 1
sudo nano /etc/udev/hwdb.d/mx-keys.hwdb
- 在编辑器中打开配置文件
这是我的文件的内容
evdev:name:Logitech MX Keys:*
KEYBOARD_KEY_70064=leftshift
让我们来分解一下
Ligitech MX Keys
- 我的键盘的名称,您可以从设备列表中复制它evtest
对于下一行,我们将使用按键时的输出evtest
70064
- 您要重新映射的键的值。从第一行末尾取出leftshift
- 您想要重新映射到的键的值。从第二行开始,对我来说是KEY_LEFTSHIFT
之后保存文件并运行这些命令以应用更改
systemd-hwdb update
udevadm trigger
如果一切正确,密钥将立即生效,无需重新启动计算机
附加来源:红迪网帖子