如何使用 setxkbmap 使退格键充当转义键?

如何使用 setxkbmap 使退格键充当转义键?

似乎有几种选择,setxkbmap例如-option caps:backspace使大写成为退格键。但是我似乎找不到使退格键成为转义键的选项。如何创建将退格键更改为转义键的单个 setxkbmap 命令?

答案1

您必须定义一个新选项。
首先,创建一个新的符号文件,例如/usr/share/X11/xkb/symbols/bksp包含以下内容:

partial alphanumeric_keys
xkb_symbols "bksp_escape" {
    key <BKSP> { [ Escape ] };
};

然后创建新选项,如下所示:

bksp:bksp_escape  =   +bksp(bksp_escape)

(其中bksp是符号文件的名称,bksp_escape是在此文件中定义的组名称)并将其添加到您正在使用的规则集中的选项列表中 - 假设evdev- 因此将其放在 /usr/share/X11/xkb/rules/evdev下面! option = symbols

! option    =   symbols
  bksp:bksp_escape  =   +bksp(bksp_escape)
  ...........
  grp:shift_toggle  =   +group(shifts_toggle)
  altwin:menu       =   +altwin(menu)

也将其添加到/usr/share/X11/xkb/rules/evdev.lst(带有简短描述)下! option(例如之前ctrl):

! option
  ........
  bksp                 Backspace key behavior
  bksp:bksp_escape     Backspace as Escape
  ctrl                 Ctrl key position
  ctrl:nocaps          Caps Lock as Ctrl

然后您可以作为普通用户运行:

setxkbmap -layout us -option bksp:bksp_escape

启用该选项并使BKSP行为如同ESC.
您还可以验证是否:

setxkbmap -query

报告:

rules:      evdev
model:      pc104
layout:     us
options:    bksp:bksp_escape

而如果

setxkbmap -print

输出:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+bksp(bksp_escape)" };
    xkb_geometry  { include "pc(pc104)" };
};

dconf在 Gnome 3 中,您可以通过(或gsettings在终端中)使该选项永久存在,例如添加'bksp:bksp_escape'org​>gnome​>桌面​>输入源​>xkb-options键(请注意,dconf值中用逗号+空格分隔)。


最后,请注意,两者evdevevdev.lst将在将来的升级中被覆盖(但不是您的自定义bksp符号文件),因此每次升级拥有它们的软件包时您都必须再次编辑它们(在 archlinux 上是xkeyboard-config)。编写一个执行此操作的脚本更容易,例如

sed '/! option[[:blank:]]*=[[:blank:]]*symbols/a\
  bksp:bksp_escape  =   +bksp(bksp_escape)
' /usr/share/X11/xkb/rules/evdev

sed '/! option/a\
  bksp                 Backspace key behavior\
  bksp:bksp_escape     Backspace as Escape
' /usr/share/X11/xkb/rules/evdev.lst

如果您对结果感到满意,请使用sed -i(或者-i.bak如果您想制作备份副本)实际编辑这些文件到位

相关内容