數字鍵盤上的快捷鍵 Ctrl+Alt+Plus 或減號出現問題
我想在鍵盤的數字部分使用鍵盤快捷鍵 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 會話修復所需的鍵盤快捷鍵。