Платформо-независимое обнаружение нажатия клавиши со стрелкой в ​​C ++ - PullRequest
2 голосов
/ 13 сентября 2010

В консольной программе на C ++ я обнаружил, как обнаруживать клавиши со стрелками в Windows, и нашел много других вещей, которые не имеют ничего общего с вопросом (несмотря на то, что я считаю хорошими поисковыми терминами) , но я хочу знать, существует ли независимый от платформы способ обнаружить нажатие клавиши со стрелкой. Приличное второе место для этого было бы, как обнаружить нажатие клавиши со стрелкой в ​​Unix и Mac. Фрагменты кода будут оценены.

Ответы [ 3 ]

2 голосов
/ 13 сентября 2010

Нет кроссплатформенного способа сделать это, потому что он не определен ни стандартами C, ни C ++ (хотя могут быть библиотеки, которые абстрагируют различия при компиляции на разных платформах).

Я полагаю, что библиотекаищите на POSIX коробках это curses , но я никогда не использовал его сам - могу ошибаться.

Имейте в виду, что вполне возможна консольная программа (т.е. gnome-terminal или konsole или xterm) монополизировали использование этих клавиш для других функций.

0 голосов
/ 05 января 2018

Вы можете сделать это кроссплатформенно с помощью SDL2 .

Пример кода:

    #include <SDL2/SDL.h>

    int main()
    {
        SDL_Event event;

        SDL_PollEvent(&event);

        if(event.type == SDL_KEYDOWN)
        {
            // Move centerpoint of rotation for one of the trees:
            switch(event.key.keysym.sym)
            {
                case SDLK_UP:
                    // do something
                    break;
                case SDLK_DOWN:
                    // do something
                    break;
                case SDLK_LEFT:
                    // do something
                    break;
                case SDLK_RIGHT:
                    // do something
                    break;
                case SDLK_ESCAPE:
                    // do something
                    return 0;
                default:
                    break;
            }
        }

        return 0;
    }
0 голосов
/ 13 сентября 2010

Как сказал Билли, не существует стандартного кроссплатформенного способа сделать это.

Лично я использую эту (ориентированную на игру) библиотеку для всех входных данных, кросс-платформенный win / linux / mac: http://sourceforge.net/projects/wgois/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...