我如何将 Left Meta 交换为任意键(最好使用 xkb)?

我如何将 Left Meta 交换为任意键(最好使用 xkb)?

我试图通过将一些键放在更方便使用的地方来对抗我的“emacs pinky”。我已经换成了CtrlCaps Lock这是理所当然的,将 setxkbmap 命令放入启动应用程序列表中。

我决定也应该移动左侧的 Meta/Super/Windows 键,我经常使用这些键,但在键盘上使用这些键不太方便。最适合发挥其功能的键是 Tab 上方的键,在美国键盘中,它可显示符号~(在 ES 键盘中,它可显示阳性/阴性符号和反斜杠和)。

这是我想与左 Meta 键交换的键

通过查看,我发现/usr/share/X11/xkb/symbols/es它的代码是TLDE

key <TLDE>  { [ masculine, ordfeminine,    backslash,   backslash ] };

但是我怎样才能将该键与左元键交换??我在 xkb 中找不到该键的代码,我不知道如何进行交换,因为 中没有该选项/usr/share/X11/xkb/rules/evdev.lst。它的代码是LWIN(正如我看到的/usr/share/X11/xkb/symbols/pc):

key <LWIN> {      [ Super_L               ]       };

如果相关的话,我目前正在运行 XFCE4,但我想要一个便携式解决方案,以便如果我更换 DE(我在其他计算机上使用 Unity),我可以随身携带它;我也在使用西班牙语键盘。

添加:我当前的配置;注意我已经启用了 swapcaps,它是从setxkbmap我添加到启动应用程序中启用的。

$ setxkbmap -print
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+es+inet(evdev)+ctrl(swapcaps)"  };
    xkb_geometry  { include "pc(pc105)" };
};

谢谢!

一次可能接近失败的尝试

我尝试改变布局x11/xkb

/usr/share/X11/xkb/symbols/es

-key <TLDE>        { [ masculine, ordfeminine,    backslash,   backslash ] };
+key <TLDE>        { [ Super_L ] };

/usr/share/X11/xkb/symbols/pc

-key <LWIN> {      [ Super_L               ]       };    
+key <LWIN> {     [ masculine, ordfeminine,    backslash,   backslash  ] };

这没有什么区别,他们表现出相同的行为。

另一个想法

我想到过的另一个办法是切换键码/usr/share/X11/xkb/keycodes/evdev。但无法让它工作。

答案1

使用 xmodmap

我不想使用 xmodmap,但是......它可以解决问题:

  1. xev检查键码和功能(对我来说,49 是阳性键码,133 是 Super_L)。
  2. xmodmap 来交换它们的功能:

    xmodmap -e 'keycode 49 = Super_L'
    xmodmap -e 'keycode 133 = masculine backslash backslash backslash'
    

请注意,这与我的键盘布局相符,您应该检查一下自己的键盘布局。此外,现在反斜杠是用 Shift 而不是像以前那样用 Alt-Gr 来输入的,但我很快就习惯了。

相关内容