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
确保在窗口管理器加载时执行自定义键映射。