如何在 Linux 中将常规键重新映射为修饰键 (Shift...)

如何在 Linux 中将常规键重新映射为修饰键 (Shift...)

在我的新笔记本电脑键盘上,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

将扫描码映射到键码获取详细说明和更多示例。

笔记:

答案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

如果一切正确,密钥将立即生效,无需重新启动计算机

附加来源:红迪网帖子

相关内容