Próbuję ponownie mapować klawiaturę, aby emacs był użyteczny. Moja ergonomiczna klawiatura umieszcza pojedynczy klawisz Control na izolowanej 4-klawiszowej wyspie z lewej strony.
System operacyjny to ściśnięcie Debiana.
Oto linie, do których próbuję się zapisać xmodmap
, umieszczam je w pliku ~ / .Xmodmap:
jasne sterowanie wyczyść Mod1 ! Klawisze Alt są oznaczone „Opcją” na mojej klawiaturze, ! użycie xev pokazuje je, aby wysłać odpowiednio klucze Alt_L i Alt_R keysym Alt_L = Control_L keysym Alt_R = Control_R ! Klucze Super_L i Super_R to klucze Windows keysym Super_L = Alt_L keysym Super_R = Alt_R dodaj Control = Control_L Control_R dodaj Mod1 = Alt_L Alt_R
Moim celem jest, aby moje Altklawisze Option (aka ) zachowywały się jak klawisze Control i aby moje klucze Windows (aka Super) zachowywały się podobnie Alt.
Oto kody klawiszy i klucze generowane przez xev dla tych kluczy. Uwaga: moja klawiatura (ergonomiczna klawiatura Goldtouch) ma tylko jeden klawisz kontrolny.
kod klucza 37 (keyym 0xffe3, Control_L) kod klucza 64 (keyym 0xffe9, Alt_L) kod klucza 133 (keyym 0xffeb, Super_L) kod klucza 134 (keyym 0xffec, Super_R) kod klucza 108 (keyym 0xffea, Alt_R)
Oto, co wyświetla xev podczas działania xmodmap .Xmodmap
Zdarzenie MappingNotify, numer seryjny 34, syntetyczny NO, okno 0x0, żądanie MappingKeyboard, first_keycode 204, liczba 1 Zdarzenie MappingNotify, numer seryjny 34, syntetyczny NO, okno 0x0, żądanie MappingKeyboard, first_keycode 64, liczba 1 Zdarzenie MappingNotify, numer seryjny 34, syntetyczny NO, okno 0x0, żądanie MappingKeyboard, first_keycode 108, liczba 1 Zdarzenie MappingNotify, numer seryjny 34, syntetyczny NO, okno 0x0, żądanie MappingKeyboard, first_keycode 206, liczba 1 Zdarzenie MappingNotify, numer seryjny 34, syntetyczny NO, okno 0x0, żądanie MappingKeyboard, first_keycode 133, liczba 1 Zdarzenie MappingNotify, numer seryjny 34, syntetyczny NO, okno 0x0, żądanie MappingKeyboard, first_keycode 134, liczba 1
A oto błąd zwrócony przez xmodmap
:
X Błąd nieudanego żądania: BadValue (parametr liczby całkowitej poza zakresem do działania) Główny kod operacji nieudanego żądania: 118 (X_SetModifierMapping) Wartość w nieudanym żądaniu: 0x17 Numer seryjny nieudanego żądania: 17 Aktualny numer seryjny w strumieniu wyjściowym: 17
jakieś sugestie, jak to rozwiązać?
xev
uruchomić się w terminalu, a następniexmodmap
w innym terminalu. Powinieneś zobaczyć kilkaMappingNotify
zwrotek zxev
, dodaj je do swojego pytania. Ponadto wxev
oknie naciśnij różne zaangażowane klawisze i powiedz nam, z jakim kodem klucza i kluczem odpowiadają (część „keycode 37 (keysym 0xffe3, Control_L)” na wyjściu xev).Odpowiedzi:
Zostało to już zgłoszone jako błąd Debiana # 564327 , błąd Debiana # 565279 , błąd Ubuntu # 524774 i błąd FreeDesktop 20145 . Do dyskusji o błędach FreeDesktop dołączona jest łatka źródłowa. Istnieje kilka propozycji obejścia w Bugu dyskusji Ubuntu, w szczególności w
.Xmodmap
obejściu .źródło
Patrząc na obejście połączone przez Gilesa, działało to dla mnie:
Moje klawisze opcji działają teraz jak klawisze Control, a moje klawisze Windows jak klawisze Alt.
źródło
Problem pojawia się, gdy próbujesz dodać klucz do modyfikatora, który jest już dodany do innego klawisza modyfikatora. Ważne jest, aby wiedzieć, że jeśli dodasz klucz do modyfikatora, wszystkie inne klucze, które towarzyszą temu kluczowi w przypadku zostaną dodane również do tego modyfikatora.
Na przykład:
może spowodować
ponieważ masz coś takiego
w ~ / .Xmodmap (Zobacz bieżący kod klucza do mapowania kluczy za pomocą
xmodmap -pke
)co spowoduje pojawienie się błędu BadValue podczas próby wykonania czegoś podobnego
ponieważ Caps_Lock jest już dodany do modyfikatora mod5.
źródło
To kolejne rozwiązanie twojego problemu, chociaż tak naprawdę nie odpowiada na twoje pytanie. Edytuj plik xorg.conf, wstawiając do sekcji „InputDevice”:
źródło