1 Отредактировано garnizon (09-12-2018 21:31)

Тема: Переназначение клавиш в эмуляторе Agat vX.XX

У меня на почте, уже 5 или 6 раз, за этот год, спрашивают как переназначить клавиатуру в эмуляторе.
Вот последнее:

Сегодня поставил эмулятор агата с Вашего сайта. Есть трудности с управлением в играх на клавиатуре ноутбука.
Я так понимаю много игр назначены на дополнительную клавиатуру, которая отсутствует на ноутах. Можно как-то переназначить или подредактировать default.bin раскладки
?


Я сам этим никогда не занимался, может кто из форумчан подскажет как лучше, или сгенерирует подходящий файл (ну скажем notebook.bin).
Но вот что мне писал, несколько лет назад, относительно этого Олег (на тот момент единственный автор эмулятора):


Редактирование раскладки можно выполнить очень просто: находишь код ($C00X)
для нужной клавиши при текущей раскладке и меняешь в файле раскладки все
байты с этим кодом на требуемый код. Более подробное описание требует
создания таблиц перекодировки клавиш, чем заниматься нет времени.

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

Общий формат файла кодировки следующий. Это последовательность таблиц
размером по 128 байт, каждая из которых содержит соответствие scan-кодов
клавиш и кодов символов Агата. Scan-код - это код отдельной физической
клавиши на клавиатуре PC. Таблицу кодов клавиш AT-клавиатуры можно
посмотреть, например, здесь:
http://www.barcodeman.com/altek/mule/scandoc.php. В этой таблице 2-х
байтовые коды представляют собой расширенные клавиши, о которых будет
сказано ниже. В итоге i-й байт в каждой 128-байтовой таблице представляет
собой код символа, который будет выводиться в порт $C00X при нажатии на
клавишу со scan-кодом i.

Назначение таблиц следующее:
1. Раскладка при обычном нажатии
2. Раскладка при нажатии с Shift
3. Раскладка при нажатии с Ctrl
4. Раскладка для расширенных кодов (номер - младший байт в scan-коде) -
клавиши стрелок, боковая клавиатура и т.п.

В старых версиях раскладка состояла из этих четырех таблиц, в новой
добавлено ещё 4 таблицы, определяющие раскладку для русского языка. При этом
старые файлы раскладок тоже поддерживаются, для них различий в языке
клавиатуры не делается.

Поскольку разные программы на Агате по-разному обрабатывали режим Рус/Lat, я
подготовил альтернативную раскладку для Рапиры, в которой расположение
символов с Shift в русском/латинском режимах поменяно местами. Это будет
доступно в версии 1.10.

Если хочешь, можешь запостить это описание в форумы, т.к. в справку его я
вряд ли буду выносить.