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.