Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Резидентный обработчик клавиатуры (ассемблер)

6.3K
15 декабря 2005 года
Slava_rec
16 / / 20.11.2004
Возникла проблема... Пишу резидентный обработчик нажатия клавиш клавы для DOS на ассемблере, который обрабатывает ТОЛЬКО те клавиши, которые я укажу... Обработка происходит посредством переопределения 9-го прерывания на мою подпрограмму, которая получает скан-код из порта 60H и дальше, анализируя его, либо вызывает системный обработчик 9-го прерывания, либо через порт 61H повествует об успешном чтении скан-кода и завершает обработку.
Так вот… КАК сделать, чтобы клавиши цифрового блока справа распознавались как клавиши перемещения курсора? Ведь там последовательность сканов идет с префиксом E0H. Я в проге пишу, что если такой скан-код обнаружен, то вызывается системный обработчик 9-го прерывания. В итоге, при выключенном Num Lock при нажатии на клавишу 4, происходит то же, что и при нажатии на BackSpace. Другие клавиши цифрового блока вообще никак не реагируют.
По идее, если я все правильно понимаю, должно работать как в командной строке, т.е. при нажатии на 4 с выключенным Num Lock должно происходить простое перемещение курсора на позицию влево, а не удаление символа, и так далее…
Как быть?
2.2K
15 декабря 2005 года
Brezhnev1980
156 / / 13.08.2005
Полегче нельзя,что тебе именно подсказать?
6.3K
15 декабря 2005 года
Slava_rec
16 / / 20.11.2004
Цитата:
Originally posted by Brezhnev1980
Полегче нельзя,что тебе именно подсказать?



Подсказать, КАК заставить работать клавиши цифрового блока с ВЫКЛЮЧЕННЫМ Num Lock как клавиши перемещения курсора (стрелка влево, вправо, Page Up, Home и т.д.)

14K
17 декабря 2005 года
Farnsworth
9 / / 17.12.2005
Ну, можно не так круто сразу int 09h, достаточно перехватить int 16h, функцию 01h. Алгоритм таков:

когда вошли в твой обработчик int 16h, проверяем, вызывается-ли функция 01h, если вызывается не она - уходим на старый обработчик.
Если функция 01h, то сначала запускаем старый обработчик и смотрим, какое значение он выдал.
Если нажата клавиша и скан-код у нее [num][pgup] и режим NumLock'а не включен, значит нажата клавиша '9'.
Если нужно её подставить (якобы нажалась клавиша '9', а не [num][pgup], то меняем значение выходного параметра AX.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог