В связи с возникшим интересом к антикварным системам появился вопрос - а как поддержать ДКОИ К2 в Personal Communication? Функция переопределения клавиш позволяет переопределить клавиши но это не работает при переключении клавиатуры на русскую. То есть, переопределить латинские буквы можно как угодно, а вот русские - вообще никак. Этот вопрос мне задавали 20 лет назад, в 2002, и я тогда предложил написать (и написал) программу, которая использовала HLLAPI и заменяла русские буквы A O ... на латинские буквы, совпадающие по начертанию, но это какой-то слишком сложный способ, ну неужели нельзя проще? Для wc3270 вопрос решается за 5 минут, см. прилагаемый файл. Может быть, кто-то знает более простое решение?
P.S. Пояснение для незнакомых с вопросом Давным-давно, когда IBM-совместимые компьютеры начали появляться в СССР, необходимо было как-то обеспечить поддержку кириллицы. И вот, один имбецил академик придумал кодировку, которая известна как ДКОИ К2. В этой кодировке добавлены только те русские буквы, которые не имеют совпадающих по начертанию латинских, а для - букв А,В,Е,К,М,Н,О,Р,С,Т,а,е.о,р,с,у,х использовались коды латинских букв. Все это существовало несколько лет, пока не появилась кодировка ДКОИ К1 (которую IBM впоследствии и объявила CP 1025/ CP 880. В ДКОИ К1 все кириллические буквы имели уникальный код, отличный от латинских. Но, к этому времени уже были написаны разные приложения с использованием ДКОИ К2, и если такое приложение задает вопрос, на который нужно ответить ДА или НЕТ, то ответ ДА выглядит так: <переключение на русский регистр>Д<переключение на латинский регистр>A а если в ответ нужно ввести слово ПРИВЕТ, то это будет выглядеть так: <переключение на русский регистр>П<переключение на латинский регистр>Р<переключение на русский регистр>И<переключение на латинский регистр>ВЕТ Это все, мягко говоря, ни в какие ворота не лезет) Прилагаемый файл позволяет вводить ответ в эмуляторе wc3270 не переключая регистр. Как реализовать эту простую функцию в Personal Communication?
P.P.S. И еще один вопрос, связанный с ДКОИ К2 - как преобразовать текст в ДКОИ К2 в CP1025? может быть, кто-то решил эту проблему?
если имеете в виду стр. 31-32, то, как я писал выше, функция переопределения клавиш позволяет переопределить клавиши, но не работает вообще при переключении клавиатуры на русскую. То есть латинскую клавиатуру можно переопределить как угодно, а русскую - вообще никак. Вообще, я всю доступную документацию просмотрел, но, конечно, может и пропустил что-то...
если имеете в виду стр. 31-32, то, как я писал выше, функция переопределения клавиш позволяет переопределить клавиши, но не работает вообще при переключении клавиатуры на русскую. То есть латинскую клавиатуру можно переопределить как угодно, а русскую - вообще никак. Вообще, я всю доступную документацию просмотрел, но, конечно, может и пропустил что-то...
Ну смотрите...
1. Можно присвоить клавише, например, 'T' - значение Alt-T --->'E' (англ.) А всем другим, где не совпадают, русские значения, например Alt-P --->'З' (рус.) Тогда русская раскладка будет по Alt (правда придется зажимать Alt)))))
2. Можно присвоить клавише, например Shift-T - значение --->'E' (англ.) Тогда при включенном CapsLosk, T останется T, а при Shift-T станет 'E' (англ.)
и т.п.
И
ЦитатаGregory ()
И еще один вопрос, связанный с ДКОИ К2 - как преобразовать текст в ДКОИ К2 в CP1025? может быть, кто-то решил эту проблему?
Поясните, где это преобразование должно быть? Ведь перекодировщик написать минут 20 надо. В чем проблема?
1-2. Да, так можно сделать. Но, согласитесь, это искусственное и неудобное решение: ну чем лучше вводить [лат]С[alt - A] вместо [лат]С[рус]Ф (имеется в виду команда СФ OKO - справка с файла) ведь все равно приходится различать самому русские и английские буквы, так за что, собственно, боролись? а в wc3270 ничего различать не нужно, вводим СФ на русском регистре, ни о чем не задумываясь.
ну-ну... преобразование может быть где угодно, хоть в мобильном телефоне, вопрос не в том "где", а в том "как"... Вот фрагмент подобного текста (из E1.00005-04 32 02) 1.1. ПДO ЯBЛЯETCЯ OПEPAЦИOHHOЙ CИCTEMOЙ, ПPEДHAЗHAЧEHHOЙ ДЛЯ PAБOTЫ HA BИPTУAЛЬHOЙ MAШИHE (BM), OБECПEЧИBAEMOЙ MOHИTO- POM BИPTУAЛЬHЫX MAШИH (MBM) OПEPAЦИOHHOЙ CИCTEMЫ CBM.
здесь кириллица только буквы, выделенные красным, остальное - латиница. А должно быть 1.1. ПДО ЯВЛЯЕТСЯ ОПЕРАЦИОННОЙ СИСТЕМОЙ, ПРЕДНАЗНАЧЕННОЙ ДЛЯ РАБОТЫ НА ВИРТУАЛЬНОЙ МАШИНЕ (ВМ), ОБЕСПЕЧИВАЕМОЙ МОНИТО- РОМ ВИРТУАЛЬНЫХ МАШИН (МВМ) ОПЕРАЦИОННОЙ СИСТЕМЫ СВМ.
здесь кириллица - все буквы. А в идеале хотелось бы вот что:
1.1. ПДО является операционной системой, предназначенной для работы на виртуальной машине (ВМ), обеспечиваемой монито- ром виртуальных машин (МВМ) операционной системы СВМ.
Если получить правильный кириллический текст, правильно преобразовать его в строчные и прописные буквы уже не так сложно. Ну какой-то алгоритм преобразования ДКОИ-К2 в CP1025 я себе представляю: - рассматриваем слова от разделителя (пробел, запятая, точка...) до разделителя - если в слове есть хоть одна кириллическая буква - оно русское, преобразоваваем все остальные буквы в нем - НА, НЕТ, СИСТЕМ, ВМ, МВМ, СВМ преобразовываем по словарю исключений боюсь, что на реализацию 20 мин. не хватит). Легко ли понять, что в фразе "ТЕКСТ ПРОГРАММЫ (ЗАПИСИ TXT)" слово ТЕКСТ - русское, а TXT - английское? И таких примеров очень-очень много. Вот я и решил, что нет смысла тратить время на реализацию такого преобразования (текст ведь все же читабельный, хоть и он и русско-английская смесь), но решил все же поинтересоваться, а вдруг кто-то уже потратил время на это? :-)
Сообщение отредактировал Gregory - Ср, 17.08.2022, 22:50
не очень понял, в чём суть проблемы. РСОМ прекрасно работает в разных раскладках, у меня спокойно переключается с английской на ивритскую, с изменением направления письма. при этом в ивритской раскладке при нажатом шифте будет печатать заглавные английские, но таки справа налево.
эм... а зачем буквы переопределять? обычно переопределяются служебные клавиши и комбинации с альт/котнрол/шифт.
существует даже несколько причин. Во-первых, кроме "стандартных" русских раскладок клавиатуры, которые поддерживаются в Windows и в PCOM (441 - наиболее распространенная и 443 - соответствует русской пишущей машинке), некоторое распространение имеют и другие, например "фонетическая" раскладка, или "ЯВЕРТЫ" https://u.to/9LlEHA Во-вторых, рассматриваемая в этом посте ситуация и аналогичные ей. В рассматриваемом случае (ДКОИ К2) нет русских букв А,В,Е,К,М,Н,О,Р,С,Т,а,е,о,р,с,у,х, вместо них должны вводится английские буквы A, B, E, K, M, H, O, P, C, T, a, e, o, p, c, y, x соответственно. При использовании стандартной раскладки приходится постоянно переключать русский и латинский регистр, как в примере из поста #1: если нужно ввести слово ПРИВЕТ, то это будет выглядеть так: <переключение на русский регистр>П<переключение на латинский регистр>Р<переключение на русский регистр>И<переключение на латинский регистр>ВЕТ А если при этом еще и переключение регистра триггерное (например, Alt-Shift переключает на русский регистр, а при повторном нажатии - на английский), то тогда ввод даже достаточно короткого слова превращается в квест)
Сообщение отредактировал Gregory - Пт, 19.08.2022, 19:54
а если не сами буквы переопределить, а сочетания с контрол/альт/шифт? тоже не получается?
именно это предложено в посте №4 выше) а я ответил в посте №5, что так, конечно, можно, но [лат]С[alt - A] вместо [лат]С[рус]Ф ненамного лучше. Можно переопределить клавиши, чтобы все вводить с Alt (собственно, Smoker именно это и предлагает), и для OKO с их двух буквенными командами это вполне приемлемо. Но меня удивляет другое - дистрибуция IBM Personal Communcation занимает почти гигабайт. Дистрибуция wc3270 занимает 2 мегабайта. При этом в IBM Personal Communcation отсутствуют простейшие (и нужные) функции, которые в wc3270 есть, зато имеются многочисленные никому не нужные перделки и свистелки). ну и проектировщики OKO, конечно тоже дебилы молодцы - это же надо додуматься до таких аббревиатур... впрочем, я видел одну диалоговую систем с командой ЫРСПЧ (вЫвод РаСПеЧатки)
Сообщение отредактировал Gregory - Сб, 20.08.2022, 21:31
ну, если переопределить все заглавные - т.е. шифт-(клавиша), то писать можно заглавными буквами, нажав на капслок, и никуда не переключаясь. всё вопрос спроса. что-то мне подсказывает, что спрос на дкои к2 несравнимо меньше, чем на "перделки и свистелки".
всё вопрос спроса. что-то мне подсказывает, что спрос на дкои к2 несравнимо меньше, чем на "перделки и свистелки".
сейчас, конечно, да. Вопрос ведь возник именно из-за какого-то ренессанса антикварных систем) Но вот более актуальные примеры - в wc3270 можно сохранить экран в виде html, и такие "картинки" можно вставлять в любой документ (это, фактически, таблица 1x1), внешний виде неотличим от графики но размеры в десятки раз меньше, да подправить можно при необходимости. Зачем в PCCOMM 3 разных API? Почему в раскладке клавиатуры по умолчанию функция это правый cntrl? То, что на каком-то музейном устройстве (3270), которого никто из людей, моложе 40 лет в глаза не видел, был именно в этом месте, это аргумент? ну так по такой логике надо в автомобиле вместо руля делать вожжи)
Сообщение отредактировал Gregory - Сб, 20.08.2022, 22:04
ну, я давно привык к вводу правым контролем. и когда были другие приложения - просто переопределял. ентер - новая строка, правый контрол - ввод. мне лень ставить wc3270 и разбираться. но совсем не уверен, что он поддерживает все те "перделки и свистелки", которые конкретно у нас используются.