для использования клавиш со стрелками, сначала он должен быть сохранен для анализа. Вот почему я использую scanf
хранить его.
Но когда я пытаюсь запустить этот код, и когда я нажимаю клавишу вверх, он показывает ^[[A
и когда я нажимаю Enter, то это ^[[A
удаляет и выходит из программы без печати printf printf("%s",c).
а также printf("UP\n").
#include <stdio.h>
int main()
{
char c[50];
scanf("%s",&c);
printf("%s",c);
if (getch() == '\033'){ // if the first value is esc
getch();// skip the [
getch();// skip the [
switch(getch()) { // the real value
case 'A':
printf("UP\n");
break;
case 'B':
printf("DOWN\n");
break;
}
}
return 0;
}
Вам будет легко, если вы используете библиотеку ncurses. Просто пройдите документация чтобы увидеть, как его установить.
После установки прочитайте часть на Взаимодействие с клавиатурой
Вот пример кода
#include <ncurses.h>
int main()
{
int ch;
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
while(1)
{
ch = getch();
switch(ch)
{
case KEY_UP:
printw("\nUp Arrow");
break;
case KEY_DOWN:
printw("\nDown Arrow");
break;
case KEY_LEFT:
printw("\nLeft Arrow");
break;
case KEY_RIGHT:
printw("\nRight Arrow");
break;
}
if(ch == KEY_UP)
break;
}
endwin();
}