Размышления о Konsole и termcap.
-
- Аспирант (2 lvl)
- Сообщения: 58
- Зарегистрирован: Вт окт 19, 2004 18:27
Размышления о Konsole и termcap.
Размышляя как бороться с отсутствием псевдографики в консольных программах, я подумал примерно следующее:
Положим что в стандартных шрифтах псевдографика отсутствует. Хотя я не сильно в этом убежден, но в форматах кутопических шрифтов не понимаю ничего, и убедиться в их действительном отсутствии затруднительно. Хотя вроде бы в уникоде они предусмотрены, ну да фиг с ними.
Если для mc есть на свете ключик -a, то у меня есть еще куча необходимых для жизни программ каковые аналогичными ключиками не обладают. Но большинство из них пользуются ncurses, которая знает что такое termcap.
Следовательно проблема решилась бы оптимальным образом если бы можно было написать правильное termcap-определение конкретно для Konsole, каковой пользуется, вроде бы, большинство присутствующих, которое учитывало бы все особенности шарповой клавиатуры и шрифтов. После этого достаточно было бы вписать пару строк в .profile для того чтобы опознать с какого терминала мы пришли и если это локальная QKonsole, выставить надлежащий TERM=qkonsole, под каковым именем его в базу и записать.
Загвоздка как всегда в том что termcap - штука весьма путаная. Не водится ли в округе гуру, сведущего в этой магии? Если в округе водятся лица которые могли бы предложить более простое решение или объяснить почему вышеописанное невозможно, было бы также очень интересно узнать что таковые скажут.
Положим что в стандартных шрифтах псевдографика отсутствует. Хотя я не сильно в этом убежден, но в форматах кутопических шрифтов не понимаю ничего, и убедиться в их действительном отсутствии затруднительно. Хотя вроде бы в уникоде они предусмотрены, ну да фиг с ними.
Если для mc есть на свете ключик -a, то у меня есть еще куча необходимых для жизни программ каковые аналогичными ключиками не обладают. Но большинство из них пользуются ncurses, которая знает что такое termcap.
Следовательно проблема решилась бы оптимальным образом если бы можно было написать правильное termcap-определение конкретно для Konsole, каковой пользуется, вроде бы, большинство присутствующих, которое учитывало бы все особенности шарповой клавиатуры и шрифтов. После этого достаточно было бы вписать пару строк в .profile для того чтобы опознать с какого терминала мы пришли и если это локальная QKonsole, выставить надлежащий TERM=qkonsole, под каковым именем его в базу и записать.
Загвоздка как всегда в том что termcap - штука весьма путаная. Не водится ли в округе гуру, сведущего в этой магии? Если в округе водятся лица которые могли бы предложить более простое решение или объяснить почему вышеописанное невозможно, было бы также очень интересно узнать что таковые скажут.
Sharp Zaurus SL-C860, Cacko 1.23lite
Trendnet TE-CF100, Pretec WiFi, Pretec Presenter, Socket Bluetooth (F), Kingston SD 512 и еше гора всякого мусора..
Trendnet TE-CF100, Pretec WiFi, Pretec Presenter, Socket Bluetooth (F), Kingston SD 512 и еше гора всякого мусора..
Кутопия не понимает KOI8, она работает с UTF8. Поэтому русские имена файлов будут видны в ней только если они UTF8. Соответственно, если консоль будет НЕ UTF8, то и русские имена в ней будут кракозябрами...1) перейти с utf8 на koi8 в консоли (qkonsole это позволяет)
Вообще же моё отношение к KOI8 (да и к кодировкам вообще) резко негативное. Вот уж гемор развели... Давно пора переходить на уникод (хотя бы в варианте UTF8).
Хотя, чуствую, зря написал, сейчас начнется...

Ага, началосьmaslovsky писал(а):Кутопия не понимает KOI8, она работает с UTF8. Поэтому русские имена файлов будут видны в ней только если они UTF8. Соответственно, если консоль будет НЕ UTF8, то и русские имена в ней будут кракозябрами...1) перейти с utf8 на koi8 в консоли (qkonsole это позволяет)
Вообще же моё отношение к KOI8 (да и к кодировкам вообще) резко негативное. Вот уж гемор развели... Давно пора переходить на уникод (хотя бы в варианте UTF8).
Хотя, чуствую, зря написал, сейчас начнется...

