Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Можно ли сэмулировать нажатие сочетания клавиш в DOS-е?
RSS

Можно ли сэмулировать нажатие сочетания клавиш в DOS-е?

<<Назад  Вперед>> Печать
 
sanders
Advanced Member
Профессионал

Откуда: Санкт-Петербург
Всего сообщений: 6434
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
26 мар. 2008
Смысл в том, что некий древний ноутбук не запоминает после перезагрузки настройку яркости DSTN-экрана. Чтоб ее вывести на комфортный уровень, нужно после включения (и даже после "теплой" перезагрузки) три раза нажать FN+яркость. Я хочу сделать программку, делающую это за меня.
Можно ли сначала перехватить нажатие клавиш, чтобы получить код этого сочетания? Скорее всего да, что-то такое я делал 25 лет назад, тыря пароли в институте.
А вот дальше - куда этот код заслать? В стандартный обработчик BIOS? Это и должна выполнять программка на ассемблере или даже на Паскале, поскольку Паскаль я знаю, а размер кода не важен, т.к. программка не остается резидентной в ОЗУ.
А может DOS не знает таких клавиш, как "FN", "яркость+", "яркость-", и если я перехвачу прерывание DOS, то не получу никаких кодов? Не будет никакого прерывания по клавиатуре?
Escalibur
Advanced Member


Откуда: Москва
Всего сообщений: 945
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 окт. 2017
sanders, я думаю, эти сочетания не отловить программно. Не все коды клава возвращает, сочетания FN ИМХО не отловишь, т.к. они реализованы железно.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Предлагаю посмотреть, отправляется ли какой-либо scan-code при нажатии этих клавиш в программе тестирования клавиатуры, по моему есть в AMI DIAG
(как во встроенной диагностике у 286 плат)
sanders
Advanced Member
Профессионал

Откуда: Санкт-Петербург
Всего сообщений: 6434
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
26 мар. 2008
Нет там ничего встроенного. ХТ-шка эта с зашитым DOS-ом и собственным BIOS.
Может, как-то "сесть" на IRQ1 и выдавать на экран коды нажатий, а потом возвращать коды на дальнейшую обработку? Если коды "FN+яркость" появятся, тогда уже думать что с ними дальше делать.
int 1 я же смогу перенаправить на свой обработчик?
lexx
Full Member


Откуда: Москва/СПб
Всего сообщений: 227
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 авг. 2010
Я, может быть, ошибаюсь, но scan-code никуда не отправляется, а считывается обработчиком прерывания INT9h из порта 60h. Нужно просто перехватить вектор INT9h и прочитать скан-код из порта раньше стандартного обработчика.

sanders написал:
[q]
int 1 я же смогу перенаправить на свой обработчик?
[/q]
Не int 1 а INT9. При инициализации контроллера прерываний линии IRQ 1 соответствует вектор INT 9
uav1606
Advanced Member


Откуда: Енакиево
Всего сообщений: 4373
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 янв. 2008
По-хорошему, надо бы покопаться в коде BIOS, найти код изменения яркости, а потом повторить его в своей программе нужным образом. (Т.е. выяснить, к примеру, в какие порты идёт при этом запись и т.п.)

Что касается клавиатуры...
Ну, узнать скан-код можно попытаться с помощью спец. программ вроде этой:
ftp://ftp2.se.netbsd.org/mirro...ncodtp.zip
А вот как его сымитировать...
Есть функция 05 прерывания Int 16h, которая предназначена для имитации нажатия клавиш, но она больше для пользовательских программ, вряд ли BIOS на это как-то прореагирует.
Есть и программы для этого, вроде вот этой:
ftp://ftp2.se.netbsd.org/mirro...ncd500.zip
Но то же возражение - BIOS, скорее всего, будет на эту имитацию наплевать...
sanders
Advanced Member
Профессионал

Откуда: Санкт-Петербург
Всего сообщений: 6434
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
26 мар. 2008
Если бы кто-то взялся за исследования кода BIOS, я бы считал Debug-ом BIOS, только вот он может быть не только в видимой части E000-FFFF, но и в какой-то скрытой, как скрыта MS-DOS, зашитая там же в ROM, и тогда я считаю не всё.
А за ссылки спасибо, на выходных попробую.
<<Назад  Вперед>> Печать
Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Можно ли сэмулировать нажатие сочетания клавиш в DOS-е?
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS