差异左/右超级按钮


10

当我按左键Super时,会出现gnome shell,而当我按右键时Super,则不会。此外,按向右Super+ T确实会立即打开一个终端,但是当使用向左超级键时,我必须按T两次,而当我T只按一次时,这类似于T不按住向Super左键而已。最后一点也与我定义的其他快捷方式(例如Super+ LSuper+ E)有关,但与Super+ 无关Up/Down/Left/Right

我想要的是按任一Super键获取gnome外壳,并结合使用任一SuperT立即打开终端(以及其他快捷方式)。我使用Ubuntu 12.04 LTS和gnome 3 Shell。


在中Settings Manager -> Keyboard,是否有类似的选项exo-open --launch TerminalEmulator?如果是这样,它在第二列快捷方式中说什么?
DaimyoKirby

1)您的意思是系统设置下的键盘部分吗?如果是这样,我在那里找不到。2)如果您是指compiz设置管理器,我也找不到它。无论如何,我在终端中尝试了您的命令,但都没有安装exo-open,因此我高度怀疑该选项是否存在。但是,该命令带有自定义快捷方式启动终端x-terminal-emulator。那是我使用的那个,因为默认启动终端似乎不起作用。
艾瑞克(Erik)

Answers:


4

xmodmap解决方案

我认为您可以使用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,但我们希望它有左的行为Super具有键码133键我们可以通过重新映射按键做到这一点

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

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


1
首先,感谢您的回答,我做了一切,使映射永久化。终端中的输出与前面提到的完全一样,但是我的问题仍然相同:left super显示了gnome shell,而right则没有。与快捷方式类似,对于左超级按钮,您必须按两次t来打开终端,而对于右超级按钮一次就足够了。
Erik 2013年

1
嗯,那我也很无知:PI猜测这些快捷方式是在更深层次上处理的。
Gerhard Burger 2013年

1
嗯,我发现了一个错误报告,显然更多的人有同样的问题:) bugzilla.gnome.org/show_bug.cgi?id=659899
Gerhard Burger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.