Xmodmap 重映射修改器不起作用?

Xmodmap 重映射修改器不起作用?

我正在使用一个新键盘,并尝试将其设置为模仿笔记本电脑上的键盘。我在 Ubuntu 14.04 上使用 xmodmap,但无法使其工作。我清除了修饰键,如下所示:

xmodmap -e "clear mod1"
xmodmap -e "clear mod4"
xmodmap -e "clear Control"

一切正常,之后修饰键不再起作用。之后,我尝试将 Alt_R 键指定为超级键,如下所示:

xmodmap -e "add mod1 = Alt_R"

但是,alt 按钮随后会恢复为 alt 按钮的行为,而不是像 super 那样的行为,并且在点击时会调出 Unity 搜索。是否有让修改器与 xmodmap 配合使用的技巧?

此外,即使在清除控制后,使用“xmodmap -e“clear Control”,我仍然可以使用 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

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

答案1

我自己不是专家,但我会尝试一下。首先,让我们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

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

xmodmap ~/.Xmodmap

或者

sleep 4 && xmodmap ~/.Xmodmap &

~/.bash_profile

相关内容