Можно ли сэмулировать нажатие сочетания клавиш в DOS-е?
- sanders
- Advanced Member
- Сообщения: 9377
- Зарегистрирован: 26.03.2008,14:47
- Откуда: Санкт-Петербург
-
Вклад в сообщество
Можно ли сэмулировать нажатие сочетания клавиш в DOS-е?
Смысл в том, что некий древний ноутбук не запоминает после перезагрузки настройку яркости DSTN-экрана. Чтоб ее вывести на комфортный уровень, нужно после включения (и даже после "теплой" перезагрузки) три раза нажать FN+яркость. Я хочу сделать программку, делающую это за меня.
Можно ли сначала перехватить нажатие клавиш, чтобы получить код этого сочетания? Скорее всего да, что-то такое я делал 25 лет назад, тыря пароли в институте.
А вот дальше - куда этот код заслать? В стандартный обработчик BIOS? Это и должна выполнять программка на ассемблере или даже на Паскале, поскольку Паскаль я знаю, а размер кода не важен, т.к. программка не остается резидентной в ОЗУ.
А может DOS не знает таких клавиш, как "FN", "яркость+", "яркость-", и если я перехвачу прерывание DOS, то не получу никаких кодов? Не будет никакого прерывания по клавиатуре?
Можно ли сначала перехватить нажатие клавиш, чтобы получить код этого сочетания? Скорее всего да, что-то такое я делал 25 лет назад, тыря пароли в институте.
А вот дальше - куда этот код заслать? В стандартный обработчик BIOS? Это и должна выполнять программка на ассемблере или даже на Паскале, поскольку Паскаль я знаю, а размер кода не важен, т.к. программка не остается резидентной в ОЗУ.
А может DOS не знает таких клавиш, как "FN", "яркость+", "яркость-", и если я перехвачу прерывание DOS, то не получу никаких кодов? Не будет никакого прерывания по клавиатуре?
- sanders
- Advanced Member
- Сообщения: 9377
- Зарегистрирован: 26.03.2008,14:47
- Откуда: Санкт-Петербург
-
Вклад в сообщество
Нет там ничего встроенного. ХТ-шка эта с зашитым DOS-ом и собственным BIOS.
Может, как-то "сесть" на IRQ1 и выдавать на экран коды нажатий, а потом возвращать коды на дальнейшую обработку? Если коды "FN+яркость" появятся, тогда уже думать что с ними дальше делать.
int 1 я же смогу перенаправить на свой обработчик?
Может, как-то "сесть" на IRQ1 и выдавать на экран коды нажатий, а потом возвращать коды на дальнейшую обработку? Если коды "FN+яркость" появятся, тогда уже думать что с ними дальше делать.
int 1 я же смогу перенаправить на свой обработчик?
Я, может быть, ошибаюсь, но scan-code никуда не отправляется, а считывается обработчиком прерывания INT9h из порта 60h. Нужно просто перехватить вектор INT9h и прочитать скан-код из порта раньше стандартного обработчика.
Не int 1 а INT9. При инициализации контроллера прерываний линии IRQ 1 соответствует вектор INT 9sanders писал(а):int 1 я же смогу перенаправить на свой обработчик?
- uav1606
- Advanced Member
- Сообщения: 5976
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
По-хорошему, надо бы покопаться в коде BIOS, найти код изменения яркости, а потом повторить его в своей программе нужным образом. (Т.е. выяснить, к примеру, в какие порты идёт при этом запись и т.п.)
Что касается клавиатуры...
Ну, узнать скан-код можно попытаться с помощью спец. программ вроде этой:
ftp://ftp2.se.netbsd.org/mirror/archive ... ncodtp.zip
А вот как его сымитировать...
Есть функция 05 прерывания Int 16h, которая предназначена для имитации нажатия клавиш, но она больше для пользовательских программ, вряд ли BIOS на это как-то прореагирует.
Есть и программы для этого, вроде вот этой:
ftp://ftp2.se.netbsd.org/mirror/archive ... ncd500.zip
Но то же возражение - BIOS, скорее всего, будет на эту имитацию наплевать...
Что касается клавиатуры...
Ну, узнать скан-код можно попытаться с помощью спец. программ вроде этой:
ftp://ftp2.se.netbsd.org/mirror/archive ... ncodtp.zip
А вот как его сымитировать...
Есть функция 05 прерывания Int 16h, которая предназначена для имитации нажатия клавиш, но она больше для пользовательских программ, вряд ли BIOS на это как-то прореагирует.
Есть и программы для этого, вроде вот этой:
ftp://ftp2.se.netbsd.org/mirror/archive ... ncd500.zip
Но то же возражение - BIOS, скорее всего, будет на эту имитацию наплевать...