Comment puis-je charger automatiquement les personnalisations xkb dans GNOME?

11

Suite à ma question sur la personnalisation des mappages de clés dans Wayland, j'ai découvert que cela xmodmapétait apparemment obsolète, mais xkb "devrait fonctionner" dans Wayland. Malheureusement, xkb est beaucoup plus compliqué et en conséquence plus mal documenté. J'ai réussi à travailler les strophes dont j'ai besoin à partir des informations d' une question sur l' échange CmdetCtrl , une autre question verrouillage des majuscules , lire certains des liens dans les réponses et de mes fichiers système, mais je ne sais pas comment les appliquer d'une manière qui peut être automatisée et ne pas entrer en conflit avec GNOME.

Ce sont les strophes avec lesquelles j'ai travaillé et testé avec succès xkbcomp.

partial alphanumeric_keys
xkb_symbols "pound" {
    // Put sterling on RAlt-3 and numbersign on Shift-3.
    key <AE03> { [ 3, numbersign, sterling, threesuperior ] };
};

// Make right cmd key act as ctrl
partial modifier_keys
xkb_symbols "rcmdctrl" {
    key <RWIN> { [ Control_R ] };
    modifier_map Control { <LCTL>, <RWIN> };
    modifier_map Mod4 { <LWIN> };
};

partial modifier_keys
xkb_symbols "shiftcaps" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ VoidSymbol, Caps_Lock ],
        actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
    };
};

J'ai mis les deux premiers /usr/share/X11/xkb/symbols/macbooket le troisième dans shiftcapsle même répertoire, et avec xkbcompetc. ils fonctionnent lorsqu'ils sont chargés au-dessus de la gb(mac)mise en page standard .

J'édite ceci pour faire une mise à jour et clarifier ma réponse. Ma personnalisation du livre a récemment cessé de fonctionner, j'ai donc vérifié ce qui avait changé dans gb (mac) et j'ai réalisé que je devais ajouter , threesuperiorà la key <AE03>ligne.

Je pense que evdev.xmlgnome-tweak-tool est utilisé pour rendre ces options disponibles dans l'interface graphique. Voici ce que j'ai ajouté:

<group allowMultipleSelection="true">
  <configItem>
    <name>macbook</name>
    <description>Macbook customisations</description>
  </configItem>
  <option>
    <configItem>
      <name>macbook:pound</name>
      <description>Hash on Shift-3, Sterling on AltGr-3</description>
    </configItem>
  </option>
  <option>
    <configItem>
      <name>macbook:rcmdctrl</name>
      <description>Right Cmd key acts as Ctrl</description>
    </configItem>
  </option>
</group>
<group allowMultipleSelection="false">
  <configItem>
    <name>shiftcaps</name>
    <description>Caps Lock with Shift</description>
  </configItem>
  <option>
    <configItem>
      <name>shiftcaps:shiftcaps</name>
      <description>Caps Lock requires Shift to toggle</description>
    </configItem>
  </option>
</group>
realh
la source
1
gnome devrait voir vos options (et respecter les dconfvaleurs clés ci-dessous org.gnome.desktop.input-sources) tant que vous les ajoutez aux règles xkb que votre système utilise, c'est-à-dire aux bons fichiers, voir mon article ici
don_crissti
Merci. La définition des options dans les fichiers evdev était la pièce manquante du puzzle, et je dois faire ce que je veux maintenant, en utilisant dconf-editor.
Realh
Sur mon système (Debian), j'ai également trouvé /usr/share/X11/xkb/rules/evdev.xml. Je ne sais pas à quoi ça sert; l'application des paramètres GNOME se bloquerait lors de l'ouverture des options du clavier si j'y faisais une erreur de syntaxe, mais je ne trouve pas réellement les options dans l'interface graphique. J'ai ajouté des lignes appropriées après la ligne contenant <optionList>. Je ne peux pas les poster ici en raison des limitations des commentaires.
Realh
Permettez-moi d'ajouter que xmodmap était obsolète vers 1996 lorsque XKB est apparu. C'est-à-dire des années avant l'invention du wayland.
Robert Siemer

Réponses:

1

La réponse de don_crissti à l'autre question a fourni la pièce manquante du puzzle. J'ai défini les options dans les fichiers evdev comme décrit et les org.gnome.desktop.input-sources.xkb-optionsai ajoutées au gsetting. Cela fonctionne parfaitement.

realh
la source