Keyboard-Shortcuts

數字鍵盤上的快捷鍵 Ctrl+Alt+Plus 或減號出現問題

  • February 6, 2022

我想在鍵盤的數字部分使用鍵盤快捷鍵 Ctrl+Alt+Plus 或 Minus,但它們在我嘗試過的任何 Linux(Manjaro 和 Debian 以及 Gnome 和 KDE)上都不起作用。

我的設置:

  • 標準全尺寸鍵盤
  • NumLock 開啟
  • 英文版式集LANG=en_US.UTF-8

什麼工作正常:

  • Ctrl + 加號
  • Alt + 加號
  • Shift + 加號

但是 Ctrl+Alt+Plus 在我指定此組合的任何程序(如 Krusader、Dolphin 等)中什麼都不做。

我發現了什麼(可能是問題)

我試圖執行xev,當按下 Ctrl+Alt+Plus 或減號時,它給了我這個

# 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

因此,當您按下 Ctrl+Alt 修飾符時,加號/減號鍵似乎映射到符號XF86Next_VMode/XF86Prev_VMode,而使用任何其他修飾符(或無)時,它們被映射到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 來解決這個問題?

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 組合。儘管我無法在任何文件中找到第 7 列的含義。

**2.**在您的主目錄中創建一個.xmodmaprc包含此內容的文​​件以修復第 7 列:

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 命令無法執行,為什麼?)。

因此,我嘗試了另一種解決方案並轉到路徑~/.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 會話修復所需的鍵盤快捷鍵。

引用自:https://unix.stackexchange.com/questions/689131