Русификация разных терминалов

Была у нас в конторе машинка "Besta-88" под UNIX'ом с кучей терминалов, терминалы были с прошитыми русскими буквами в так называемой зиловской кодировке (кажется это была koi8 с поменянными местами большими и маленькими русскими буквами). Руссификацией ввода занимались сами приложения. Во время нашествия на Россию PC'юков пришлось и нам менять сервер, а терминалы имело смысл оставить те, что были. Кстати неплохие терминалы (Tatung). Вот тут-то в встал вопрос их руссификации. После нескольких попыток влезть в драйвера SCO родилась альтернативная идея сделать все это на псевдотерминалах. Схематично это выглядит примерно так:

Программно это выглядит следующим образом: при старте программа открывает свободный /dev/ttyp и fork'ается на три процесса. Процесс "input coder" читает данные с /dev/tty (клавиатура) и перекодировав их соответствующим образом (таблица в программе) передает и на /dev/ttyp. Он-же реагирует на заданные переключатели Lat/Rus (обычно Ctrl-O и Ctrl-N). Процесс "output coder" соответственно читает с /dev/ttyp и перекодировав отдает на /dev/tty (экран). Третий процесс -- собственно приложение, например /bin/sh. :) Пускать это можно либо руками либо вычисляя в /etc/profile соответствие /dev/ttyX и типа терминала. Единственное неудобство - заранее не знаешь какому терминалу какой /dev/ttyp соответствует, также, как и при работе через telnet. :) Сама программка лежит здесь, так как это было достаточно давно рекомендуется эту программу рассматривать как учебное пособие при написании своего варианта. :)) Я на основе этой программки делал шифрование терминальной линии и подглядывалку за работой UPS и PowerChute. :)
Last modified: Tue Feb 23 18:44:54 MSK 1999