Кутопия вполне нормально понимает и кои8 и cp1251,
если выставить в Settings/locale.conf нужный [Language]
Вот честный кои8 в теминальном окне кутопии :

Угу, только неизвестно, в каком месте вылезит при этом косяк...Кутопия вполне нормально понимает и кои8 и cp1251,
если выставить в Settings/locale.conf нужный [Language]
Например, понимает ли кутопия русские имена файлов например на CF карточке под FAT32, который записаны Windows 2000/XP? Они туда пишутся как раз в UTF8. А при копировании этих жу русских имен на завр через самбу? А в консоле такие имена при этом видны? И черте знает еще в каких местах...
Кому как, но мой выбор - unicode, но уж тем более не KOI8....
Ну-ну, не горячисьmaslovsky писал(а):Угу, только неизвестно, в каком месте вылезит при этом косяк...Кутопия вполне нормально понимает и кои8 и cp1251,
если выставить в Settings/locale.conf нужный [Language]
Например, понимает ли кутопия русские имена файлов например на CF карточке под FAT32, который записаны Windows 2000/XP? Они туда пишутся как раз в UTF8. А при копировании этих жу русских имен на завр через самбу? А в консоле такие имена при этом видны? И черте знает еще в каких местах...
Кому как, но мой выбор - unicode, но уж тем более не KOI8....

А по поводу имен файлов - все кутопийные приложения, независимо от [Language], создают имена файлов в юникоде. По самбе мне удавалось, с помощью некоторых извращений, передавать файлы с русскими именами между FreeBSD и завром. Во FreeBSD имена были в кои8, на завре - перекоировались в юникод, и наоборот.
А консоль - это особый случай. И нужна она большинству именно чтобы зайти через нее на удаленную машину, при этом имея нормальное отображение кириллицы на экране. А если поставить в locale.conf
[Language] = ru_RU.utf8, то в консоли можно и видеть и создавать локальные файлы с русскими именами.
Это замкнутый круг - мы не перейдем, пока не будет поддерживтаься, а она не будет поддерживаться, пока пользователи не будут хотеть и требовать её поддержки. Ситуация такая же как с поддержкой нелатинских символов. Пример - если авторов того же KO/PI не пинать, что у них то там то там с поддеожкой нелатинских символов проблемы, они нихрена не будут ничего делать, что бы их разрешить...Ну-ну, не горячись Все ты правильно говоришь. И на юникод мы все дружно перейдем, когда он будет везде и полнстью поддерживаться.
Я кучу времени потратил, чтобы новая версия кино нормально работала с русскими именами файлов при вызове mplayer. Из принципа.
Это консоль в UTF8? Если не сложно, расскажи как сделал - я бы от псевдографики в консоле не отказался. Если не очень геморно, я бы сам доделал для прошивки...В общем я немного поигрался с terminfo и убедился что задача вполне разрешимая:
Все же стоит переходить не на кои, а на utf-8.
Здесь мне кажется стоит пожертвовать консольными приложениями.
Что за удовольствия глядеть на список файлов в mc? IMHO bash удобнее.
А что еще из консольного (экранного) использует народ?
Хорошо бы в прошивку включить вместе с локалью еще iconv хотя бы с основными и русскими gconv. Часто нужно конвертнуть из одной кодировки в другую.
Здесь мне кажется стоит пожертвовать консольными приложениями.
Что за удовольствия глядеть на список файлов в mc? IMHO bash удобнее.
А что еще из консольного (экранного) использует народ?
Хорошо бы в прошивку включить вместе с локалью еще iconv хотя бы с основными и русскими gconv. Часто нужно конвертнуть из одной кодировки в другую.
я увидел "фотографию" консоли с псевдографикой.ivanhoe писал(а):Ncurses и mc используют не termcap, а terminfo. Псевдографика есть в шрифтах fixed и VGA (см. мой сайт, http://uzhe.nichego.net/zaurus).
Чтобы завести псевдографику требуется:
1) перейти с utf8 на koi8 в консоли (qkonsole это позволяет)
2) написать запись terminfo с псевдографикой
можно первый и второй пункт поподробнее? чтобы по граблям второй раз не ходить...
достаточно просто командочек переключения (переменные среды?)
и terminfo. я терминфо с линуха настольного перетаскивал, но так и не завелось

