удерживайте экран для принятия клавиш со стрелками

для использования клавиш со стрелками, сначала он должен быть сохранен для анализа. Вот почему я использую 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;
}

3

Решение

Вам будет легко, если вы используете библиотеку 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();
}
1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector