重新映射 Caps Lock 的扫描码

重新映射 Caps Lock 的扫描码

在 Windows 中,我可以将 Caps Lock 设置为第二个 Enter,可以用左手小指按下。我将此参数添加到注册表中来执行此操作:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "扫描码映射"=十六进制:00,00,00,00,00,00,00,00,02,00,00,00,1c,00,3a,00 ,00,00,00,00

我怎样才能在 Linux 中做同样的事情?

答案1

最接近的等价方法是运行xmodmap每次登录时都进行编程。

.Xmodmap将以下代码片段放入您的主目录中名为的文件中:

keycode 66 = Return
clear Lock

您可以通过运行来查看按键代码和当前关联的按键名称xev从终端。Caps Lock当 xev 窗口聚焦时按下,您会看到类似的内容

KeyPress event, serial 29, synthetic NO, window 0x7c00001,
    root 0x105, subw 0x0, time 96597741, (1548,225), root:(3151,256),
    state 0x0, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
"   XmbLookupString gives 1 bytes: (0d) "
    XFilterEvent returns: False

对于大多数按键,您只需要那根keycode线。修饰符是单独跟踪的:您需要将键符号(指令右侧的内容keycode … = …)与修饰符相匹配。该指令从所有键中clear Lock删除Lock修饰符(Caps Lock 或 Shift Lock)。

根据您的发行版和桌面环境,将这些行添加到可能或可能不够~/.Xmodmap:许多设置(但不是全部)在登录时自动读取此文件。如果您没有,请xmodmap ~/.Xmodmap在登录时运行该命令。如何执行此操作取决于您选择的桌面环境。

答案2

在我的 .Xmodmap 文件中我Caps Lock转向Escape

clear Lock
keycode 0x42 = Escape

把它变成Return你想要的样子,这会成功

clear Lock
keycode 0x42 = Return

非常有趣的是,它可以用于其他组合键,例如我有

keycode 0x87 = Insert

这变成Context Menu key了关键Insert。 (当然对我来说很有趣)

就像吉尔斯的回答所说,您可以用来xev确定要重新分配的键的键码。

不要忘记您必须启动:

xmodmap ~/.Xmodmap

在您用户的窗口管理器的启动脚本中,以便为您登录的每个新会话考虑密钥重定向。

相关内容