Jak dostosować mapowania klawiatury za pomocą Wayland


20

Używam Linuksa na Macbooku z klawiaturą UK / GB i dostosowuję mapę klawiszy, aby rozwiązać niektóre problemy, które powoduje dziwny układ klawiatury Apple. Ja xmodmapto robię. Chciałbym wypróbować Waylanda, ale xmodmapto nie działa. Jak mogę osiągnąć podobny wynik w Wayland? .XmodmapWykorzystanie pliku I zawiera następujące elementy:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Wiersz 1: na klawiaturach w Wielkiej Brytanii Shift- 3jest £, więc # zwykle ma swój własny klucz w pobliżu Return. Ale na Macu # jest uzyskiwane za pomocą Altgr- 3. Jako programista używam # znacznie więcej niż £, więc ta linia zamienia je. Wybieranie układu w USA również to osiąga, ale robi to w Linuksie również zamienia niektóre inne często używane klucze, podczas gdy w OS X na te inne klucze nie ma wpływu US / UK.

Linie 2-5: Ustaw odpowiedni Cmdklawisz tak Ctrl, aby działał jak Prawy , ponieważ ta klawiatura nie ma fizycznego prawego Ctrlklawisza.

Wiersz 6: Działa CapsLocktylko wtedy, gdy naciśniesz go Shift. Nie dotyczy komputerów Mac, powinna to być standardowa opcja dla wszystkich systemów operacyjnych i klawiatur.


Jestem w połowie drogi: najwyraźniej Wayland używa xkb, a xmodmap i tak jest przestarzałe w X. Niestety xkb jest znacznie bardziej skomplikowany, a GNOME nigdy nie uważał, że użytkownicy mogą potrzebować go dostosować, więc zadałem drugie pytanie .
realh

Odpowiedzi:


11

Niestety modyfikacja systemowej bazy danych XKB /usr/share/X11/xkbjest jedynym sposobem; z drugiego pytania wygląda na to, że ta część działa.

Ograniczenie wynika głównie z niedojrzałości Waylanda i nadzoru projektowego w XKB.

  • Narzędzia takie jak setxkbmapi xkbcompzapewniają -Iopcję dodawania zdefiniowanej przez użytkownika bazy danych do wyszukiwania (np. ~/.xkbLub ~/.config/xkbz plikami i podkatalogami ułożonymi jak systemowa baza danych). Te narzędzia współdziałają z serwerem X, więc mogą być przydatne do skonfigurowania Xwaylandwarstwy kompatybilności do uruchamiania aplikacji X w Wayland. Ale obecnie nie mówią protokołów Waylanda.

  • Protokoły Waylanda wciąż dojrzewają. Obecnie wydaje się, że input-methodi text-inputprotokoły są najbardziej istotne i oba są niestabilne. Nie wspominaj też nic o zmianie zdefiniowanej mapy klawiszy; szczegóły te pozostawiono kompozytorowi.

  • Zarówno GNOME, jak i KDE zapewniają demony ustawień obsługi klawiatury, które powinny obsługiwać systemowe opcje XKB, w tym zmieniać w locie. Według mojej najlepszej wiedzy nie ma sposobu, aby powiedzieć o dostosowaniach użytkowników. O ile mi wiadomo, Weston i inni kompozytorzy polegają na plikach konfiguracyjnych lub zmiennych środowiskowych, aby ustawić opcje XKB podczas uruchamiania i nie zapewniają innego sposobu ich zmiany niż wyjście i ponowne uruchomienie.

  • Nawet w samym XKB nie jest to w pełni obsługiwane. Twój niestandardowy plik symboli może zawierać includeinne pliki symboli systemowych. Ale obecnie nie ma includefunkcjonalności plików reguł XKB, więc nawet gdybyś miał narzędzie, które porozmawiałoby z kompozytorem Wayland i sprawdziłoby twoje osobiste dostosowania, musiałbyś ręcznie dołączyć wszystkie reguły, których chcesz użyć (tj. Skopiować rules/evdev*z systemu XKB i zmodyfikuj go). libxkbcommonma otwarty problem na ten temat i powiązany błąd .


