Patron, а как бы принять буфер экрана терминала на виндовый клипборд?

- - - Добавлено - - -

Цитата Сообщение от Patron Посмотреть сообщение
Проблема алгоритмически неразрешима. Если программа при выводе русских букв каждый раз выводит последовательность <016>буква<017> - то терминал всегда находится в латинском режиме. Невозможно предсказывать режим ввода по нажатию кнопок <РУС> и <ЛАТ>
Я тут внимательно все обдумал...

Похоже, я заблуждаюсь. На наших терминалах не надо предсказывать режим ввода. Он всегда один и тот же. Клавиша [Ю@] всегда посылает одну и ту же пару кодов: 140 под шифтом и 100 без него. А как эти коды интерпретировать - [юЮ] или [`@], решает индикатор состояния экрана. Единственное исключение - клавиша РУС/ЛАТ 7004@КЦГД, код, который она посылает, зависит от состояния клавиатуры, конкретно - от индикатора [ЛАТ], если он горит, передается 016, если нет - 017.

Но у нас ведь НЕТ клавиши [Ю@]. У нас вообще нет ни одной из буквенных клавиш, совпадающих с оригиналом. Вот, положил рядом 7004, посравнивал, так вообще, совпадают только клавиши со стрелочками, единица и пробел. Все!

Так, что проблема действительно неразрешима - псиюшая клава принципиально не годится для прямой эмуляции отечественных терминалов. И действительно, надо искать какое-то компромиссное решение, причем, получается, не одно. Каким-то программам годится так, как есть сейчас, каким-то нет. И среди последних нарисовалась не то, что программа, а целая операционная система - ДИАМС. Таким образом, нужно сделать, как минимум, еще один дополнительный режим эмуляции клавиатуры - с отдельным индикатором состояния рус/лат строго для клавиатуры, который переключается только клавишами, в момент поступления кодов 016/017 на 177562 (176562...).

Не думаю, что нужен оперативный переключатель этих режимов эмуляции - с индикатором состояния клавиатуры, или без него. - достаточно конфига. А еще замечу, что большинству программ и систем, кроме ДИАМСа и той самой игрушки, стреляющей по клавише РУС, скорее всего, будет фиолетово, есть этот дополнительный индикатор, или нет.