info: console-tools

Marcin 'Qrczak' Kowalczyk qrczak w knm.org.pl
Pon, 21 Wrz 1998, 23:35:59 CEST


On Mon, 21 Sep 1998, Tomasz Kłoczko wrote:

> Marcin, a czy przypadkiem nie jest to objawem usterki siedzącej gdzieś
> niżej ? Np. obecna definicja terminfo/termcap terminala linux ?

Jeśli już, to jeszcze niżej: w założeniach, według jakich działa konsola
Linuxa. Domyślnie jest ISO-8859-1, które jest wyróżnionym mapowaniem.
Kiedyś chciałem zmienić to w jądrze, żeby domyślnie była mapa użytkownika,
której domyślną zawartością byłoby ISO-8859-1 (więc niby nic się nie
zmienia, a odpada ten problem) - technicznie bardzo łatwe, ale ludzie od
jądra wybili mi to z głowy, twierdząc, że domyślnie nie może być mapa
użytkownika, bo jeśli tam się dostaną bzdury, to nie będzie łatwej metody
na doprowadzenie terminala do używalności - co jest IMHO naciągane, bo
jeśli tylko font jest bezsensowny, to też nic nie widać, a i jego komenda
reset nie rusza.

Można by _dodać_ tę sekwencję do terminfo / termcapa, do jakiejś komendy
resetującej, ale podobno tak też nie należy i term.*owy reset ma ustawiać
absolutnie bezpieczne i dobrze zdefiniowane ustawienia... Inna drobna
wada tego rozwiązania: jeśli żadne mapowanie nie było załadowane, to ta
sekwencja włącza fizyczną kolejność znaków według fontu, która w przypadku
żadnych fontów z ramkami, w tym standardowego fontu z ROMu VGi, nie ma
szans zgadzać się z ISO-8859-x - a nie ma jak zrobić tego warunkowo.

> > case $(tty) in
> > (/dev/tty[0-9]*) echo -ne '\33(K';;
> > esac
> 
> O ile nie da się tego załatwić inaczej to tak będzie trzeba zrobić ale
> wydaje mi się, że powyższe to teraia objawowa i nie dotyka to nawet
> włąściwwgo/poprawnego rozwiązania.

Nie znam lepszego... Jeśli ktoś poda lepsze rozwiązanie, tylko się
ucieszę.

Najprawdopodobniej coś podczas wylogowywania się wysyła ^[c, a to też
przywraca ISO-8859-1. Może też to wysłać jakiś program (chociażby reset).
Zatem przy istniejących zasadach w jądrze przełączanie nie powinno być
rzadsze niż na poziomie .profile - nawet jeśli utrudni się pewne drogi
przełączania na ISO-8859-1, coś zawsze może pozostać i wtedy nie każdy
wie, co należy zrobić, żeby przywrócić ogonki. W tym przypadku wystarczy
się przelogować.

Rozwiązanie nie jest idealne, a wszystko jest winą historycznych
zaszłości, że kiedyś było tylko ISO-8859-1, a teraz cały czas jest
domyślne.

Chyba każde rozwiązanie nie gmerające w jądrze i pozwalające używać
poprawnych fontów sprowadza się do emitowania tej sekwencji w odpowiednich
sytuacjach. Sęk w tym, żeby wykryć te sytuacje, ale bez fałszywych alarmów
(takich jak zdalne logowanie się albo np. odpalanie xterma, czego ta
sytuacja nie dotyczy, przynajmniej na razie).

> Dopóty dopóki nie dasz sygnału ze mam się tym zająć to jest to nadal
> Twoje.

Dobra, zaraz wysyłam poprawioną wersję.

-- 
 __("<   Marcin Kowalczyk * qrczak w knm.org.pl http://qrczak.home.ml.org/
 \__/       GCS/M d- s+:-- a21 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-



Więcej informacji o liście dyskusyjnej pld-devel-pl