如何使 AltGr+i,j,k,l 作為游標鍵正常工作?
(我已經在超級使用者上問過這個問題,但沒有得到答案,所以我現在就在這裡嘗試。)
我希望游標鍵和其他一些可用作 AltGr+c、h、t、n 等(如果您有 qwerty,則為 i、j、k、l)。我製作了一個自定義鍵盤佈局文件(請參見此處)。在那裡我基本上只是拿了一個佈局文件並將相關行修改為
key <AC09> { [ n, N, Right, Right ] };
我有這個
/usr/share/X11/xkb/symbols/nonpop
,我把它載入setxkbmap nonpop
進去~/.xinitrc
(我沒有使用任何DE,只是Awesome WM)。它可以工作——幾乎。
- 例如,在 Firefox 中,一切都執行良好。例如,AltGr+n 向右移動游標,Shift+AltGr+n 選擇文本。同樣在 LyX 的主要文本區域。
- 在 MonoDevelop 中,游標隨 AltGr+n 移動,但 Shift+AltGr+n 也僅移動游標而不是選擇。Shift+Right 正常選擇文本。
- 在 NetBeans 和 LyX 對話框中,按 (Shift+)AltGr+n 絕對不會執行任何操作。
我猜這些其他程序讀取了 AltGr 狀態並認為這是一件壞事。那麼,有沒有辦法讓事情按照我想要的方式發生?看起來覆蓋可能是一個解決方案,但我還沒有讓它們工作。
問題是,當您使用常用修飾符時
AltGr
,程序實際上會在您使用 AltGr 箭頭時將其視為被按下。所以Shift
++AltGr
實際上i
對一個程序來說就像你在按下一樣Shift + Alt + Up
,它是額外的東西Alt
讓程序感到困惑。如果可能,您可以通過向程序添加更多快捷方式來避免這種情況,Shift + Alt + Up
與 相同的操作也是如此Shift + Up
,或者您可以使用程序不知道的不常見修飾符。還有其他方法可以做到這一點,但這是更簡單的方法之一,對我來說效果很好。它會在字母數字鍵上創建一個“Group2”疊加層,這樣當您切換到 Group2 時,那裡會出現箭頭而不是字母。
Caps Lock
您可以通過撥動開關(像正常工作一樣開/關)或瞬間(按下以啟動,像Shift
正常工作一樣)切換到 Group2partial alphanumeric_keys xkb_symbols "alpha_arrows" { key <AD07> { symbols[Group2]= [ Home ] # u }; key <AD08> { symbols[Group2]= [ Up ] # i }; key <AD09> { symbols[Group2]= [ End ] # o }; key <AD10> { symbols[Group2]= [ Prior ] # p }; key <AC07> { symbols[Group2]= [ Left ] # j }; key <AC08> { symbols[Group2]= [ Down ] # k }; key <AC09> { symbols[Group2]= [ Right ] # l }; key <AC10> { symbols[Group2]= [ Next ] # ; }; key <AB06> { symbols[Group2]= [ Delete ] # n }; };
然後,您可以選擇一個密鑰作為 Group2 啟動密鑰。您可以通過以下方式查看所有選項(如果您不想自己動手):
$ grep grp /usr/share/X11/xkb/rules/base.lst
然後選擇一個選項,例如這個選項僅在
Caps Lock
被按住時啟動箭頭。它還添加了一個新組合Alt
+Caps Lock
來實際打開和關閉大寫鎖定:$ setxkbmap -option grp:caps_switch
您可以將其添加到您的 Xorg 配置文件中以使更改永久生效 - 網上有很多關於如何執行此操作的指南。
注意:
key
被使用,而不是replace key
因為我們想要添加到現有定義中,而不是替換它。- 如果您實際上有備用鍵盤佈局(可能一些國際鍵盤也可以輸入拉丁/英文字母),則此方法可能不適合您。您必須定義一個基於
ALPHANUMERIC
擴展修飾符(例如 Hyper)的新類型來啟動箭頭鍵。