Chcę zmienić mapowanie AltGR + Right_Windows, ale nie wiem, jak to zrobić. Bez względu na to, co spróbuję, naciśnięcie prawego klawisza Windows powoduje wyświetlenie klawisza nazwy po naciśnięciu prawego klawisza Alt lub nie.
Oto zawartość testowanego przeze mnie pliku xmodmap. Na mojej klawiaturze 38 to kod „a”, 48 to kod dla aportrophe / doublequote, a 134 to kod dla prawego klawisza Windows.
keycode 38 = 1 2 3 4 5 6 7 8
keycode 48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8
Kiedy naciskam Right_Alt + apostrof, wyświetla 5, ale Right_Alt + a i Right_Alt + Right_Windows dają 1 (zarówno gdy wciśnięty jest prawy Alt, jak i kiedy nie jest), co nie jest tym, czego chciałem.
Mój obecny układ klawiatury jest us(alt-intl)
i prawy alt jest najwyraźniej skonfigurowany do działania jako AltGr / Iso_Level3_Shift. Dane wyjściowe xmodmap -pm
są następujące:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
xev
i nacisnąć różne kombinacje klawiszy, aby sprawdzić, czy sprzęt i do poziomu Xwindows zaczynają się wyróżniać.us(cz_sk_de)
układu klawiatury i xmodmap.Odpowiedzi:
Używanie xmodmap do konfigurowania indywidualnych mapowań kluczy
Czas zapisać wyniki własnych badań.
Pomyślałem, że musiałem coś przeoczyć w Xmodmap i że jest to po prostu niezbyt dobrze udokumentowane i ludzie są zdezorientowani. Okazało się jednak, że projekt X.Org dotyczący XKB i xmodmap jest po prostu głupi.
Epicka porażka: xmodmap
Możesz użyć xmodmap do przedefiniowania istniejących mapowań, o ile mapowania faktycznie istnieją w oryginalnym układzie klawiatury. W przypadku opisanym w pytaniu nie można rozszerzyć działania żadnego klucza na AltGr. Możesz zmieniać tylko klawisze AltGr dla kodów, które już używają AltGr.
Zobacz także: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html
Obejście: Przełącznik trybu
To obejście jest opisane w odpowiedzi przez @ Ned64. Możesz zmienić przypisanie
AltGr
odISO_Level3_Shift
doMode_switch
.Z powodzeniem użyłem następującego wiersza polecenia do mapowania
AltGr
.Wadą jest to, że
xmodmap
zepsuje twój obecny układ klawiatury, ale możesz odtworzyć wszystkie mapowania jeden po drugim, używając już wspomnianego @ Ned64.Obejście: Zmodyfikowany układ klawiatury
Używam
us(cz_sk_de)
jako układu klawiatury i próbowałem go zmodyfikować, dodając konfigurację klawiszy, które chciałem rozszerzyć.(W przekroju
xkb_symbols "cz_sk_de"
z/usr/share/X11/xkb/symbols/us
)Wystarczy zresetować układ klawiatury, aby użyć zmodyfikowanej wersji.
Teraz możesz (1) typ czeskim i angielskim cudzysłowy i elipsy za pomocą kombinacji
,
,.
,Shift
orazAltGr
klucze i / lub (2) przemapować te klucze używającxmodmap
teraz, że są one zdefiniowane.Główną wadą jest to, że
setxkbmap
wydaje się, że nie obsługuje dowolnych lokalizacji dla układów klawiatury i dlatego musisz pisać w konfiguracji systemu zamiast w katalogu domowym.Wniosek
Wydaje się, że jest to przykład nadinżynieryjnej i złej konstrukcji X.Org, w której nawet tak banalna sprawa jak mapowanie kodu klucza i kombinacja modyfikatorów w symbol okazuje się być problemem. Narzędzia wydają się nie zapewniać rozsądnego sposobu zmiany indywidualnych mapowań kluczy w konfiguracji użytkownika bez żadnych skutków ubocznych.
źródło
Krok pierwszy: Spraw, aby AltGr był użyteczny
Dowiedziałem się, że klawisze zmodyfikowane AltGr działają tylko w moim systemie, jeśli ponownie mapuję klawisz AltGr na
Mode_switch
:Jeśli masz inną klawiaturę, może być konieczne zastąpienie jej
108
kodem, sprawdź, wpisującnastępnie użyj tego numeru. (Klucz zwykle wywoływany jest
Alt_R
w systemach, które znam.)Alternatywnie może to również działać, jeśli Alt_R nie jest jeszcze przypisany do czegoś innego:
Twój modyfikator AltGr będzie teraz obsługiwał pozycję 3 (z Shift: 4) na liście modyfikatorów.
Krok drugi: Przypisz klucze zgodnie z wymaganiami
Możesz przypisać warianty AltGr do dowolnego klawisza klawiatury, który chcesz. Jeśli masz inne klucze, które nie odpowiadają teraz żądanemu kodowi, musisz je ponownie przypisać, tak jak inne klucze (te, które testowałeś).
Krok trzeci: Przekształć to w skrypt
Teraz po prostu weź swoje
xmodmap
polecenia i napisz wszystkie (ale tylko) modyfikacje domyślnej klawiatury do pliku - to jest szybsze niż ładowanie pełnej mapy klawiszy. Uruchom ten skrypt raz po każdym logowaniu i za każdym razem, gdy mapa klawiszy zostanie zresetowana przez jakiś proces.Przez wiele lat eksperymentowałem z tym w systemach Solaris, IRIX i Linux i, o ile wiem, jest to jedyne rozwiązanie, dzięki któremu AltGr działa - i działa dobrze dla mnie od ponad 20 lat.
źródło
xmodmap -pm
ixmodmap -pke | grep -w SOMECHANGEDKEY
w tej sytuacji, za pomocą klucza, który już nie działa.xmodmap
zgodnie z twoimi danymi wyjściowymi)xmodmap -pke | grep Alt_R
nie zwraca żadnych wyników w moim systemie. Mój system to Lenovo ThinkPad X230 ze stabilną wersją Gentoo. Próbowałem teżgrep -i
bezskutecznie.us(cz_sk_de)
przestały działać dla mnie. Dlatego ta odpowiedź nie działa dla mnie i nie będzie działać dla wielu innych.Najwyraźniej xmodmap nie odczytuje domyślnego AltGR tak, jak powinien, może być ograniczony do określonych układów klawiatury, być może wszystkie układy są poza USA, tak czy inaczej, prawdziwym problemem jest to, że możesz zastąpić układ klawiatury, niektóre osoby mogą tak naprawdę nie chcą tego robić, ponieważ muszą używać znaków specjalnych w układzie, do którego są przyzwyczajeni (jak skandynawskie układy klawiatury, które mają znaki takie jak ðþæöáúíóóåů itd.), co byłoby utrudnieniem w konfiguracji dla innych układów klawiatury.
Możesz biegać
Aby ponownie powiązać AltGR z czymś, z czym może współpracować xmodmap, i rzeczywiście, po naciśnięciu AltGR zostanie wyświetlone trzecie przypisanie klucza, jednak całkowicie zepsuje oryginalny układ klawiatury, ponieważ żadne skróty klawiszowe AltGR nie będą działać z klawiszem AltGR.
Znalazłem dwa obejścia, które nie psują mojego istniejącego układu klawiatury i nie wymagają przełączania układów , jednym z nich jest powiązanie przełącznika trybu z innym klawiszem.
Idealnym kluczem do tego jest Super_R, który znajduje się tuż obok AltGR, jego kod to 134. Jednak nie wszystkie klawiatury je mają, aw moim przypadku na laptopie też ich nie mam, więc postanowiłem powiązać go z ostatnim pozostały klucz, którego praktycznie nigdy nie używam, Right Control.
Mam amerykański układ klawiatury fizycznej, ale europejską konfigurację układu i brakuje klawisza mniej / większy / pasek (znany również jako ISO_Backslash, chociaż nie jest to rozpoznawane przez samą xmodmap), zwykle obok Z na takich klawiaturach. Związałem to z Menu (135), ale mogłoby to służyć jako alternatywa dla R_Ctrl i Super_R
To chyba brudna poprawka.
Drugie obejście tego problemu zajęło nieco więcej czasu. Korzystanie z sxhkd (alternatywa xbindkeys)
Jeśli dodasz to do ~ / .config / sxhkd / sxhkdrc :
Twój AltGR będzie działał normalnie, ale po jego naciśnięciu przełącza się Mode_switch (trochę jak Caps Lock, ale dla Mode_switch), a wszelkie klawisze xmodmap, które go używają, zostaną zablokowane w trybie AltGR, dopóki nie naciśniesz AltGR ponownie, aby go wyłączyć. Stworzenie skryptu do automatycznego wyłączania go po zwolnieniu klucza powinno być prostą sprawą, ale moje próby zrobienia tego były dość mylące, delikatnie mówiąc.
źródło