Поставил все файлы, экспортнул LANG и TERM, шрифт стоит VGA - Результат:ivanhoe писал(а):sg
1) либо запускать qkonsole с LANG=ru_RU.koi8r либо установить бинарник http://uzhe.nichego.net/zaurus/qkonsole.gz (тогда всегда будет koi8, независимо от LANG)
2) недоделанное terminfo, с которым снят screenshot, лежит здесь: http://uzhe.nichego.net/zaurus/qxterm.tar.gz (исходник и бинарник) Для установки надо распаковать директорию .terminfo в домашнюю директорию и прописать в .profile:
P.S. Для того чтобы завелось "нормальное" terminfo (и работало в юникодной консоли, и рамки были одинарные, etc), надо патчить qkonsole для правильной поддержки alternative charset.Код: Выделить всё
export TERM=qxterm
- Вложения
-
- Screen.jpg (80.08 КБ) 5169 просмотров
С сибирским приветом,
Константин
--
Nokia 9300 6.27/ Iphone 8Gb 1.1.2 / GP2X MKII
Константин
--
Nokia 9300 6.27/ Iphone 8Gb 1.1.2 / GP2X MKII
Да вроде бы пользуюсь твоим бинарником. Вот еще скриншот после ручного export LANG=ru.RU_koi8rivanhoe писал(а):kfetisov
QKonsole работает не в koi8, а в юникоде.
Можно ли по очередности для чайника в линукс расписать что делать.
С сибирским приветом,
Константин.
- Вложения
-
- Screen.jpg (87.75 КБ) 5136 просмотров
С сибирским приветом,
Константин
--
Nokia 9300 6.27/ Iphone 8Gb 1.1.2 / GP2X MKII
Константин
--
Nokia 9300 6.27/ Iphone 8Gb 1.1.2 / GP2X MKII
-
- Аспирант (2 lvl)
- Сообщения: 58
- Зарегистрирован: Вт окт 19, 2004 18:27
Заглянул в сорцы qkonsole, увидел там:ivanhoe писал(а):P.S. Для того чтобы завелось "нормальное" terminfo (и работало в юникодной консоли, и рамки были одинарные, etc), надо патчить qkonsole для правильной поддержки alternative charset.
case TY_ESC_CS('(', '0') : setCharset (0, '0'); break; //VT100
case TY_ESC_CS('(', 'A') : setCharset (0, 'A'); break; //VT100
case TY_ESC_CS('(', 'B') : setCharset (0, 'B'); break; //VT100
То бишь поддержка enacs/smacs определенно подразумевается. Что именно там не так?
Sharp Zaurus SL-C860, Cacko 1.23lite
Trendnet TE-CF100, Pretec WiFi, Pretec Presenter, Socket Bluetooth (F), Kingston SD 512 и еше гора всякого мусора..
Trendnet TE-CF100, Pretec WiFi, Pretec Presenter, Socket Bluetooth (F), Kingston SD 512 и еше гора всякого мусора..
-
- Студент (1 lvl)
- Сообщения: 49
- Зарегистрирован: Вт фев 10, 2004 13:23
-
- Аспирант (2 lvl)
- Сообщения: 58
- Зарегистрирован: Вт окт 19, 2004 18:27
Так может дело в том что просто acsc надо правильный подобрать? Надо будет попробовать сочинить программку которая сделает tput enacs и printf все подряд, может они и объявятся...ivanhoe писал(а):Е. Медведев
Поддержка неправильна тем, что в альтернативном чарсете вместо псевдографики стоят квадраты.
Sharp Zaurus SL-C860, Cacko 1.23lite
Trendnet TE-CF100, Pretec WiFi, Pretec Presenter, Socket Bluetooth (F), Kingston SD 512 и еше гора всякого мусора..
Trendnet TE-CF100, Pretec WiFi, Pretec Presenter, Socket Bluetooth (F), Kingston SD 512 и еше гора всякого мусора..