Получить коды клавиш стрелок клавиатуры - C (СИ)
Формулировка задачи:
#include <conio.h> #include <stdio.h> void main() { unsigned char g; do { g=getch(); printf("%c %i\n",g,g); }while(g != '0'); }
Решение задачи: «Получить коды клавиш стрелок клавиатуры»
textual
Листинг программы
#define KEYBOARD_READ_OR_WAIT (0x1000) #define KEYBOARD_READY_TEST (0x1100) #define KEYBOARD_SHIFT_STATUS (0x1200) while (iCnt < 2) { wStatus = KeyStatus(KEYBOARD_SHIFT_STATUS); if (wStatus != wOldStatus) { DisplayStatus(); wOldStatus = wStatus; } if (KeyStatus(KEYBOARD_READY_TEST)) { // Key Pressed wKey = KeyStatus(KEYBOARD_READ_OR_WAIT); ClearInput(); if (wKey == KEY_ESC) { ++iCnt; } else { iCnt = 0; } ...
Объяснение кода листинга программы
- В начале кода определяются несколько констант, которые представляют собой коды клавиш стрелок клавиатуры:
#define KEYBOARD_READ_OR_WAIT (0x1000)
#define KEYBOARD_READY_TEST (0x1100)
#define KEYBOARD_SHIFT_STATUS (0x1200)
- Затем следует цикл
while
, который выполняется до тех пор, пока счетчикiCnt
меньше 2:wStatus = KeyStatus(KEYBOARD_SHIFT_STATUS);
- Если текущее состояние клавиш отличается от предыдущего, то вызывается функция
DisplayStatus()
, которая выводит текущее состояние клавиш на экран. Затем переменнаяwOldStatus
обновляется текущим состоянием клавиш. - Если готова к нажатию клавиша теста готовности клавиатуры (
KeyStatus(KEYBOARD_READY_TEST) == 1
), то выполняются следующие действия:wKey = KeyStatus(KEYBOARD_READ_OR_WAIT);
- Вызывается функция
ClearInput()
, которая, вероятно, очищает буфер ввода. - Если значение переменной
wKey
равноKEY_ESC
, то счетчикiCnt
увеличивается на 1. - В противном случае, счетчик
iCnt
сбрасывается в 0.
- Код не завершается в предоставленном фрагменте, поэтому неизвестно, что происходит после этого.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д