Hinzufügen benutzerdefinierter setxkbmap-Optionen

Hinzufügen benutzerdefinierter setxkbmap-Optionen

Verwenden Sie setxkbmap, um die linke Umschalttaste und die linke Strg-Taste zu vertauschen.beschreibt, wie einige Modifikatortasten mit xkbcomp ausgetauscht werden. Ich möchte jedoch einfach eine benutzerdefinierte setxkbmap-Option hinzufügen, anstatt xkbcomp mit einer vollständigen Layoutdefinition zu verwenden. Ähnlich wie möchte setxkbmap -option local:swap_lwin_lctrlich die rechte Win- und die rechte Control-Taste austauschen, ohne vorhandene Dateien in /usr/share/X11/xkb zu ändern (die beim Paket-Upgrade überschrieben würden).

Antwort1

Ich habe das gleiche Problem. Aus dem Dokument könnte man schließen, dass die korrekte Syntax etwa so lautet:

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

Hinweis: ~funktioniert nicht mit der -IOption

mit

~/.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 ] };
};

oder welche Symbole-Datei Sie auch immer haben und

~/.config/xkb/rules/evdev

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

Leider funktioniert es nicht.


Die einzige Lösung, die ich gefunden habe, ist die folgende: Verwenden Sie dieselben Dateien wie oben beschrieben. Setzen Sie alle nativen Optionen mit setxkbmap -option caps:swapescape,whatever. Dann:

$ setxkbmap -print > tempfile.txt

und bearbeiten Sie tempfile.txt, um Ihre benutzerdefinierte Option in der xkb_symbolsZeile hinzuzufügen:

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)" };
};

und schließlich:

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

Es kann für eine beliebige Anzahl von Optionen verallgemeinert werden. Diese Lösung ist veraltet gemäßArchlinux-Wiki.

verwandte Informationen