Получение клавиш со стрелками от 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;
}