Резидентный обработчик клавиатуры (ассемблер)
Так вот… КАК сделать, чтобы клавиши цифрового блока справа распознавались как клавиши перемещения курсора? Ведь там последовательность сканов идет с префиксом E0H. Я в проге пишу, что если такой скан-код обнаружен, то вызывается системный обработчик 9-го прерывания. В итоге, при выключенном Num Lock при нажатии на клавишу 4, происходит то же, что и при нажатии на BackSpace. Другие клавиши цифрового блока вообще никак не реагируют.
По идее, если я все правильно понимаю, должно работать как в командной строке, т.е. при нажатии на 4 с выключенным Num Lock должно происходить простое перемещение курсора на позицию влево, а не удаление символа, и так далее…
Как быть?
Полегче нельзя,что тебе именно подсказать?
Цитата:
Originally posted by Brezhnev1980
Полегче нельзя,что тебе именно подсказать?
Полегче нельзя,что тебе именно подсказать?
Подсказать, КАК заставить работать клавиши цифрового блока с ВЫКЛЮЧЕННЫМ Num Lock как клавиши перемещения курсора (стрелка влево, вправо, Page Up, Home и т.д.)
когда вошли в твой обработчик int 16h, проверяем, вызывается-ли функция 01h, если вызывается не она - уходим на старый обработчик.
Если функция 01h, то сначала запускаем старый обработчик и смотрим, какое значение он выдал.
Если нажата клавиша и скан-код у нее [num][pgup] и режим NumLock'а не включен, значит нажата клавиша '9'.
Если нужно её подставить (якобы нажалась клавиша '9', а не [num][pgup], то меняем значение выходного параметра AX.