Jak mogę automatycznie ładować dostosowania xkb w GNOME?

11

W odpowiedzi na moje pytanie dotyczące dostosowywania kluczowych mapowań w Wayland odkryłem, że xmodmapjest to prawdopodobnie przestarzałe, ale xkb „powinno działać” w Wayland. Niestety, xkb jest znacznie bardziej skomplikowany i odpowiednio gorzej udokumentowany. Udało mi się wypracować zwrotek muszę na podstawie informacji z pytaniem o zamianę CmdiCtrl , następne pytanie caps lock , czytając niektóre z linków w odpowiedzi i od moich plików systemowych, ale nie wiem, jak je stosować w sposób, który można zautomatyzować i nie kolidować z GNOME.

Są to zwrotki, które opracowałem i z powodzeniem przetestowałem 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) ]
    };
};

Umieszczam pierwsze dwa /usr/share/X11/xkb/symbols/macbooki trzeci w shiftcapstym samym katalogu, a wraz z xkbcompetc działają one po załadowaniu na standardowy gb(mac)układ.

Edytuję to, aby dokonać aktualizacji i wyjaśnić moją odpowiedź. Moje dostosowanie funta niedawno przestało działać, więc sprawdziłem, co zmieniło się w GB (Mac) i zdałem sobie sprawę, że muszę dodać , threesuperiordo key <AE03>linii.

Myślę, że evdev.xmljest używany przez gnome-tweak-tool, aby udostępnić te opcje w GUI. Oto co dodałem:

<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
źródło
1
gnome powinien zobaczyć twoje opcje (i uszanować dconfkluczowe wartości poniżej org.gnome.desktop.input-sources), o ile dodasz je do reguł xkb, których używa twój system, tj. do odpowiednich plików, zobacz mój post tutaj
don_crissti
Dzięki. Definiowanie opcji w plikach evdev było brakującym elementem układanki i muszę to zrobić teraz, korzystając z edytora dconf.
realh
W moim systemie (Debian) też znalazłem /usr/share/X11/xkb/rules/evdev.xml. Nie jestem pewien do czego to służy; aplikacja ustawień GNOME zawiesiłaby się podczas otwierania opcji klawiatury, jeśli popełniłem w niej błąd składniowy, ale tak naprawdę nie mogę znaleźć opcji w GUI. Dodałem odpowiednie wiersze po wierszu zawierającym <optionList>. Nie mogę ich tutaj opublikować z powodu ograniczeń w komentarzach.
real
Pozwólcie mi dodać, że xmodmap był przestarzały około 1996 roku, kiedy pojawił się XKB. Tj. Lat przed wynalezieniem waylandu.
Robert Siemer

Odpowiedzi:

1

Odpowiedź don_crissti na drugie pytanie dostarczyła brakujący element układanki. Zdefiniowałem opcje w plikach evdev zgodnie z opisem i dodałem je do org.gnome.desktop.input-sources.xkb-optionsgsettinga. Działa idealnie.

realh
źródło