差异左/右超级按钮

差异左/右超级按钮

当我按下左键时,Supergnome shell 会出现,而当我按下右键时,Super则不会出现。此外,按下右Super+T会立即打开一个终端,但使用左 super 时,我必须按T两次,而当我T只按一次时,它类似于只按T而不按住Super左键。最后一点也发生在我定义的其他快捷键(如Super+ LSuper+ E)上,但不发生在Super+上Up/Down/Left/Right

我想要的是按下任意一个Super键来获取 gnome shell,并使用任意一个Super键组合来T立即打开终端(与其他快捷方式类似)。我使用 Ubuntu 12.04 LTS 和 gnome 3 shell。

答案1

xmodmap 解决方案

我认为你可以使用修改映射,一个修改键盘映射的工具。由于我的键盘没有右键,Super我无法确认此解决方案,因此如果它不起作用,请发表评论。
所有步骤都在终端中完成

打印当前修改器图
跑步

xmodmap

这应该打印当前的修改器映射,它应该像这样

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

重要的是该mod4行,该行显示哪些键代码映射到 Super_L 和 Super_R 键符号。

备份按键映射
在进行任何更改之前,最好先备份当前的按键映射,我们可以使用以下命令进行备份

xmodmap -pke > ~/.xmodmap.orig

现在如果出现任何问题您只需输入

xmodmap ~/.xmodmap.orig

恢复您原来的按键映射。(如果您犯了一些严重的错误,无法再正常打字,也可以重新启动)

检查当前的按键映射 Super
假设Super按键具有连续的按键代码(在本例中为 0x85 和 0x86),我们可以通过运行以下命令来检查当前映射

xmodmap -pke | grep -wA1 $((0x85))

当然,你应该用修改器映射中的键代码来更改 0x85。这应该给你

keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

$((0x85))将十六进制数转换为十进制)

模仿左边的行为 Super 向右 Super
从上一步可以看出,右键的Super键码为 134,但我们希望它具有左键(键码为 133)的行为。Super我们可以通过使用以下方法重新映射键来实现

xmodmap -e "keycode 134 = Super_L NoSymbol Super_L"

检查是否有效
如果你现在这样做

xmodmap -pke | grep -wA1 $((0x85))

你应该看到

keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_L NoSymbol Super_L

这意味着两个键现在具有相同的行为。此外,修饰键映射应该在 行上发生变化mod4,我们可以通过运行来检查这一点

xmodmap | grep 'mod4'

这应该给予

mod4        Super_L (0x85),  Super_L (0x86),  Super_L (0xce),  Hyper_L (0xcf)

当然,您提到的快捷方式也应该有效!

使映射持久化
如果有效,您可以确保在启动时自动应用这些设置。运行

echo 'keycode 134 = Super_L NoSymbol Super_L' >> ~/.xmodmaprc

将自定义按键映射存储在文件中~/.xmodmaprc。运行

echo 'xmodmap ~/.xmodmaprc' >> ~/.xsessionrc

以确保在窗口管理器加载时执行自定义键映射。

相关内容