我想在键盘的数字部分使用键盘快捷键 Ctrl+Alt+Plus 或 Minus,但它们在我尝试过的任何 Linux 上根本不起作用(Manjaro 和 Debian 以及 Gnome 和 KDE)。
我的设置:
- 标准全尺寸键盘
- 数字锁定键打开
- 英文布局集
LANG=en_US.UTF-8
什么工作正常:
- Ctrl + 加号
- Alt + 加号
- Shift + 加号
但是 Ctrl+Alt+Plus 在我分配此组合的任何程序(如 Krusader、Dolphin 等)中没有任何作用。
我发现了什么(可能是问题)
我尝试运行xev
,当按 Ctrl+Alt+Plus 或 Minus 时,它给了我这个
# For Ctrl+Alt+Plus
KeyRelease event, serial 28, synthetic NO, window 0x6c00001,
root 0x532, subw 0x0, time 3273638, (977,484), root:(1591,1348),
state 0x1c, keycode 86 (keysym 0x1008fe22, XF86Next_VMode), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
# For Ctrl+Alt+Minus
KeyRelease event, serial 28, synthetic NO, window 0x6c00001,
root 0x532, subw 0x0, time 3307298, (904,548), root:(1518,1412),
state 0x1c, keycode 82 (keysym 0x1008fe23, XF86Prev_VMode), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
XF86Next_VMode/XF86Prev_VMode
因此,当您按下 Ctrl+Alt 修饰符时,加号/减号键似乎会映射到符号,而使用任何其他修饰符(或没有)时,它们会映射到KP_Add/KP_Subtract
.
所以,我的问题是为什么它会这样,这些是什么XF86Next_VMode/XF86Prev_VMode
意思?
我还是一个 Linux 初学者,但我习惯在 Windows 上使用这些快捷方式,所以我也想在 Linux 上使用它们。我在某处读到可以用来xmodmap
将键码重新映射到不同的符号,我想这可以解决我的问题。
然而,当我在 Arch Wiki 上读到 xmodmap 时,我仍然感到困惑。他们说
表中的每个键符号列对应于修饰键的特定组合:
Key Shift+Key Mode_switch+Key Mode_switch+Shift+Key ISO_Level3_Shift+Key ISO_Level3_Shift+Shift+Key
但是哪一列应该代表上面列表中的 Ctrl+Alt 组合呢?另外是否建议使用 xmodmap 来解决这个问题?
答案1
最终我使用该xmodmap
实用程序使快捷方式正常工作。
1.我运行xmodmap -pke
查看每个键码的当前映射:
$ xmodmap -pke
...
keycode 82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode
keycode 86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode
...
我们已经可以看到问题:最后一列包含这些符号XF86Next_VMode, XF86Prev_VMode
。第 7 列似乎属于 Ctr+Alt 组合。尽管我无法在任何文档中找到第七列的含义。
2.在您的主目录中创建一个包含以下内容的文件.xmodmaprc
来修复第七列:
keycode 82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract
keycode 86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add
3.在终端中运行命令xmodmap ~/.xmodmaprc
,快捷方式应该立即开始为您工作(直到下次登录)。
4.显然我想让这个修复在每次登录后都起作用。
首先,我尝试将其添加到文件中.profile
,该文件应该在每次登录后加载。
if [ -f $HOME/.xmodmaprc ]; then
sleep 5 && xmodmap $HOME/.xmodmaprc &
fi
注意,我必须添加该sleep 5
命令,否则它不起作用。然而,事实证明它仅适用于 X11 显示服务器上的 KDE 和 Gnome。当我在 Wayland 上尝试 Gnome 时,由于某种原因它从未工作(我相信 .profile 已加载,但 xmodmap 命令无法执行,为什么?)。
因此,我尝试了另一种解决方案并转到 path ~/.config/autostart/
,在其中创建了一个包含以下内容的文件:
$ cat ~/.config/autostart/xmodmap.desktop
[Desktop Entry]
Name=Xmodmap
Type=Application
Exec=bash -c "sleep 5 && [[ -f $HOME/.xmodmaprc ]] && xmodmap $HOME/.xmodmaprc"
Terminal=false
Hidden=false
最后,使用桌面自动启动文件,我能够为迄今为止尝试过的任何 Linux 会话修复所需的键盘快捷键。