如何逐步与xkb交换命令和控制键?
我想使用我的Apple长铝键盘和交换的Command Cmd
和Control Ctrl
键。 如何使用xkb
在Trusty Tahr(14.04)上一步一步完成这项工作?
注意: 此解决方案对我不起作用,因为xkb
在13.04或更早版本中替换了xmodmap
。
这个答案主要基于这里给出的答案。 我再次提出并回答这个问题的原因是最后一步,没有完全描述。 有关xkb
进一步阅读,请查看此处 , 此处和此处 。
-
在
/usr/share/X11/xkb/symbols
创建一个文件(也可以在/etc/X11/xkb/symbols
),名为altwin2
并包含以下映射:// Control is SWAPPED with Win-keys partial modifier_keys xkb_symbols "cmd_n_ctrl" { key
{ [ Control_L ] }; key { [ Control_R ] }; key { [ Super_L ] }; modifier_map Control { , }; modifier_map Mod4 { }; }; -
在
/usr/share/X11/xkb/rules/evdev
的options = symbols
部分下插入以下行(忽略第一行的警告):altwin2:cmd_n_ctrl = +altwin2(cmd_n_ctrl)
-
将新选项添加到选项部分下的
/usr/share/X11/xkb/rules/evdev.lst
:altwin2:cmd_n_ctrl Win swapped with Ctrl
-
如果您不知道键盘配置文件的位置,可以使用dconf-editor编辑它,在org :: gnome :: desktop :: input-sources下的
xkb-options
添加"altwin2:cmd_n_ctrl"
,xkb-options
所示。 如果您知道配置文件的位置,则应在XkbOptions
字段中包含新选项,如下所示:Section "InputClass" Identifier "keyboard-layout" Driver "evdev" MatchIsKeyboard "yes" Option "XkbLayout" "us, ru, ca, fr" Option "XkbOptions" "altwin2:cmd_n_ctrl" EndSection
-
重启或重启
lightdm
以更新更改:sudo restart lightdm
注意:如果在布局文件中直接进行任何更改,即不使用选项,则需要删除/var/lib/xkb/
的缓存文件,如此处所示。
在16.04,这是我最终实现这一目标的方式。 Xmodmap不能在所有应用程序中普遍使用,gnome tweak工具缺少该function,dconf编辑自定义altwin2密钥交换(就像这里的主要答案)失败,所以我把我的头发撕掉,直到我将几个答案合并到这个完整,简单的,优雅的解决方案:
gksudo gedit /usr/share/X11/xkb/symbols/pc
将其更改为:
default partial alphanumeric_keys modifier_keys xkb_symbols "pc105" { key { [ Escape ] }; // The extra key on many European keyboards: key { [ less, greater, bar, brokenbar ] }; // The following keys are common to all layouts. key { [ backslash, bar ] }; key { [ space ] }; include "srvr_ctrl(fkey2vt)" include "pc(editing)" include "keypad(x11)" key { [ BackSpace, BackSpace ] }; key { [ Tab, ISO_Left_Tab ] }; key { [ Return ] }; key { [ Caps_Lock ] }; key { [ Num_Lock ] }; key { [ Shift_L ] }; key { [ Alt_L ] }; key { [ Super_L ] }; key { [ Shift_R ] }; key { [ Alt_R ] }; key { [ Super_R ] }; key
保存。
rm -rf /var/lib/xkb/*
(我不知道这是否必要,但我做到了。)
重启。