我想知道如何在 Ubuntu 14.04 上将右命令键(Super_R)与右 alt 键(ISO_Level3_Shift)交换。
我很高兴知道 bash 命令或需要写入的必要行xkb
。也许您还知道允许重新映射键的 GUI 解决方案?
因此,右 ALT 键产生以下内容xev
:
KeyPress event, serial 37, synthetic NO, window 0x5c00001,
root 0xd7, subw 0x0, time 26406541, (573,569), root:(616,621),
state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
正确的 CMD 键产生:
KeyPress event, serial 37, synthetic NO, window 0x5c00001,
root 0xd7, subw 0x0, time 26614133, (241,590), root:(284,642),
state 0x0, keycode 134 (keysym 0xffec, Super_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
答案1
创建文件.Xmodmap
nano /.Xmodmap
添加新的定义
keycode 134 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift NoSymbol ISO_Level3_Shift
clear mod4
keycode 108 = Super_R
add mod4 = Super_R
重新加载xmodmap
xmodmap /.Xmodmap
并检查xev
KeyPress event, serial 36, synthetic NO, window 0x2600001,
root 0x26b, subw 0x0, time 10943583, (116,83), root:(153,147),
state 0x10, keycode 108 (keysym 0xffec, Super_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x2600001,
root 0x26b, subw 0x0, time 11023111, (106,110), root:(143,174),
state 0x90, keycode 134 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XFilterEvent returns: False
答案2
Xmodmap 将不起作用;它已经过时了。
在 gnome 中,我认为你可以做你想做的事情gnome-tweak-tool
(我认为 Unity 有一个等效unity-tweak-tool
或类似的东西):
...应该是这些选项之一。由于错误,请阅读完整定义,你需要深入研究这些文件/usr/share/X11/xkb/rules/*.lst
——我认为你感兴趣的是
altwin:ctrl_alt_win Ctrl 映射到 Alt 键,Alt 映射到 Win 键
来自xorg.lst
,我想这是列表中的第四个。
我无法检查,但也许
setxkbmap -option altwin:ctrl_alt_win
可以工作...来自通常有用的 arch 页面。
(是的,xkb
或者至少它目前的状态是 PITA。复杂、无文档的系统,我相信没有人知道详细情况。参见第一个引文这里。 )。