Сборка 8086 Одновременное нажатие двух скан-кодов

Я пытаюсь написать код, который переводит экран в полноэкранный режим. Проблема в том, что я запускаю программирование в dosbox (windows), поэтому мне нужно сделать dosbox полноэкранным. Я провел исследование и обнаружил, что при нажатии ALT+ENTER dosbox становится полноэкранным. Проблема в том, что я не хочу, чтобы пользователь переходил в полноэкранный режим, и я хочу, чтобы это делала сама программа.

После другого исследования я нашел int 16h, 05h. Я установил Cl в значение ASCII кнопки ENTER (0Dh). Затем я установил в CH скан-код ALT (38h). Затем я проверил его, и все же он не превратился в полноэкранный режим. Я проверил, чтобы убедиться, что код сканирования ALT работает, изменив CL на другой символ, и это сработало, так что проблема не в этом. Затем я попытался изменить CH на ALT+ENTER (0Ah), и это все равно не сработало.

Я думаю, проблема в том, что int 16h, 05 отправляет код сканирования и символ ASCII, и я пытаюсь ссылаться на символ ASCII как на кнопку.

Есть ли способ нажать 2 кода сканирования одновременно? (Или зажать ALT, а затем с помощью int 16h,05h нажать на клавишу ENTER?)

Благодарю вас!


person morha13    schedule 06.02.2016    source источник
comment
Я подозреваю, что графический интерфейс захватывает только ALT+ENTER при отправке из ОС хоста, а не из эмулируемой ОС.   -  person Joachim Isaksson    schedule 06.02.2016
comment
@JoachimIsaksson Итак, я подумал, что, возможно, можно использовать int 9h, чтобы обмануть его, но я понятия не имею, как это сделать, и возможно ли это вообще.   -  person morha13    schedule 06.02.2016
comment
Я не думаю, что в любом случае программа, работающая внутри DOSBox, может сказать, что она переключается в полноэкранный режим. Имитация нажатия клавиш в DOSBox не сработает. Как сказал Иоахим, нажатие клавиши ALT-ENTER должно исходить от ОС, под которой работает DOSBox.   -  person Ross Ridge    schedule 06.02.2016


Ответы (1)


Затем я установил в CH скан-код ALT (38h). ... Я проверил, чтобы убедиться, что код сканирования ALT работает, изменив CL на другой символ, и это сработало, так что проблема не в этом.

Функция BIOS, имитирующая нажатия клавиш, никогда не будет работать с ALT так, как вы себе это представляете. ALT — это просто специальная клавиша, которая изменяет коды ASCII и SCAN других клавиш, она никогда не будет отображаться сама по себе ни в какой части кодировки. Установка CH на 38 часов не будет работать.


Развертывание окна DOSBOX в полноэкранном режиме — это операция Windows. Вы можете сделать это только из кода программирования Windows. Вы не можете сделать это из программы DOS, работающей в эмуляторе DOSBOX.


Об идее имитации ALT-ENTER.
В старые добрые времена Windows 3.1 у вас был файл конфигурации PIF, который позволял вам указать, будут ли определенные комбинации клавиш обрабатываться Windows или программой DOS, работающей в Windows. Сделав правильный выбор, ваша программа DOS могла получить клавишу ALT-ENTER.

Возможно, в этот момент вы могли бы попробовать выполнить настоящую программу Windows, чтобы максимизировать окно программы DOS.

person Fifoernik    schedule 06.02.2016