Port[$60] Не работают управляющие клавиши Ctrl, Alt и т.д - Turbo Pascal
Формулировка задачи:
Всем доброго времени суток!
проблема следующая: есть обработчик прерываний клавиатуры, в котором к клавишам привязаны какие то действия. Возникла проблема с управляющими клавишами. Нужно сделать комбинацию Ctrl + 5, но Ctrl никак не хочет работать. Помогите пожалуйста.
Решение задачи: «Port[$60] Не работают управляющие клавиши Ctrl, Alt и т.д»
textual
Листинг программы
uses WinDos,crt; const keyEsc=1; key5=6; keyCtrl=29; var i:byte; key:array[1..127]of boolean; old09:procedure; procedure new09;interrupt; var a:byte; begin a:=port[$60]; key[a and $7F]:=(a and $80)=0; inline($9C); old09; end; begin for i:=1 to 127 do key[i]:=false; GetIntVec(09,@old09); SetintVec(09,@new09); repeat while KeyPressed do ReadKey; if key[keyCtrl] and key[key5] then writeln('press Ctrl+5'); until key[KeyEsc]or(key[keyCtrl] and key[key5]); SetIntVec(09,@old09); readln; end.
Объяснение кода листинга программы
- Установка начального значения для всех клавиш в массиве key.
- Замена обработчика прерывания 09 на новый09.
- Проверка нажатия клавиш Ctrl+5 и вывод сообщения, если это произошло.
- Возврат к старому обработчику прерывания 09.
- Чтение значения из порта $60 и сохранение его в переменную a.
- Сохранение в массиве key булевого значения (a and $80)=0.
- Вызов функции inline($9C).
- Вызов старого обработчика прерывания 09.
- Проверка нажатия клавиш и обработка события KeyPressed.
- Проверка нажатия клавиш Ctrl+5 и вывод сообщения, если это произошло.
- Установка обработчика прерывания 09 на old09.
- Чтение значения из порта $60 и сохранение его в переменную a.
- Сохранение в массиве key булевого значения (a and $80)=0.
- Вызов функции inline($9C).
- Вызов старого обработчика прерывания 09.
- Проверка нажатия клавиш и обработка события KeyPressed.
- Проверка нажатия клавиш Ctrl+5 и вывод сообщения, если это произошло.
- Установка обработчика прерывания 09 на old09.
- Чтение значения из порта $60 и сохранение его в переменную a.
- Сохранение в массиве key булевого значения (a and $80)=0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д