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

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

1 ответ

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