尝试使用 xkg 将我的左 SUPER 键(也称为 WINDOWS 键)重新映射到左或右 CONTROL 键

尝试使用 xkg 将我的左 SUPER 键(也称为 WINDOWS 键)重新映射到左或右 CONTROL 键

我尝试阅读并理解这一点:https://www.charvolant.org/doug/xkb/html/node5.html

作为测试,由于我的布局在 /usr/share/X11/xkb/symbols/pl 文件中是“Polish, Programmer”,所以我尝试将“q”字符重新映射到“x”,并且效果很好。

但我想要的是将 LWIN(Left Super)重新映射到 Left Control。

所以我尝试了这个:我开始编辑 /usr/share/X11/xkb/symbols/pc 文件,假设这是所有其他文件的“根”。注释掉此行:

//key <LWIN> {  [ Super_L       ]   };

并添加了这个:

key <LWIN> {    [ Control_L     ]   };

并重新启动 PC,但无济于事。例如 LWIN + C,不会将文本编辑器中的选定文本复制到剪贴板,而只会生成“c”字母。在终端中,它不会停止当前程序,而是只会生成“c”字母。

这是我的配置文件: https://gist.github.com/anonymous/49514ddf6f03ba87babaab51e2d5eff4

当我尝试 xev 命令然后按下左 Control 键时,我看到以下内容:

KeyPress event, serial 40, synthetic NO, window 0x5a00001,
    root 0x7e, subw 0x0, time 1053321, (374,-259), root:(374,545),
    state 0x0, keycode 133 (keysym 0xffe3, Control_L), same_screen YES,
    XKeysymToKeycode returns keycode: 37
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x5a00001,
    root 0x7e, subw 0x0, time 1053425, (374,-259), root:(374,545),
    state 0x0, keycode 133 (keysym 0xffe3, Control_L), same_screen YES,
    XKeysymToKeycode returns keycode: 37
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

顺便说一句。Ask ubuntu 向我推荐了两个类似问题的链接,但它们很旧,并建议使用 xmodmap,而且据我所知,这不再是 Ubuntu >= 16.04 (Xenial) 上的正确答案,而这正是我所拥有的版本。

BTW2. 我真的很想避免使用像 Xbindkeys 这样的应用程序,因为它有一个内置的解决方案,我想我几乎理解了,并且已经花了一些时间尝试理解它。

答案1

要暂时更改它,您可以运行以下命令:

setxkbmap -option altwin:ctrl_win

要永久更改它,请打开/etc/default/keyboard文件进行编辑,更改行

XKBOPTIONS=""

XKBOPTIONS="altwin:ctrl_win"

然后重新启动。

相关内容