Xmodmap 重映射修饰符不起作用?

Mar*_*ett 8 keyboard xmodmap 14.04

我正在使用新键盘,并尝试将其设置为模仿笔记本电脑上的键盘。我在 Ubuntu 14.04 上使用 xmodmap,但无法让它工作。我像这样清除了修饰键:

xmodmap -e "clear mod1"
xmodmap -e "clear mod4"
xmodmap -e "clear Control"
Run Code Online (Sandbox Code Playgroud)

这工作正常,之后修饰符不做任何事情。之后,我尝试将 Alt_R 键分配为超级键,如下所示:

xmodmap -e "add mod1 = Alt_R"
Run Code Online (Sandbox Code Playgroud)

但是,alt 按钮会恢复为 alt 按钮的行为,而不是像 super 一样的行为,并在点击它时调出 Unity 搜索。有没有让修饰符与 xmodmap 一起工作的技巧?

此外,即使在清除控制后,使用“xmodmap -e”清除控制”,我仍然可以使用 ctrl。

我使用的键盘是 das 键盘的终极版,如果这很重要的话。

编辑:我在使用 xev 并试图解决问题时做出的一个认识:当我运行类似“xmodmap -e”keycode 133 = Alt_L”(keycode 133 通常是超级),然后启动 xev 时,当我查看它显示的输出:

KeyRelease event, serial 37, synthetic NO, window 0x2000001,
root 0x9e, subw 0x0, time 179020, (-382,66), root:(406,118),
state 0x40, keycode 133 (keysym 0xffe9, Alt_L), same_screen YES,
XKeysymToKeycode returns keycode: 64
XLookupString gives 0 bytes: 
XFilterEvent returns: False
Run Code Online (Sandbox Code Playgroud)

如您所见,它将按键视为 Alt_L。但是,该键仍然表现得像一个超级键,按下时会激活 Unity 搜索。

dre*_*ris 7

我自己不是专家,但我会尝试一下。首先,让我们xmodmap~/.Xmodmap. 我了解您希望将正确的 alt 用作超级键。我建议这样做:

clear mod1
clear mod4

!Make right alt to look like Super_R
!I'm assuming your right alt has keycode 108, you can check using xev
keycode 108 = Super_R NoSymbol Super_R

!Add the Super_L and Super_R keys to the modifier mod4
add mod4 = Super_L Super_R
Run Code Online (Sandbox Code Playgroud)

您的其他 alt 键和超级键现在可能会搞砸,但您可以类似地将它们分配给您想要的任何东西。(如果您根本不想更改它们,请使用xev查看它们最初做了什么并将它们分配给它。)clear首先将所有s 放在一起,然后将键码分配给键名,最后是键名的分配修改器,我认为它应该起作用。通常,~/.Xmodmap应该在登录时自动执行,但如果没有,您可以尝试添加一行

xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)

或者

sleep 4 && xmodmap ~/.Xmodmap &
Run Code Online (Sandbox Code Playgroud)

~/.bash_profile