似乎有多种选择,setxkbmap
例如-option caps:backspace
使大写退格。但是,我似乎找不到使退格键成为转义键的选项。如何创建一个将退格键更改为转义键的setxkbmap命令?
似乎有多种选择,setxkbmap
例如-option caps:backspace
使大写退格。但是,我似乎找不到使退格键成为转义键的选项。如何创建一个将退格键更改为转义键的setxkbmap命令?
Answers:
您必须定义一个新选项。
首先,制作一个新的符号文件,例如,/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)" };
};
在Gnome 3中,您可以通过dconf
(或gsettings
在终端)将该选项永久化,例如添加'bksp:bksp_escape'
到org> gnome>桌面> input-sources> xkb-options键(请注意,dconf
值中用逗号+空格分隔)。
最后,请注意,两者evdev
和evdev.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
如果要制作备份副本)实际就地编辑这些文件。