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.

Объяснение кода листинга программы

  1. Установка начального значения для всех клавиш в массиве key.
  2. Замена обработчика прерывания 09 на новый09.
  3. Проверка нажатия клавиш Ctrl+5 и вывод сообщения, если это произошло.
  4. Возврат к старому обработчику прерывания 09.
  5. Чтение значения из порта $60 и сохранение его в переменную a.
  6. Сохранение в массиве key булевого значения (a and $80)=0.
  7. Вызов функции inline($9C).
  8. Вызов старого обработчика прерывания 09.
  9. Проверка нажатия клавиш и обработка события KeyPressed.
  10. Проверка нажатия клавиш Ctrl+5 и вывод сообщения, если это произошло.
  11. Установка обработчика прерывания 09 на old09.
  12. Чтение значения из порта $60 и сохранение его в переменную a.
  13. Сохранение в массиве key булевого значения (a and $80)=0.
  14. Вызов функции inline($9C).
  15. Вызов старого обработчика прерывания 09.
  16. Проверка нажатия клавиш и обработка события KeyPressed.
  17. Проверка нажатия клавиш Ctrl+5 и вывод сообщения, если это произошло.
  18. Установка обработчика прерывания 09 на old09.
  19. Чтение значения из порта $60 и сохранение его в переменную a.
  20. Сохранение в массиве key булевого значения (a and $80)=0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы