Wpisujesz używając kombinacji klawiszy?

12

Jestem użytkownikiem Ubuntu 10.04, który szuka sposobu, aby na przykład zmienić mój komputer na znak „+”, kiedy przytrzymuję klawisz Windows(myślę, że jest nazywany Superw świecie Linuksa) i naciskam Kklawisz. Potrzebuję tego do pracy we wszystkich aplikacjach. (Jestem osobą z niepełnosprawnością pisania i muszę dostosować Ubuntu do moich potrzeb.) Dzięki!

Kris Harper
źródło

Odpowiedzi:

15

Ponieważ chcesz ponownie przypisać klucze do wszystkich aplikacji, najlepszą opcją jest użycie xmodmap. Jest elastyczny i bardzo wydajny, ale wymaga wpisania kilku poleceń w terminalu.

Krok 0 - Podejście

Serwer X zarządza klawiaturą i wszystkimi kluczowymi zdarzeniami i tłumaczy je na kody klawiszy dla wszystkich aplikacji.

Podejście polegałoby na zmapowaniu klawisza modyfikującego (takiego jak klawisz Super lub prawy klawisz Alt) jako klawisza „zmiany trybu” i powiedzenia serwerowi X, aby wygenerował różne kody w zależności od tego, czy klawisz jest wciśnięty, czy klawisz Tryb jest wciśnięty, czy nie.

Domyślnie nie ma zdefiniowanego klawisza zmiany trybu, a także wszystkie klawisze są skonfigurowane do generowania tego samego kodu po naciśnięciu z przełącznikiem trybu lub bez niego. Jest to dobre, ponieważ oznacza to, że z wyjątkiem kluczy, które jawnie zastąpisz, żadne inne klucze nie będą zachowywać się inaczej ani wymagać dodatkowej konfiguracji.

Chciałbym jednak, abyś rozważył użycie prawego klawisza Alt jako przełącznika trybu, szczególnie jeśli używasz również compiz, ponieważ niektóre wtyczki do compiz mapują skróty klawiszowe (np. Wybieranie okien, przełącznik zmiany itp.). Jeśli nie lubisz kontrolować compiz za pomocą klawiatury, Super jest w porządku.

W xmodmap superklucze są identyfikowane jako Super_L lub Super_R. Musisz wybrać taki, który będzie używany jako klawisz zmiany trybu. Alternatywnie, prawy klawisz Alt to Alt_R. Możesz to potwierdzić, uruchamiając xev i naciskając niezbędne klawisze na klawiaturze. Zobacz ten post dla kroków.

