Come posso caricare automaticamente le personalizzazioni xkb in GNOME?


11

In seguito alla mia domanda sulla personalizzazione delle mappature dei tasti in Wayland, ho scoperto che xmodmapè apparentemente deprecato, ma xkb "dovrebbe funzionare" in Wayland. Sfortunatamente, xkb è molto più complicato e corrispondentemente più scarsamente documentato. Sono riuscito a elaborare le stanze di cui ho bisogno in base alle informazioni da una domanda sullo scambio CmdeCtrl , un'altra domanda di blocco maiuscole , leggendo alcuni dei collegamenti nelle risposte e dai miei file di sistema, ma non so come applicarli in un modo che può essere automatizzato e non in conflitto con GNOME.

Queste sono le stanze che ho elaborato e testate con successo 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) ]
    };
};

Ho inserito i primi due /usr/share/X11/xkb/symbols/macbooke il terzo nella shiftcapsstessa directory e con xkbcompetc funzionano quando caricati sopra il gb(mac)layout standard .

Sto modificando questo per fare un aggiornamento e chiarire la mia risposta. Di recente la mia personalizzazione della sterlina ha smesso di funzionare, quindi ho controllato cosa era cambiato in gb (mac) e mi sono reso conto che dovevo aggiungere , threesuperioralla key <AE03>linea.

Penso che evdev.xmlsia usato da gnome-tweak-tool per rendere disponibili queste opzioni nella GUI. Ecco cosa ho aggiunto:

<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>

1
gnome dovrebbe vedere le tue opzioni (e onorare i dconfvalori chiave sotto org.gnome.desktop.input-sources) fintanto che le aggiungi alle regole xkb che il tuo sistema sta usando, cioè ai file giusti, vedi il mio post qui
don_crissti

Grazie. Definire le opzioni nei file evdev era il pezzo mancante del puzzle, e ce l'ho per fare quello che voglio ora, usando dconf-editor.
realh,

Sul mio sistema (Debian) ho anche trovato /usr/share/X11/xkb/rules/evdev.xml. Non sono sicuro a cosa serva; l'app delle impostazioni di GNOME si arresterebbe in modo anomalo quando si aprivano le opzioni della tastiera se avessi fatto un errore di sintassi, ma in realtà non riuscivo a trovare le opzioni nella GUI. Ho aggiunto le righe appropriate dopo la riga contenente <optionList>. Non posso pubblicarli qui a causa delle limitazioni sui commenti.
realh,

Consentitemi di aggiungere che xmodmap è stato deprecato intorno al 1996, quando è arrivato XKB. Cioè anni prima dell'invenzione di Wayland.
Robert Siemer,

Risposte:


1

La risposta di don_crissti all'altra domanda ha fornito il pezzo mancante del puzzle. Ho definito le opzioni nei file evdev come descritto e le org.gnome.desktop.input-sources.xkb-optionsho aggiunte al gsetting. Funziona perfettamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.