By ułatwić sobie wprowadzanie często używanych znaków jak np. polskich cudzysłowów "„”", czy też pauzy „—”, można je podpiąć pod dane kombinacje klawiszy.
Porada ta działa pod X-ami i wymaga polecenia xmodmap.
Na początek warto jest poznać oryginalne mapowanie klawiatury. W tym celu należy użyć polecenia xmodmap z przełącznikiem -pke:
$ xmodmap -pke
Na wyjście powinniśmy dostać coś w tym rodzaju:
[…] keycode 24 = q Q at Greek_OMEGA at Greek_OMEGA keycode 25 = w W lstroke Lstroke lstroke Lstroke keycode 26 = e E eogonek Eogonek eogonek Eogonek keycode 27 = r R paragraph registered paragraph registered […]
Linia jest zbudowana w następujący sposób:
keycode
24
=
q
Q
at
Greek_OMEGA
at
Greek_OMEGA
Gdy chcemy poznać kod danego klawisza, wygodnie jest posłużyć się poleceniem xev:
$ xev
Po uruchomieniu pojawi się małe okienko z białym tłem oraz czarnym kwadratem wewnątrz, oraz na konsoli zostanie wypisane dużo tekstu. Teraz naciskamy klawisz którego kod chcemy poznać. Na konsolę powinno zostać wypisane coś w tym rodzaju:
KeyPress event, serial 26, synthetic NO, window 0x2200001, root 0xcf, subw 0x0, time 20244051, (602,451), root:(607,522), state 0x10, keycode 24 (keysym 0x71, q), same_screen YES, XLookupString gives 1 bytes: (71) "q" XmbLookupString gives 1 bytes: (71) "q" XFilterEvent returns: False
Poszukiwanym fragmentem, jest w powyższym wypadku trzecia linia, a dokładniej napis keycode 24. Możemy go od razu użyć we fragmencie przed znakiem równości.
Listę kodów znaków (np. Greek_OMEGA, czy Eogonek) obsługiwanych przez xmodmap można znaleźć np. na Wiki serwisu LinuxQuestions.org.
A zatem, jeśli chcielibyśmy ustawić np. pod klawisz „-” pauzę i półpauzę, należałoby użyć linii:
keycode 20 = minus underline emdash endash emdash endash
Teraz najważniejsza sprawa — użycie. Możemy to zrobić na dwa sposoby: albo bezpośrednio w linii poleceń, bądź przez wpisanie jej do pliku i wywołanie xmodmap z argumentem, którym będzie ten właśnie plik.
Pierwszy sposób:
$ xmodmap -e "keycode 20 = minus underline emdash endash emdash endash"
Drugi sposób:
$ gvim ~/.Xmodmap i keycode 20 = minus underline emdash endash emdash endash :wq $ xmodmap ~/.Xmodmap
Drugi sposób na dłuższą metę jest o wiele wydajniejszy od pierwszego, gdyż w pliku można umieścić więcej niż tylko jedną linię z mapowaniem. Dany plik można też wielokrotnie wywoływać, bez konieczności każdorazowego wpisywania tej linii.
Gdy chcemy, by nasze ustawienia były automagicznie wczytywane przy każdym starcie iksów, należy w pliku ~/.xinitrc umieścić wywołanie xmodmap jak w ostatnim przykładzie powyżej.
Gdy plik ~/.xinitrc nie istnieje:
$ gvim ~/.xinitrc i #!/bin/sh xmodmap ~/.Xmodmap :wq
Gdy plik ~/.xinitrc istnieje:
$ gvim ~/.xinitrc i ↓ Do pierwszej wolnej linii xmodmap ~/.Xmodmap :wq
I tyle.