新增自訂 setxkbmap 選項

新增自訂 setxkbmap 選項

使用 setxkbmap 交換 Left Shift 和 Left Control描述如何與 xkbcomp 交換一些修飾鍵。但是,我只想添加自訂 setxkbmap 選項,而不是使用具有完整佈局定義的 xkbcomp。與 類似setxkbmap -option local:swap_lwin_lctrl,我想交換右 win 和右控制,而不修改 /usr/share/X11/xkb 中的現有檔案(這將在軟體包升級時被覆蓋)。

答案1

我有同樣的問題。從文件中,人們可以猜測正確的語法是這樣的:

$ setxkbmap -I$HOME/.config/xkb -option mine:accent

注意:~不適用於該-I選項

〜/.config/xkb/symbols/azerty_altgr

partial default
xkb_symbols "accent" {
    include "level3(ralt_switch)"
    key <AE02>  { [  NoSymbol, NoSymbol, eacute,      NoSymbol ] };
    key <AE07>  { [  NoSymbol, NoSymbol, egrave,      NoSymbol ] };
    key <AE09>  { [  NoSymbol, NoSymbol, asciicircum, NoSymbol ] };
    key <AE10>  { [  NoSymbol, NoSymbol, agrave,      NoSymbol ] };
};

或您擁有的任何符號文件

〜/.config/xkb/rules/evdev

! option        =   symbols
  mine:accent   =   +azerty_altgr(accent)

不幸的是,它不起作用。


我找到的唯一解決方案如下:使用上述相同的文件。使用設定所有本機選項setxkbmap -option caps:swapescape,whatever。然後 :

$ setxkbmap -print > tempfile.txt

並編輯tempfile.txt以在行中添加您的自訂選項xkb_symbols

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+fr:2+inet(evdev)+capslock(swapescape)+azerty_altgr(accent)"  };
    xkb_geometry  { include "pc(pc104)" };
};

最後:

xkbcomp -I$HOME/.config/xkb tempfile.txt $DISPLAY

它可以推廣到任意數量的選項。根據以下規定,該解決方案已被棄用Archlinux 維基

相關內容