1
Powinienem był wyjaśnić, że teraz prawie to rozwiązałem. Powiedziałem to w innym pytaniu, ale informacja jest nieco rozłączna. Zamierzam udokumentować to jaśniej, kiedy będę mógł dodać blog do mojej witryny, wtedy będę musiał pamiętać, aby link do niego tutaj.
realh

jasne, ale wciąż było to pytanie bez odpowiedzi, więc próbowałem zająć się .Xmodmapaspektem ekwiwalentu Waylanda .
donkiszot

3
Udokumentowałem to teraz szczegółowo w poście na blogu .
realh

5

Z powodzeniem korzystam z narzędzi przechwytujących dla systemu Linux i wiem o osobach, które produkują inne wtyczki do swoich niestandardowych mapowań . caps2esc to pierwsza wtyczka typu proof-of-concept, której używam na co dzień i działa zarówno na X, jak i Wayland. Narzędzie jest nieco niższe niż zwykłe oprogramowanie do mapowania, ale dość elastyczne, a mój plan na następną wtyczkę to uogólnione narzędzie do mapowania nagrań.

Oświadczenie: Jestem autorem.


Narzędzia przechwytywania wyglądają naprawdę interesująco! Dzięki za twoją pracę!
balu,

1
Nie jestem pewien, co sądzę o uruchamianiu całej klawiatury z poziomu skryptu python
Ace.C

4

Dla tych, którzy przybędą tutaj w 2018 r. (Ubuntu 17.10), najbardziej krytyczną część tego można osiągnąć za pomocą narzędzia GNOME Tweak.

Gnome Tweak Tool> Klawiatura i mysz> Dodatkowe opcje układu> Ctrl jest mapowany na klawisze Win (i zwykłe klawisze Ctrl).


2
Czy użycie „Gnome Tweak Tool” (cokolwiek to jest) ustawia nowe odwzorowania również dla innych menedżerów / środowisk / powłok systemu Windows?
Mali Remorker

Narzędzie gnome Tweak nie może ponownie mapować Caps Lock.
andyn

@andyn my gnome-tweaks-3.34.0-1.fc31.noarchcan remap Caps Lock - np. „Caps Lock to także Ctrl”, „Make Caps Lock to dodatkowy Esc”, „Caps Lock as Ctrl” i wiele innych.
maxschlepzig

2

Ta odpowiedź ma taki sam pomysł jak odpowiedź quickotic, ale tylko z bardziej szczegółowym przykładem:

Gnome Tweaks ma listę 20 lub 30 ulepszeń klawiatury, które możesz wykonać za pomocą xkb. Czasami możesz znaleźć poprawkę, której szukasz domyślnie. W moim przypadku chciałem zamienić klawisz Printscreen za pomocą Menu.

Jedyną opcją modyfikacji klucza printscr dostępnego przez xkb było zastąpienie go Win_R. Gunnar Hjalmarsson w tym wątku zasugerował mi, że modyfikuję modyfikacje xkb, aby zamiast tego printscr / win_r zrobił menu printscr /. Wspólnie wypracowaliśmy rozwiązanie i zamierzam go ponownie przesłać tutaj:

W terminalu wpisz:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Na dole pliku znajdziesz:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Usuń tę sekcję i zastąp ją następującą:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Aby usunąć w nano, użyj klawisza Backspace (podświetlanie i usuwanie nie działa). Aby wkleić, użyj shift-ctrl-v. Aby wyjść i zapisać, naciśnij ctrl-x, wybierz tak, aby zastąpić i naciśnij enter.

Restart. W Gnome / Ubuntu Przejdź do gnome-tweak-tools W narzędziach do ulepszania przejdź do sekcji Klawiatura i mysz, naciśnij przycisk Opcje dodatkowych układów i rozwiń zachowanie klawisza Alt / Win. Wybór opcji na samym dole: Win jest mapowany na printscr (pamiętaj, że zmodyfikowaliśmy to zachowanie, aby zamienić drukowanie i Menu zamiast print i Win). (Jestem pewien, że istnieje sposób na włączenie modowanej opcji xkb w KDE, ale nie używam jej, więc nie mogę podać dokładnej procedury).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.