Naturalnie, jeśli omawiany problem wystąpił, a my mamy już link FSchrmap.polxterm wskazujący właśnie na FSchrmap.xtermiso, należy spróbować akcji odwrotnej: dowiązania go do FSchrmap.xterm.
Jeszcze raz przypomnijmy: należy pamiętać, że program wymaga zestawu znaków w ISO8859-2 - a nie w UTF-8! Tak więc, jeśli chodzi o X-Terminal, korzystać należy np. z xterm-a, a nie z uxterm-a.
1. Może chodzić o problem z ustawieniem zmiennej TERMINFO (stwierdzony np. w przypadku dystrybucji Mandrake 9.2). Wprawdzie Smabi sam ustawia tę zmienną, wszakże z niewiadomych na razie przyczyn w niektórych przypadkach należy ją przed uruchomieniem programu ręcznie wyeksportować wpisaniem sekwencji: export TERMINFO=/usr/share/terminfo (można wpisać na stałe w ~/.bashrc). Jeśli zaś to nie pomogło, to:
2. Być może chodzi o niestandardowe mapowanie zestawu znaków. Zwróćmy uwagę, że w katalogu /usr/share/terminfo znajdziemy trzy różne pliki zajmujące się "mapowaniem" zestawu znaków, o tej samej nazwie FSchrmap - lecz o różnych rozszerzeniach: jeden z nich ma sufiks debian, drugi: mdk, a trzeci: suse. Do jednego z tych plików już jest stworzony link symboliczny o nazwie FSchrmap.def.
Najpierw krótkie wyjaśnienie znaczenia tychże plików, zawierających tabele translacji znaków - w pakiecie znajduje się ich pięć:
a) Dla konsoli - czyli dla pracy w trybie czysto znakowym -
znaczenie mają pliki: FSchrmap.debian, FSchrmap.mdk,
FSchrmap.suse
b) W przypadku pracy spod któregoś z X-Terminali istotne są pliki
FSchrmap.xterm, FSchrmap.xtermiso
W trakcie instalacji tworzone są dowiązania symboliczne o nazwach:
c) FSchrmap.def - które będzie wskazywało na któryś z plików
wymienionych w punkcie a) - chodzi o pracę w konsoli
d) FSchrmap.polxterm - które będzie wskazywało na któryś z plików
wymienionych w punkcie b) - chodzi o pracę spod X-Terminala
Jak łatwo się zorientować po rozszerzeniach nazw plików z pkt a), zasadniczo dotyczyły one konkretnych dystrybucji Linuksa, niemniej jednak obecnie, ze względu na ewolucję zawartości plików zawierających zestawy znaków (które załączają w dystrybucjach ich maintainerzy), nie należy się tymi rozszerzeniami kierować; zostały takie, jakie były, już tylko ze względów historycznych.
Obecnie dla (chyba?) większości dystrybucji Linuksa, najodpowiedniejszym wyborem w przypadku pracy z konsoli będzie plik translacji FSchrmap.mdk - zauważymy, że widoczne są zarówno ramki pojedyńcze, jak i - na niektórych ekranach programu (np. przy wyborze Zleceń stałych) także podwójne. Plik FSchrmap.debian jest ostrożniejszym wyborem, który niegdyś był niezbędny dla starszych dystrybucji Debiana, np. Debian Woody. Różni się on od poprzedniego właściwie głównie wycięciem ramek podwójnych; wszystkie znaki ramek podwójnych ulegają zamianie na kody ramek pojedyńczych. Ten plik jest dobrym wyborem do testów, jeśli uprzedni, z jakichś względów, nie sprawdził się.
Plik FSchrmap.suse był aktualny dla starszych dystrybucji SuSE (np. linii 6.x), i obecnie zapewne nie znajdzie już nigdzie zastosowania - ale na wszelki wypadek pozostawiono go jako materiał do ew. porównań.
A zatem: Jeśli wystąpił kłopot z ramkami - możemy przenieść dowiązanie linku FSchrmap.def do innego ze wspomnianych plików - być może samo to załatwi sprawę. Najczęściej spotyka się kodowanie takie, jak zdefiniowano w pliku FSchrmap.mdk - ale np. dystrybucja Woody wolała właśnie tabelę opisaną w FSchrmap.debian, zaś starsze wersje dystrybucji SuSE, w ogóle specjalnego mapowania nie potrzebowały - i tutaj można było skorzystać z pliku FSchrmap.suse.
Tip: w razie jakichkolwiek problemów z ramkami - np. w przypadku jakiejś egzotycznej dystrybucji, bądź pracy poprzez SSH ze stanowiska pracującego pod kontrolą innego systemu, np. FreeBSD - warto spróbować, przed uruchomieniem Smabiego, skorzystania ze znanej aplikacji screen, która ma jeszcze nieco inaczej poukładane otoczenie. W tym przypadku nie będą dostępne ramki podwójne - ale w dalszym ciągu chociaż te pojedyńcze.
Jeśli i to nic nie da, to możemy próbować poratować sytuację jeszcze innym sposobem: przed uruchomieniem programu wstukajmy w linii poleceń: export TERM=xterm. Dla ułatwienia można taki wiersz wpisać w skrypcie /usr/bin/smabi przed wierszem uruchomienia Smabiego, oraz drugi wiersz - po wierszu ze Smabim - przywracający poprzednią wartość zmiennej TERM po zakończeniu pracy z programem.
Jeśli i to nie dałoby oczekiwanego efektu - można nas zawiadomić o kolejnym przypadku niestandardowego mapowania, podając nazwę i wersję dystrybucji. Albo spróbować ułożyć tabelę translacji samodzielnie, według wskazówek poniżej:.
Możliwości dowolnego przedefiniowania kodów generowanych
naciśnięciem klawisza, bez zmiany ustawień w systemie
Może się zdarzyć, że w przypadku ustawienia innego terminala, niż standardowy linux, bądź (w trybie graficznym) xterm zauważymy (przykładowo) niewłaściwą reakcję na naciśnięcie któregoś klawisza, najprawdopodobniej może to dotyczyć któregoś z klawiszy funkcyjnych.
Smabi udostępnia prosty sposób na całkowite "przemapowanie" klawiatury.
Wyjaśnimy to na prostym przykładzie - załóżmy, że z jakichś powodów chcemy korzystać z terminala o nazwie oterm, który to hipotetyczny terminal ma na tyle odmienne ustawienia obsługi klawiatury, że zauważamy tam problem z działaniem klawisza Backspace - co może brać się stąd, że ustawienia owego terminala powodują, że naciśnięcie tego klawisza powoduje przesłanie kodu 127 ( Control-? ). Należy zatem wymusić przesyłanie oczekiwanego przez program kodu 008 ( Control-H ).
Ustawienia par "kod pierwotnie generowany naciśnięciem danego
klawisza - docelowy kod przesyłany do programu" można dowolnie
przedefiniować w pliku /usr/share/terminfo/FSkeymap.def - po prostu,
na końcu wspomnianego pliku dopisujemy:
#----- przykład przemapowania klawiatury dla innego terminala (oterm)
:oterm#----- koniec
0-126: *
127 : 8
128-255: *
Systemu restartować nie trzeba, tylko zakończyć działanie programu, i uruchomić go ponownie. Program wczytuje ten plik zawsze po uruchomieniu.
I jeszcze jedno: przyjmijmy dodatkowo, że Smabi używany jest w trybie wielostanowiskowym, na serwerze, i poszczególni użytkownicy z jakichś powodów chcieliby korzystać z terminali różnych typów. Jest wyjście i z takiej sytuacji - po prostu w katalogu /usr/share/terminfo zamieszczamy plik FSkeymap.def z ustawieniami "globalnymi", obejmującymi większość użytkowników programu. Natomiast ci korzystający z odmiennych terminali, winni zamieścić swoje indywidualnie przygotowane pliki FSkeymap.def po prostu w "korzeniu" swojego katalogu domowego. Program szuka tego pliku najpierw w katalogu domowym, a dopiero, gdy go tam nie znajduje - szuka go w /usr/share/terminfo. I dlatego plik zamieszczony w "korzeniu" katalogu domowego ma wyższy priorytet, niż ten "ogólnie dostępny" z /usr/share/terminfo.
Nazwę aktualnie używanego terminala sprawdzimy wydaniem polecenia set - wśród wielu zmiennych interesująca nas to TERM. Najczęściej będzie ona miała wartość TERM=linux.
Poprzednia strona |
Następna strona |
Spis treści
Strona główna serwisu programu