将右 alt 映射到左控件

lo *_*cre 6 keyboard-shortcuts xkb

我想让我的right alt关键工作left control同时仍然left control作为左控制工作。所以我像这样编辑了我的 evdev 文件:

<LALT> = 64;
<LCTL> = 37; // original binding 37
<SPCE> = 65;
<RCTL> = 105;
<RALT> = 37; // original binding: 108
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,现在两个键都不能作为ctrl. 我怎样才能使这项工作?

qui*_*tic 6

您更改的键码文件是一个 XKB 映射,它<FOO>通过按下某个键时内核键盘驱动程序发出的键码来定义 XKB 布局 ( ) 中使用的符号代码。更改那里的代码不会更改该键生成的代码,它会更改 XKB 布局在看到更改后的符号时认为其处理的代码。

假设您可以将系统 XKB 文件恢复到其原始状态,那么 XKB 执行您想要的操作的方法是加载一个将覆盖标准布局的选项。有一个现有选项 ( ctrl:ralt_rctrl) 接近您想要的:

  # definition in /usr/share/X11/xkb/rules/evdev
  ctrl:rctrl_ralt       =       +ctrl(rctrl_ralt)
  # similar rule for swapped option?
  ctrl:ralt_rctrl       =       +ctrl(ralt_rctrl)
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令加载它setxkbmap

$ setxkbmap -option ctrl:ralt_rctrl
Run Code Online (Sandbox Code Playgroud)

如果这符合您的要求,您可以通过将该命令添加到.xprofile.xinitrc您的窗口管理器autorun脚本中来使其永久化。在 GNOME 中,您可能需要其他步骤。

如果您仍然希望重新Alt_R映射为 asCtrl_L而不是Ctrl_R,则需要创建一个本地覆盖子句。使用现有选项作为起点;在里面/usr/share/X11/xkb/symbols/ctrl。请参阅我的超级用户关于 XKB 修改和一些附加资源的回答: