Mapowanie kluczy w systemie Linux

2

Chciałbym zmienić układ (mapowanie) klawiatury Lenovo ThinkPad (której nienawidzę), aby była podobna do Acer TravelMate 8000 (którą kocham).

Oznacza to głównie:

  • Zamień Fn i opuść Ctrl
  • Tab-left działa jak PgUp
  • Fn '+ Tab-left, aby zachowywać się jak Dom
  • Tab-prawo, aby zachowywać się jak PgDown
  • Fn '+ Tab-prawo, by zachowywać się jak End
  • PgUp działa jak Usuń
  • Strona główna zachowuje się jak Wstaw

Próbowałem xevzobaczyć kody.
Znalazłem tę listę symboli: http://cs.gmu.edu/~sean/stuff/n800/keyboard/keysymdef.h
Oto mój wynik:

xmodmap -e 'keycode 112 = XF86Back'     # Remap PgUp to TabPrev
xmodmap -e 'keycode 117 = XF86Forward'  # Remap PgDn to Tabnext
xmodmap -e 'keycode 166 = Prior Home XF86Back'        # Remap TabPrev to PgUp.
xmodmap -e 'keycode 167 = Next End XF86Forward'       # Remap TabNext to PgDn.
xmodmap -e 'keycode 151 = Control_L'    # Remap FN to be Ctrl.
xmodmap -e 'keycode  37 = XF86WakeUp'   # Remap Ctrl to be FN.
xmodmap -e 'keycode  94 = Shift_L'      # Remap stupid left |\*& to be Shift too.

Jednak nie jest to dokładnie to, czego potrzebuję, ponieważ mapuje Shift + Tab * do strony głównej, co uniemożliwia mi użycie kombinacji Shift+ Home'(do zaznaczania tekstu) i działa tylko w niektórych aplikacjach (np. Nie działa w Firefoksie, aby przejść na górę).

Więc - jak mam to zmapować?


Aktualizacja: Użyłem setkeycodesi znalazłem te skancody:

                 Press            Release
TabLeft  - 158   ^[[5~0xe0 0x6a   0xe0 0xea 
TabRight - 159   ^[[6~0xe0 0x69   0xe0 0xe9
PgUp:            0xe0 0x49        0xe0 0xc9 
PgDn:            0xe0 0x51        0xe0 0xd1 

Ctrl:            0x1d             0x9d 
FN:              0xe0 0x63        0xe0 0xe3

Aktualizacja: Odkryłem również, że dumpkeyspokazuje interesujące informacje. Podobnie jak aliasy ciągów dla niektórych kluczy; np. ^[[5~pokazany przez showkey -sjest tam zdefiniowany.


Aktualizacja: próbowałem setkeycodes:

sudo setkeycodes 0xE063  29  ##  Fn   to Ctrl
sudo setkeycodes 0x1d   143  ##  Ctrl to Fn
sudo setkeycodes 0x56    42  ##  |\*& to Shift

showkeys-k pokazuje nadchodzące odpowiednie kody, ale nadal nie działają tak - np. Ctrl+Tnie otwiera karty w FF itp.
Po cofnięciu zmian wszystko działa jak poprzednio.

sudo setkeycodes 0xE063 143  ##  Fn   to Ctrl
sudo setkeycodes 0x1d    29  ##  Ctrl to Fn

Za czym tęsknię

Ondra Žižka
źródło

Odpowiedzi:

2

Znalazłem się w tym poście, szukając statusu problemu, że kody klucza> 128 nie mogą być mapowane jako klucz modyfikujący. Ostatnim razem, gdy to sprawdziłem, był to mój powód, dla którego nie mogłem zamienić fn / ctrl.

sdf
źródło