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
确保在加载窗口管理器时执行自定义键映射。
Settings Manager -> Keyboard
,是否有类似的选项exo-open --launch TerminalEmulator
?如果是这样,它在第二列快捷方式中说什么?