カスタム setxkbmap オプションの追加

カスタム setxkbmap オプションの追加

setxkbmapを使用して左シフトと左コントロールを入れ替えるでは、xkbcomp を使用して一部の修飾キーを交換する方法について説明します。ただし、完全なレイアウト定義を持つ xkbcomp を使用する代わりに、カスタム setxkbmap オプションを追加したいと思います。 と同様にsetxkbmap -option local:swap_lwin_lctrl、/usr/share/X11/xkb 内の既存のファイルを変更せずに (パッケージのアップグレード時に上書きされる)、右の win と右の control を交換したいと思います。

答え1

私も同じ問題を抱えています。ドキュメントから、正しい構文は次のようになると推測できます。

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

注:オプション~では動作しません-I

~/.config/xkb/シンボル/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/ルール/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 ウィキ

関連情報