数字键盘上的快捷键 Ctrl+Alt+加号或减号出现问题

数字键盘上的快捷键 Ctrl+Alt+加号或减号出现问题

我想在键盘的数字部分使用键盘快捷键 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 会话修复所需的键盘快捷键。

相关内容