LINUX.ORG.RU

Вывод «непечатаемых» символов на экран


0

0

Народ!

Как вывести в физической консоли на экран символы с "непечатаемыми" кодами типа 8, 9, 10, 13 и пр. или просто отключить их принудительную интерпретацию (в идеале всех от 0 до 255)? Это вообще реально? Есть ESC-команда с кодом 14 которая дает возможность выводить (неинтерпретировать) некоторые, но не все символы. И вообще, почему в ядре жестко прописана эмуляция VT-102 для физ. консолей с ее командами и нет никакой альтернативы? Ткните носом, плиз, где почитать про устройство физ. консоли (интересует низкоуровневый вывод на экран) кроме /drivers/char/console.c ес-но.

anonymous

Смотреть в сторону /dev/vcs* /dev/vcsa*. Первые отвечают за доступ к содержимому экрана физической консоли без атрибутов, а второй с атрибутами.

Для примера можно запустить на первой виртуальной консоли что-то (например mc), а на второй делаем cat /dev/vcs0. Аналогично cat /dev/vcsa0 > /dev/vcsa1, только получим копию экрана со всеми атрибутами (цветами).

Недостаток - непортабельно, работает только для виртуальных консолей (для Xterm и прочих уже не будет пахать). Из тех же соображений портабельности и зашита эмуляция VT-102.

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

Поглядел на /dev/vcs[a]*. Да, это все же лучше чем совсем ничего... спасибо. "cat file >/dev/vcs1" пишет, что "cat: write error: No space left on device" (???), т.е. больше чем текущий размер консоли писать нельзя что-ли? Насчет "портабельности", меня всегда удивляло, что у каждой системы свои, как правило, исторические (но выглядящие по-дурацки при общем обзоре) ограничения на экранный/консольный вывод (да и ввод тоже): linux (vcsa), xterm, win32 console. Вот и мне приходится ради "портабельности" писать 3 разных модуля... Нет чтобы зашить в ядро полноправное низкоуровневое api для работы с экраном (несовместимое ни с кем, зато быстрое и функциональное, для тех кому совместимость не особо нужна), а на основании его сделать уже эмуляцию и VT-xxx, и ANSI/Avatar и т. д., для тех кому действительно нужно что-то стандартное. А может такое api уже где-то есть?

А что xterm не сможет предоставить мне прямой доступ к своей эмулируемой консоли для вывода всех глифов символов и управления размерами курсора?

anonymous
()
Ответ на: комментарий от anonymous

>А что xterm не сможет предоставить мне прямой доступ к своей эмулируемой консоли для вывода всех глифов символов и управления размерами курсора?

Не знаю как на счёт курсора. а остальное должен уметь.

cvv ★★★★★
()

А как по-твоему должны выглядеть непечатные символы при печяти? Не лучше ли поюзать уникод если нужна какая-нибудь закорючка понепонятнее?

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

>А как по-твоему должны выглядеть непечатные символы при печяти? Вообще-то все символы от 0 до 255 имеют свое отображение (формально). Хотя 0 и 255 как правило пустые, но вот 8, 9, 10, 12, 13 символы точно не пустые! Как они выглядят можно поглядеть в DOS например. >Не лучше ли поюзать уникод если нужна какая-нибудь закорючка понепонятнее? А разве в unicode-наборе есть глифы символов соответствующие обычным от 0 до 31? Что-то я не встречал, хотя конечно закорючек там полно, это правда. И потом как их отобразить все равно? Через 512-символьный шрифт что-ли?

anonymous
()
Ответ на: комментарий от anonymous

> но вот 8, 9, 10, 12, 13 символы точно не пустые!

Беда в том, что их вид в текстовом режиме писюка зависит от загруженного в видимокарту шрифта. Поскольку формально они всё-таки непечатные, в зависимости от шрифта они могут быть либо пустыми, либо на писюке в текстовом режиме выглядеть по-всякому, в различного рода х-терминалах или других платформах им вообще (насколько я знаю) не соответствует графического символа. Только во времена ДОС на вид этих символов можно было сколько-нибудь полагаться. Потому что только в времена ДОСа они небыли ещё атавизмом.

> А разве в unicode-наборе есть глифы

В уникоде есть все мыслимые и некоторые из немыслимых символов, включяя крючёчки, закорючки, руны, письменность девангари и суахили, алфаит де-Бройля, письменные знаки Клингонов, полный набор китайских иероглифов и прочее. Специальный раздел выделен и для псевдографических символов. Карты соответствия можно посмотреть в pdf-файлах, выкачанных с http://www.unicode.org/charts/. Выводить можно например как обычные символы в уникожей локали. Для того, чтобы они были видны, нужен соответствующий шрифт конечно. Посмотри в сторону usc-шрифта (или ucs или что-то в этом роде, точно не помню, но если возникнут траблы могу посмотреть, здесь негде). В пакет с шрифтами вложены текстовые примеры с разнообразными символами, которые примеры можно посмотреть при помощи cat в uxterm.

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