LINUX.ORG.RU

Slackware, ncurses6, mc

 


0

2

Обновил я на свою голову ncurses. Почему-то получившийся файлик /terminfo/l/linux оказался кривоват для mc (midnight commander) в не-UTF8 консоли. А вот linux-vt в качестве TERM всё обратно исправил .... целый день бился :/

★★★★★

Нужно чуть поподробнее описать.

Есть locale cp1251:

LANG=ru_RU.CP1251
LC_CTYPE="ru_RU.CP1251"
LC_NUMERIC="ru_RU.CP1251"
LC_TIME="ru_RU.CP1251"
LC_COLLATE=C
LC_MONETARY="ru_RU.CP1251"
LC_MESSAGES="ru_RU.CP1251"
LC_PAPER="ru_RU.CP1251"
LC_NAME="ru_RU.CP1251"
LC_ADDRESS="ru_RU.CP1251"
LC_TELEPHONE="ru_RU.CP1251"
LC_MEASUREMENT="ru_RU.CP1251"
LC_IDENTIFICATION="ru_RU.CP1251"
LC_ALL=

машинка грузится с параметром ядра

vt.default_utf8=0

в консоли вроде всё работает, но я сразу полез запускать mc (4.8.17, 4.8.20) и он мне с дефолтным TERM=linux все настройки шрифтов сбивал.

Шрифты:

at /etc/rc.d/rc.font
#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/share/kbd/consolefonts.
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin

setfont -v ruscii_8x16
setfont -m cp1251

for n in 1 2 3 4 5 6; do
 echo -ne "\033(K" > /dev/tty$n

В общем пока я догадался, что дело в неверной (?) записи terminfo - кучу всего пересобрал.

Хотя в NEWS для патча ncurses явно сказано, что были фиксы для не-UTF8 локалей!


+20160514
+       + regenerate HTML manpages.
+       + improve manual pages for wgetch and wget_wch to point out that they
+         might return values without names in curses.h (Debian #822426).
+       + make linux3.0 entry the default linux entry (Debian #823658) -TD
+       + modify linux2.6 entry to improve line-drawing so that the linux3.0
+         entry can be used in non-UTF-8 mode -TD

Но блин, что-то не работает....

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от ashot

Возможно, ещё что-то влияет. Midnight Commander хорошо работает с ncurses6 и локалью KOI8-R.

saahriktu ★★★★★
()
Ответ на: комментарий от ashot

Сначала исторически («как в Альт Линукс»), потом просто файлики с русскими именами на винте осели..знаю, что это можно перекодировать, но лень .... И так работает ..обычно....

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от Andrew-R

У меня такие наблюдения.
Slackware 14.2 x86_64
ncurses-5.9-x86_64-4

# unicode_stop
# export LANG=ru_RU.CP1251
# setfont ruscii_8x16 -m 1251
# TERM=linux mc

И вроде как никаких проблем.
Возможно, есть смысл сравнить /usr/share/terminfo/l/linux (а лучше исходник, из которого он компилируется) в 5.9 и 6.0?

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

Да я уже заглядывал..там даже коммент специальный был:

https://raw.githubusercontent.com/mirror/ncurses/master/misc/terminfo.src


# This uses graphics from VT codeset instead of from cp437.
# reason: cp437 (aka "straight to font") is not functional under luit.
# from: Andrey V Lukyanov <land@long.yar.ru>.
linux-vt|linux console using VT codes for graphics,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz~~,
	rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0,
	smpch@, use=linux,

Собственно получившиеся крякозябы и были похожи на что-то _отличное_ от «бнопни» - мешанина псевдографики и русских .. наверное, это и была cp437.

Andrew-R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.