在C ++中平台无关的箭头按键检测

时间:2010-09-12 21:04:46

标签: c++ user-input

在C ++控制台程序中,我发现了如何在Windows上检测和箭头键,我发现了很多其他与问题无关的东西(尽管我认为是很好的搜索术语) ,但我想知道是否有一种与平台无关的方法来检测箭头按键。一个不错的第二位是如何检测unix和mac中的箭头按键。代码片段将不胜感激。

3 个答案:

答案 0 :(得分:2)

没有跨平台的方法来实现它,因为它没有被C或C ++标准定义(尽管可能有些库在不同平台上编译时会消除差异)。

我相信您在POSIX盒子上寻找的库是curses,但我自己从未使用过它 - 我可能错了。

请注意,控制台程序(即gnome-terminalkonsolexterm)完全有可能将这些密钥用于其他功能。

答案 1 :(得分:0)

正如比利所说,没有标准的跨平台方式来实现它。

我个人使用这个(面向游戏的)库来进行所有输入,跨平台win / linux / mac:http://sourceforge.net/projects/wgois/

答案 2 :(得分:0)

您可以使用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;
    }