Krok 1 - Konfigurowanie mapy modyfikatorów

  1. Otwórz terminal ( Applications -> Accesories -> Terminal) i uruchom następujące polecenie, aby utworzyć plik z bieżącymi skrótami klawiszowymi. Wykorzystamy to jako punkt wyjścia.

    xmodmap -pke > curkeys.map
    xmodmap -pm >> curkeys.map
    
  2. Otwórz to w swoim ulubionym edytorze tekstu. gedit curkeys.map &otwiera to w gedit. Pod koniec pliku zobaczysz kilka takich wierszy:

    keycode 253 =
    keycode 254 =
    keycode 255 =
    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),  Alt_R (0x6c),  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)
    
  3. Usuń wiersz zaczynający się od „xmodmap: do 4 ...”

  4. Edytuj mapę modyfikatora, aby wyglądała następująco. Umieść słowo „dodaj” na początku każdego wiersza i wstaw „=” po nazwie modyfikatora. Następnie usuń kody w nawiasach i przecinkach. Zauważ też, że przechodziłem Mode_switchz mod5linii do mod3linii, ponieważ była pusta. Zmodyfikowana tabela powinna wyglądać tak - rzeczywista zawartość może nieznacznie różnić się w twoim przypadku od tych poniżej (zależy od układu klawiatury).

    add shift =      Shift_L  Shift_R
    add lock  =      Caps_Lock
    add control =    Control_L  Control_R
    add mod1    =    Alt_L Meta_L Alt_R 
    add mod2    =    Num_Lock
    add mod3    =    Mode_switch
    add mod4    =    Super_L Super_R Super_L Hyper_L 
    add mod5    =    ISO_Level3_Shift
    
  5. Ponownie zamapuj klucz przełącznika trybu fizycznego. Dodaj taką linię na końcu (w razie potrzeby zamień Super_L na Super_R lub Alt_R).

    keysym Super_L = Mode_switch
    
  6. Usuń nazwę klucza (Super_L) z dowolnej definicji modyfikatora. Dla Super_L oznacza to usunięcie go z linii mod4.

    add mod4    =    Super_R Hyper_L 
    

    Teraz prawy klawisz „Super” nadal będzie działał jak zwykły superklucz, podczas gdy lewy klawisz będzie miał specjalne właściwości.

  7. Teraz musimy ponownie przypisać klawisze, aby wygenerować różne kody bez względu na to, czy zostaną naciśnięte przy wciśniętym Super_L, czy nie. Każda linia w naszym pliku, rozpoczynająca się od, keycodeokreśla 4 skróty klawiszowe dla każdego klawisza, który ma zostać wygenerowany na podstawie tego, czy naciśnięto klawisze Mod1 (klawisze Shift) i klawisz zmiany trybu. ( Link )

    !...........................................................................
    !        Key            Base              Shift           Mode    Mode+Shift
    !---------------------------------------------------------------------------
    keycode  13             = 4               dollar          4       quotedbl
    keycode  14             = 5               percent         5       colon
    keycode  15             = 6               asciicircum     6       comma
    keycode  16             = 7               ampersand       7       period
    ...
    keycode  45             = k               K               k       K
    

    Jeśli chcemy, aby naciśnięcie klawisza Super_L + k wygenerowało klawisz „+”, musimy go zmodyfikować, aby czytać

    keycode  45 = k K plus plus
    

    Ostatni plus mapuje również Shift + Super_L + k na plus, ale można to odwzorować na coś innego. Dla każdego klucza jest dokładnie 1 linia do modyfikacji. Edytuj więcej wierszy, aby ponownie przypisać więcej klawiszy - pozostaw 2 pierwsze wpisy nienaruszone, aby zachować normalne zachowanie po naciśnięciu klawisza.

  8. Zapisz plik i zamknij edytor.

  9. Zainstaluj mapę klawiszy, uruchamiając następujące polecenia w terminalu. Pierwszy konfiguruje go dla tej sesji, drugi czyni go stałym dla przyszłych sesji.

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    
  10. Możesz to natychmiast przetestować, naciskając zmodyfikowane klawisze (na przykład Super_L + k).

Krok 3 - Dodawanie / przeglądanie mapy

Po zainstalowaniu zmodyfikowanej mapy można łatwo dodawać nowe klucze.

  1. Użyj xev, aby znaleźć kody klawiszy i klucze

  2. przetestuj go, uruchamiając to polecenie, aby zmapować klucz:

    xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
    

    Zamień elementy w nawiasach kątowych (jak <code> <base>itp.) Na odpowiednie wartości.

  3. Utwórz kopię zapasową curkeys.mappliku.

  4. Otwórz curkeys.mapi edytuj linię dla odpowiedniego kodu klucza.
  5. Ponownie zastosuj poniższe polecenia (pierwsze nie jest konieczne, jeśli zrobiłeś krok 2)

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    

Uwaga: 1 : Modyfikacje wprowadzone za pomocą skrótów klawiaturowych (np., System -> Preferences -> Keyboard Shortcuts) Wpływają na mapę modyfikatorów i zazwyczaj zostaną utracone przy następnym logowaniu. Więc proszę, unikaj tego.

Uwaga: 2 : czasami otrzymuję takie komunikaty o błędach podczas korzystania z tej metody. Nie wiem, co to oznacza, jednak są one na ogół nieszkodliwe.

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  118 (X_SetModifierMapping)
Value in failed request:  0x17
Serial number of failed request:  263
Current serial number in output stream:  263

Szczegółowa pomoc dla xmodmap jest dostępna tutaj .

koushik
źródło
masz szczęście z tym? Jeśli to nie pomaga lub w jakikolwiek sposób niejasny jest komentarz, poprawię go i uczynię bardziej użytecznym.
koushik
1
Proszę pamiętać, że w Linux Mint 17 Xfce (lub przynajmniej tam), to musi być ~/.Xmodmap, ~/.xmodmapzostanie zignorowane.
zbr
2
Nie zapomnij o clearkluczach, które są resetowane zgodnie z unix.stackexchange.com/a/4526/2512
Andy