Polska klawiatura w X11
Uniwersalny skrypt sposobiący klawiaturę do generowania kodów z ogonkami.
Czemu nie .xmodmap ?
Stacje UNIXowe i PC mają zwykle (na szczęście ciągle jeszcze) klawiatury US. Równocześnie trzeba czasem działać na tekstach polskich. Trzeba więc jakoś wprowadzać litery z ogonkami. Xserver posiada możliwość przedefiniowania znaczenia klawiszy. Najczęściej sugerowane jest tworzenie w tym celu zbioru .xmodmap. Jest to rozwiazanie niezbyt poprawne. Taki zbiór jest wlasnością uzytkownika a nie xservera. Jego zawartość musi natomiast odpowiadać xserwerowi. Jezeli użytkownik (w znaczeniu zawężonym do homedirectory) otwiera sesję X zawsze na tym samym terminalu to problem znika. Ten przypadek zachodzi gdy użytkownik ma w swoim pokoju komputer z UNIXem i tylko przy nim siada do pracy. Jeżeli uzytkownik chce otworzyć sesję na zdalnym serwerze, w dodatku przy użyciu jednego z wielu xterminali (np. jedynego aktualnie wolnego na pracowni, czyli nie zawsze takiego samego, za to bez możliwości wyboru) - zaczynają sie problemy. Plik .xmodmap wiazany z konkretnym xserwerem, na innym albo nie działa albo działa tak że nie pozwala działać użytkownikowi.Rozwiązanie.
Eleganckim rozwiązaniem byłoby spolszczenie xserwera. Niestety i tak nie zawsze byłoby to zadowalające. Czasem trzeba użyć obcego xterminala i doraźnie go uzdatnić. Dla tego proponuję skrypt xplkbset który automatycznie przystosowuje się do klawiatury i może być w miarę bezpiecznie umieszczony w startupie sesji użytkownika.Dodatkowe kody mają być generowane przy pomocy klawisza Mode_switch i klawiszy z odpowiednią literą bez ogonka. Skrypt sprawdza czy klawisz z KeySym Mode_switch jest już zdefiniowany (bo bywa że jest nawet opisany na klawiszu i żal go tracić). Jeżeli nie to tworzy go sam. Wykorzystuje w tym celu istniejącą parę dublujących się klawiszy L-R i używa do swoich celów prawego. Testowane są to kolejno Alt, Mod, Super i Hyper. Na klawiaturze PC zostanie użyty Alt_R a na klawiaturze SUN Mod_R. Z wybranego klawisza usunięty zostanie KeySym*_R i przypisany mu KeySym Mode_switch. Ponadto ModeSwitch zostanie przypisany do pierwszego z wolnych modyfikatorów mod1, mod2, mod3, mod4, mod5. Działanie lewego klawisza nie ulegnie zmianie, więc klawiatura nie utraci części funkcji. Następnie klawiszom o dotychczasowych KeySym A, C, E, L, N, O, S, X, Z zostaną przypisane czwórki KeySym odpowiadające literom małej, dużej, małej z ogonkiem i dużej z ogonkiem.
Problemy
W skrypcie xplkbset używany jest dla polskich liter zestaw KeySym-ów odpowiadających literom z iso-8859-1:
ą plusminus Ą exclamdown ć ae Ć AE ę ecircumflex Ę Ecircumflex ł threesuperior Ł sterling ń ntilde Ń Ntilde ó oacute Ó Oacute ś paragraph Ś brokenbar ż questiondown Ż macron ź onequarter Ź notsign Takie środowisko wymaga zmuszenia aplikacji do interpretacji otrzymywanych znakow jako iso-8859-2. Bardziej poprawne było by użycie KeySym-ów polskich. Niestety nie wszystkie xserwery i aplikacje je rozumieją. Ze znanych mi aplikacji, poprawnie interpretuje (i wymaga ich) UNIXowa wersja programu WordPerfect.