jak powiązać AltGr z <Ctrl> + <Alt>

11

Próbuję utworzyć linuksowy odpowiednik ergonomicznego układu klawiatury telugu o nazwie Sarala (Hard la). Do tej pory udało mi się zmapować wszystkie klucze. Układ używa następujących kombinacji klawiszy dla różnych poziomów.

None (Base): Level1
Shift: Level2
Ctrl + Alt: Level3
Ctrl + Alt + Shift:Level4

Gdzie jako Linux używa następujących poziomów dla różnych poziomów.

None (Base): Level1
Shift: Level2
RAlt: Level3
RAlt + Shift:Level4

Aby móc dopasować kombinacje klawiszy z moim układem, musiałbym zmapować AltGrza pomocą Ctrlznaku + Alt. Pomyślnie przeszukałem różne pliki w /usr/share/X11/xkb/. Czy jakieś ciało wie, jak mogę związać ISO_Level3_Shiftz Ctrl+ Alt?

key <RALT>  {
    symbols[Group1]= [ Mode_switch, Multi_key  ],
    virtualMods= AltGr
};

Jeśli chcesz spojrzeć na układ, jest tutaj

ShaggyInjun
źródło
2
spójrz tutaj askubuntu.com/questions/254424/…
αғsнιη
2
Dziękuję, to bardzo pouczające, ale mówi o wszystkim innym oprócz xkbkonfiguracji.
ShaggyInjun
Możesz przejrzeć tę wiki z arch linux wiki i zapoznać się z częścią Alt i Altgr (poziom 3). Nie jestem pewien, czy to ci pomoże, ale wydaje się, że zawiera wiele informacji o XKB
No Time
Próbowałem tego, xkb nie ładuje się z nie tak opisowym błędem. Błąd nie jest przydatny, ale mogę go później załączyć.
ShaggyInjun

Odpowiedzi:

6

Musisz zdefiniować nowy typ xkb. Przykłady możesz zobaczyć w swoim katalogu xkb / types (zwykle /usr/share/X11/xkb/types). Tam możesz zdefiniować dowolne kombinacje modyfikatorów, aby uzyskać różne poziomy przesunięcia. W przypadku swojego problemu możesz użyć czegoś takiego:

type "C_A_to_L3" {
    modifiers = Control+Alt+Shift;
    map[None] = Level1;
    map[Shift] = Level2;
    map[Control+Alt] = Level3;
    map[Control+Alt+Shift] = Level4;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
};

Następnie w pliku symboli możesz ustawić ten typ jako domyślny lub ustawić dla każdego klucza, jaki to typ. Zwróć uwagę, że typ musi znajdować się w pliku w katalogu typów, a definicja klucza w pliku w katalogu symboli - xkb używa ścisłej hierarchii systemu plików, aby znaleźć każdy składnik.

Zrobiłem sporo hakowania na układach klawiatury, aby zbudować własny układ ( https://github.com/willghatch/hatchak ), który przeszedł różne iteracje, w których eksperymentowałem z dziwnymi rzeczami. XKB bywa czasem dość drobiazgowy i dziwny, ale wciąż jest to najbardziej konfigurowalny system klawiatury, jaki do tej pory widziałem. Najlepsze referencje, jeśli masz więcej problemów, to:

[edytuj: oryginalne linki są obecnie wyłączone, ale na szczęście istnieje Archive.org]

https://web.archive.org/web/20150722164820/http://www.charvolant.org/~doug/xkb/html/index.html

i

https://web.archive.org/web/20190419170426/http://pascal.tsu.ru/en/xkb/

Uwaga - choć jest to najlepsza dokumentacja, jaką znalazłem, pozostawia wiele mrocznych przypadków. Powodzenia.

William Hatch
źródło
Myślę, że twój pomysł jest naprawdę przydatny, ale naprawdę staram się używać utworzonego typu w plikach symboli tak domyślnie, jak wspomniałeś. Pliki symboli, które mam na komputerze, są dość długie i nie widzę żadnej linii, która wyglądałaby jak definicja typu domyślnego.
Dave
1
Można zdefiniować ustawienie domyślne dla sekcji w pliku symboli, ustawiając key.type. Prawdopodobnie możesz zobaczyć przykład na /usr/share/X11/xkb/symbols/srvr_ctrl(lub w innym miejscu), w sekcji „no_srvr_keys”. Oto, co mam: xkb_symbols "no_srvr_keys" {key.type = "TWO_LEVEL"; klawisz <FK01> {[F1, F1]}; klawisz <FK02> {[F2, F2]}; <etc ...>};
William Hatch,
Dzięki za szybką odpowiedź. Myślę, że będę w stanie to zastosować. Z góry dziękuję.
Dave
To tylko informacja zwrotna dla wszystkich, którzy wracają na tę stronę jeszcze długo później. Dla mnie to podejście działało teraz z nowo zainstalowaną Fedorą. Z jakiegoś (dla mnie) nieznanego powodu nie działało to z Mint, kiedy napisałem ten komentarz powyżej. Ale teraz działa i oszczędza mi dużo czasu.
Dave
-1

Wydaje mi się, że potrzebujesz układu klawiatury obsługującego AltGr, więc możesz po prostu zmienić skrót w „Klawiatura> Skróty> Klawisz alternatywnych znaków” w menu konfiguracji. Zwykle można to zobaczyć, zmieniając układ, który „ma martwe klawisze” lub jest napisany „Martwe klawisze AltGr”


źródło
Nie proszę o osobisty użytek, muszę wysłać układ. Niestety to zła odpowiedź. Dziękuję jednak.
ShaggyInjun