Получение клавиш со стрелками от cin

Я уверен, что это должно было предложено раньше, но быстрый поиск ничего не нашел.

Как я могу получить клавиши со стрелками/направлении с cin на c++?

2 ответов


C++ не имеет понятия о клавиатуре или консоли. Он знает только о непрозрачном потоке входных данных.

ваша физическая консоль препроцессирует и буферизует вашу активность клавиатуры и отправляет только приготовленные данные в программу, обычно по очереди. Для непосредственного общения с клавиатурой требуется библиотека обработки терминалов, специфичная для платформы.

в Linux это обычно делается с ncurses или termcap/terminfo библиотеки. В Windows вы можете использовать pdcurses, или, возможно, API Windows (хотя я не знаком с этим аспектом).

графические рамки приложений, такие как SDL, Allegro, Irrlicht или Ogre3D, также поставляются с полной клавиатурой и мышью.


вот указатель, если вы не возражаете использовать getch() расположенном в conio.h.

#include <stdio.h>
#include <conio.h>

#define KB_UP 72
#define KB_DOWN 80
#define KB_LEFT 75
#define KB_RIGHT 77
#define KB_ESCAPE 27


int main()
{
   int KB_code=0;

   while(KB_code != KB_ESCAPE )
   { 
     if (kbhit())
      {
            KB_code = getch();
            printf("KB_code = %i \n",KB_code);

            switch (KB_code)
            {
                case KB_LEFT:
                           //Do something
                break;

                case KB_RIGHT:
                           //Do something                     
                break;

                case KB_UP:
                           //Do something                     
                break;

                case KB_DOWN:
                           //Do something                     
                break;

            }        

      }
  }

  return 0;
}