在 xmodmap 中交換 Ctrl 和大寫字母後,如何使 Ctrl 在多修飾符組合中正常運作?

在 xmodmap 中交換 Ctrl 和大寫字母後,如何使 Ctrl 在多修飾符組合中正常運作?

我已經Left Ctrl透過Caps Lock建立 ~/.Xmodmap進行了交換

keycode 66 = Control_L
keycode 37 = Caps_Lock
clear Lock
clear Control
add Lock    = Caps_Lock
add Control = Control_L Control_R

然後運行$ xmodmap ~/.Xmodmap。按該Left Ctrl鍵可如預期運作,切換Caps Lock。按鍵Caps Lock通常適用於簡單的快捷方式,例如Ctrl+N.

但是,當需要多個修飾鍵(例如Alt+ Ctrl+ I)時,只有先按下該Alt鍵才有效。如果我先按該Caps Lock鍵,則沒有任何效果。

我可以使用 重置鍵盤佈局$ setxkbmap -layout us,上面的快捷方式可以正常工作。如果我$ xmodmap ~/.Xmodmap再次運行,我也會遇到同樣的問題。

我還發現,即使對於單修飾符組合,我也必須Caps Lock比以前使用普通鍵更長時間地按住該Ctrl鍵才能註冊。它可能約為 0.01 秒,但很明顯,十分之一的錯誤訊號被發送。

另外,如果我交換CtrlCaps Lock使用$ setxkbmap -layout us -option 'ctrl:swapcaps',我不再注意到多個修飾符的問題。但是,我仍然想用 xmodmap 解決方案解決問題,因為我很快就會得到一個新鍵盤,並且需要更換Ctrl不同的按鍵。

=編輯=我嘗試過另一個鍵盤(Das Keyboard),似乎第二個問題是必須按住Caps Lock比我更長的時間,Ctrl這可能是原始鍵盤(鋁質蘋果有線鍵盤)的硬體問題。然而,多個修飾符的第一個問題仍然存在。

=編輯=我在xev中測試了不同的擊鍵。按住Alt然後按下該Caps Lock鍵會導致keycode 66 (keysym 0x0, NoSymbol),與不按住keycode 66 (keysym 0xffe3, Control_L)時 相反。Alt

答案1

顯然,上面的 xmodmap 程式碼是不是足以交換Ctrl+LCaps Lock鍵。

keycode 66 = Control_L

應該

keycode 66 = Control_L Control_L

Ctrl在另一個修飾符後按下時允許正確的功能。我找不到任何對此解決方案的好的參考,但是顯然第二個條目與Shift+相關Key。我不知道為什麼這裡它似乎也適用於Alt+ Key

(此外,FWIW,其他消息來源指出最多有八列,而不是連結中提到的六列。)

相關內容