To, o czym piszesz, rysban, micza już zrobił za pomocą
setxkbmap ru, zadanie jest w mapowaniu na rosyjskie znaki według jego upodobania.
Tymczasem tłumaczę sposób mapowania po swojemu klawisza
z na rosyjskie
ze:
* szukam kodu klawisza z: w tym celu mogę odpalić
xev, wcisnąć klawisz
z i odczytać kod:
KeyRelease event, serial 34, synthetic NO, window 0x2400001,
root 0x85, subw 0x0, time 7883953, (126,130), root:(549,419),
state 0x0, [b]keycode 52[/b] (keysym 0x7a, z), same_screen YES,
XLookupString gives 1 bytes: (7a) "z"
XFilterEvent returns: False
kod zetki to 52.
* szukam jak zwie się symbol rosyjskiego
ze: znalazłem plik /usr/share/X11/xkb/symbols/ru, jeśli nie masz to wklejam go tu:
http://pastebin.pl/6288, można domyślić się też nazw stąd:
http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmapsymbole
ze to
Cyrillic_ze Cyrillic_ZE * teraz czas stworzyć mapowanie:
keycode 52 = Cyrillic_ze Cyrillic_ZE * używamy go na dwa sposoby: albo wklejamy to mapowanie jako linijkę do pliku, np. ~/.cyrylica i wtedy klepiemy po prostu
, albo testujemy je w linii poleceń:
xmodmap -e 'keycode 52 = Cyrillic_ze Cyrillic_ZE'
Powinieneś już widzieć rosyjskie
ze, a w xev po wciśnięciu zetki powinno być mniej więcej
KeyPress event, serial 34, synthetic NO, window 0x2400001,
root 0x85, subw 0x0, time 8778369, (37,266), root:(460,555),
state 0x0, [b]keycode 52 (keysym 0x6da, Cyrillic_ze)[/b], same_screen YES,
XLookupString gives 2 bytes: (d0 b7) "з"
XmbLookupString gives 2 bytes: (d0 b7) "з"
XFilterEvent returns: False
Jeszcze uzupełnienie na temat mapowania z modyfikatorami. Przypuśćmy, że chcemy dać
ze jak wyżej, ale prócz tego pod prawym altem plus
z ma pojawić się
że. Wtedy po prostu poszerzamy mapowanie o dodatkowe wpisy:
keycode 52 = Cyrillic_ze Cyrillic_ZE Cyrillic_zhe Cyrillic_ZHE
Zrobiłem tak w przekonaniu, że kolejne z tych liter będą wyświetlały się po wciśnięciu z,Z,PrawyAlt-z,PrawyAlt-Z. Jednak u mnie niczego to nie dało z prawym altem. Okazuje się, że mapowanie przewiduje 8 miejsc, więc może prawy Alt kryje się nie na trzecim i czwartym miejscu, ale na dalszym. U mnie wyszło, że na piątym i szóstym:
keycode 52 = Cyrillic_ze Cyrillic_ZE z Z Cyrillic_zhe Cyrillic_ZHE
Na trzecie i czwarte miejsce wkleiłem byle co (z Z).
I tak reszta znaków, linijka pod linijką
Jest prostszy sposób mapowania pozwalający uniknąć zabawy z xev i operujący na dotychczasowo mapowanych symbolach:
[b]keysym z[/b] = Cyrillic_ze Cyrillic_ZE z Z Cyrillic_zhe Cyrillic_ZHE