0

我正在开发一个需要显示在操纵杆上按下了哪些按钮的应用程序。

为此,我使用 SDL 读取操纵杆的状态,代码为:

bool JoystickInfo::getButton (const int &joystick, SDL_GameControllerButton button)
{
    SDL_JoystickUpdate();
    gameController_ = SDL_GameControllerOpen (joystick);
    return (bool) SDL_GameControllerGetButton (gameController_, button);
}

由于某种原因,此函数始终返回 0(假)。我也尝试过使用 SDL 事件(如此处所示但我也得到了相同的结果。

旁注:

  • 上面的代码在 SDL 1.2 上运行良好,但我需要 SDL 2.0 作为GameControllerAPI。
  • 我以类似的方式读取了操纵杆轴的值,它可以正常工作。
  • SDL_INIT()用 调用SDL_INIT_EVERYTHING

我用于读取轴值的代码是:

double JoystickInfo::getAxis (const int &joystick, SDL_GameControllerAxis axis)
{
    SDL_JoystickUpdate();
    gameController_ = SDL_GameControllerOpen (joystick);
    return (double) SDL_GameControllerGetAxis (gameController_, axis);
}

有什么我想念的吗?

4

1 回答 1

0

我设法通过从文件(例如SDL_GameControllerDB)加载控制器映射来解决我的问题。

一些有用的链接:

于 2015-04-29T01:40:20.493 回答