Получить коды клавиш стрелок клавиатуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <conio.h>
#include <stdio.h>
void main()
{
    unsigned char g;
    do
    {
           g=getch();
           printf("%c   %i\n",g,g);
    }while(g != '0');
}
С помощью этой программы я ищу коды клавиш. У меня 1 вопрос. При нажатии стрелочек (Например влево) оно выдает два кода 224 и 75. Вопрос: что надо написать тут while(g != '0'); вместо '0' что бы оно реагировало на нее(надо заменить только '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;
      }
 
...

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

  1. В начале кода определяются несколько констант, которые представляют собой коды клавиш стрелок клавиатуры:
    • #define KEYBOARD_READ_OR_WAIT (0x1000)
    • #define KEYBOARD_READY_TEST (0x1100)
    • #define KEYBOARD_SHIFT_STATUS (0x1200)
  2. Затем следует цикл 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.
  3. Код не завершается в предоставленном фрагменте, поэтому неизвестно, что происходит после этого.

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


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

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

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