Keyboard-Shortcuts
使特定鍵具有粘性
我發現在超級使用者的 xorg(真棒桌面管理器)下啟用粘滯鍵,這表明我可以通過
xkbset sticky -twokey
這可以按預期工作,但在我的情況下,我寧願只使特定鍵 (
Alt Gr
) 具有粘性,而不是所有修飾鍵。這個可以配置嗎?如果是這樣:在哪裡?
在 X11 上,實現此目的的一種方法是使用 XKB 並使正確的 alt 鍵將目前鎖存模式設置為 AltGr。有幾種方法可以解決它:
選項1
您可以將目前鍵盤佈局導出到文件,僅更改右 alt 鍵 (AltGr) 的行為並將其載入回 X,覆蓋預設佈局:
- 執行
xkbcomp $DISPLAY current.xkb
以導出您目前的鍵盤佈局。- 打開
current.xkb
文件並找到以下程式碼段:key <RALT> { type= "ONE_LEVEL", symbols[Group1]= [ ISO_Level3_Shift ] };
- 更改如下:
key <RALT> { type= "ONE_LEVEL", symbols[Group1]= [ ISO_Level3_Shift ], actions[Group1]= [ LatchMods(mods=AltGr) ] };
- 保存文件並執行
xkb current.xkb $DISPLAY
以應用新佈局。注意事項
- 新佈局僅適用於目前 X 會話。您可能希望在登錄後自動重新載入它。如果您使用的是視窗管理器,只需添加
xkb current.xkb $DISPLAY
到您的.xinitrc
或.xprofile
. 如果您使用的是桌面環境,則可能會有點棘手,因為 DE 通常以自己的方式處理鍵盤佈局,並且它們可以覆蓋本地配置。請務必查看他們的文件,或嘗試下面的選項 2。- 如果您使用多種鍵盤語言,則需要對每個導出的 xkb 文件重複上述步驟,並在適當的時候以某種方式載入它們(例如,為每種語言使用快捷方式)。
選項 2
您可以創建一個新的 XKB 選項,為 AltGr 鍵啟用所需的行為,然後將其與語言佈局一起啟動:
- 創建一個
/usr/share/X11/xkb/symbols
名為的文件,altgr
內容如下:partial alphanumeric_keys xkb_symbols "latch" { key <RALT> { symbols = [ ISO_Level3_Shift ], actions = [ LatchMods(mods=AltGr) ] }; };
- 打開
evdev
文件/usr/share/X11/xkb/rules
並找到該行! option = symbols
。在它之後添加一個新行並插入altgr:latch = +altgr(latch)
. 它將如下所示:! option = symbols altgr:latch = +altgr(latch) ...
+altgr(latch)
表示使用位於 中的文件中的latch
組altgr``/usr/share/X11/xkb/symbols
。現在您需要啟動新選項。您可以執行以下操作之一:
- 執行
setxkbmap -layout us -variant altgr-intl -option altgr:latch
以啟動新選項,將us
和替換altgr-intl
為您的語言和變體。這將持續到目前的 X 會話(對測試很有用),您可能希望將其添加到.xinitrc
或者.xprofile
它會在登錄時自動載入。- 如果使用 systemd,請執行
sudo localectl --no-convert set-x11-keymap us pc104 altgr-intl altgr:latch
以/etc/X11/xorg.conf.d
更新您的鍵盤配置。- 如果使用桌面環境,可能有辦法告訴它在載入鍵盤佈局時啟動該選項。我知道 GNOME 使用 dconf,您可以在
org.gnome.desktop.input-sources.xkb-options
.警告
中的 XKB 文件
/usr/share/X11/xkb
不能直接編輯,並且在執行系統更新時可能會被覆蓋。更改 XKB 配置的“正確方法”太複雜了,我建議您只需創建一個腳本,在需要時(重新)應用新選項。