Ввод русских символов при программировании для DOS и Windows через эмуляторы DosBox / Bochs/ LBochs

При разработке дос-оболочки на андроид-телефоне под DosBox-ом (история описана в Разработка оболочки-проводника для DOS в 2017 году ) весь русский текст приходилось вводить в Visual Basic for MS-DOS вслепую. Выглядело это так: переключаем русификатор на русский и на английской клавиатуре подбираем символы, вспоминая что "qwertyuiop[]" это "йцукенгшщзхъ". Но в той оболочке было лишь немного русского текста для русского варианта интерфейса, поэтому это было терпимо.

С появлением более мощного телефона, установкой на него Bochs, а затем LBochs-эмулятора и установкой Windows 98/XP, стало понятно, что теперь-то можно, например, спокойно поставить Delphi 7 и писать под Win32 что-нибудь, или поставить HTML Help Workshop и создавать CHM-файлы помощи для своих программ. Но и в LBochs встроенная клавиатура имеет только англоязычную раскладку и русский язык с нее можно вводить опять только наугад.


Стало ясно, что для удобства программирования и в DosBox, и в LBochs нужна клавиатура, которая будет вводить всегда английские символы (а заменять их на русские будет русификатор в DOS или языковые службы/языковая панель Windows). При этом русские символы должны отрисовываться на клавишах чтобы просто выбирать нужную клавишу глазами, а не вспоминать русскую раскладку. Тут есть два варианта:

- на каждой английской клавише такой клавиатуры также дополнительно будет нарисован соответствующий русский символ (как это сделано на любой физической клавиатуре PC);

- на клавиатуре будет кнопка переключения с английской раскладки на русскую раскладку, и в зависимости от текущей раскладки будут отображаться или только английские символы на клавишах, или только русские.


Поискав в интернете готовые android-клавиатуры, вводящие только английские символы, но отображающие на кнопках английские и русские символы - я ничего не нашел (плохо искал м.б.).


Одно из упоминаний на одном из форумов от 2012 года: hacker's keyboard позволяет ввести англоязычный символ если переключиться на русскую раскладку, но при этом ДОЛГО жать клавишу с русскоязычным символом. Но у меня на последней версии этой клавиатуры это из коробки не заработало, да и каждый раз удерживать долго клавишу для ввода одного единственного символа - это тяжело.

Еще одно из упоминаний - клавиатура, встроенная в Magic DosBox (одно из ответвлений досбокса). Она показана в этом ролике от 2016 года:

Здесь на клавишах сразу и русские, и английские символы. И на LBochs эту клавиатуру не перетащишь, т.к. она встроена в Magic DosBox.


Пришлось изобретать велосипед писать свою клавиатуру. Т.к. однажды уже пришлось придумывать раскладку экранной клавиатуры, то решено было взять ее. В исходном программном продукте под названием "браузер Bro", встроенном в мультимедиа-редактор PaintCAD 4Windows, она выглядела вот так:

Попытка №1

Так сильно хотелось вводить русский текст в LBochs под Windows, что первая попытка была - просто скопипастить эту клавиатуру в отдельный Win32 проект. Получилась утилита под названием BroKB (клавиатура из браузера Bro), которая имеет на форме клавиатуру и текстовое поле. Жмем кнопки - и текст вводится в поле. Потом готовый текст копируем и вставляем в нужное место. Эдакая виртуальная недоклавиатура под Windows, работающая в любом Windows с Windows 95 и выше, умеющая вводить текст только в саму себя (но не в другие окна/поля):

Попытка №2

Елозить мышкиным курсором в LBochs на телефоне по клавишам быстро надоело, и поэтому для ускорения русскоязычного ввода текста была предпринята вторая попытка - настоящая android-клавиатура. Был взят гайд "как сделать клавиатуру под андроид", была взята за основу эта же раскладка клавиш браузера Bro, но добавлен ряд клавиш F1-F12, а также ряд с кнопкой Esc и кнопками перемещения курсора (с самого первого моего андроида 2.3.3 не понимал почему на дефолтной клавиатуре нет клавиш перемещения курсора, как будто пользователи не вводят текстом, а только проматывают текстовые поля и кликают толстым пальцем в нужное место, с трудом туда попадая). Обязательно хотелось полупрозрачности чтобы сквозь клавиатуру был виден эмулятор и это тоже было вписано в xml-стиле фона клавиатуры, а также в xml-стилях клавиш ненажатых и клавиш нажатых.

Получилось вот это - под названием BroKB Emulz (т.е. "BroKB для эмуляторов") - показано ниже в горизонтальном и вертикальном варианте (dosbox turbo, android 2.3.3, samsung galaxy ace с экраном 320x480). В случае с Кирандией вводить русские символы в название сейва мне игра не дала (хотя может она просто не пропускает переключение языка русификатора keyrus по F12), поэтому скрин дан для общего представления как выглядит клавиатура в портретном представлении. А еще меня осенило - вот для кого делали режим с грубым разрешением 320х200 точек и 256 цветами - для телефонов с досбоксом и с экраном 320х480, полэкрана у которых - это ровно разрешение картинки игры! На компе этот режим всегда казался очень крупноточечным, а вот на телефоне, когда всё идеально пиксель в пиксель - это красиво!

Второй ряд символьных клавиш asdfgh... пришлось сдвинуть в xml-файле параметром android:horizontalGap="3.25%", суммарное количество процентов ряда клавиш было подогнано под 100% = 3,25% + 6,5%*11 + 25,25% и ожидалось, что ряд клавиш займет ровно целый экран, но не тут то было! Android-ы разных версий по разному реагируют на android:horizontalGap, на каких-то андроидах кнопка Ввод вылезает вправо (процента на полтора-два от ширины экрана, т.е. меньше чем сдвиг ряда слева на 3,25%), а на каких-то заканчивается ровно с остальными рядами (тестировалось на 2.3.3, 5.0, 7.0, 10). Хотя может это я такой криворук (например, если еще какими-то параметрами указываются зазоры между клавишами, и тогда только сумма ширин клавиш равна 100%, а с суммой ширин зазоров получается общая ширина ряда больше 100% - из-за этого ряд клавиш вылезает вправо).

Заключение

Итого - получившаяся клавиатура вводит русские и английские буквы в DOS (DosBox) и в Windows XP (LBochs):

Файлы

Если кто искал подобный софт для ввода русского текста, то вот эта получившаяся клавиатура под android: https://play.google.com/store/apps/details?id=com.bss.brokb (или вот APK без гуглплея - http://blackstrip.ru/brokb.apk )

Также вот результаты первой попытки - виртуальная недоклавиатура под Windows, вводящая текст только в саму себя: http://blackstrip.ru/brokb.exe

Лига программистов

2.3K постов12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества