1

我刚刚为 SDL2 设置游戏手柄,我一直在为该SDL_GameControllerAddMapping功能创建映射。除了我的垫子上的运动轴和观察轴外,一切都正常工作。

像这样设置:

game_state->joystick = SDL_JoystickOpen( 0 );

然后听这样的事件:

SDL_Joystick* js = game_state->joystick;

for ( unsigned int i = 0; i < SDL_JoystickNumAxes( js ); ++i )
{
  int axis = SDL_JoystickGetAxis( js, i );
  printf( "a%d: %d\n", i, axis );
}

像这样关闭:

SDL_JoystickClose( game_state->joystick );

目前game_state只是一个结构,其中只有一个SDL_Joystick*

我得到类似这样的输出:

a0: 0
a1: 0
a2: -32768
a3: 0
a4: 0
a5: -32768

如果我一直扣动扳机,我会得到:

a0: 0
a1: 0
a2: 32767
a3: 0
a4: 0
a5: 32767

这告诉我触发器应该映射到 a2 和 a5,但移动轴和观察轴不会改变这些值,并且它们不会出现在任何其他操纵杆输入类型中。我已经用过SDL_JoystickGetHat,SDL_JoystickGetButtonSDL_JoystickGetBall来映射焊盘的其余部分。

其他按钮也不会更改这些值。我不确定,但我可能遗漏了一些东西。我浏览了 SDL2 wiki,但没有找到任何帮助。我也用谷歌搜索了我的垫子的映射,但我唯一能找到的是这个。不幸的是,他们错过了我的。其他谷歌结果建议使用 Steam 的大图片模式来配置我的平板电脑,因为这会生成 SDL2 映射,但我的大脑不会参与,我不明白我应该做什么。

我正在使用这些驱动程序。在安装它们之前,我的垫子根本不被识别。安装后我遇到了这个问题。


更新:

我玩过 jstest-gtk,它报告了同样的事情。它说存在六个轴,但是 0、1、3、4 似乎没有被板上的任何东西触发。


编辑:

哦,我忘了提到我使用的是 ubuntu 15.10。


更新 2:

我现在有一个官方的 xbox one pad,它工作正常。另一个垫的问题仍然存在。这是一款适用于 Xbox One 的冰糖有线控制器。

我也在 Steam 上使用了这两个垫子。冰糖的问题也存在。现在我将假设这是驱动程序的问题。源代码可用,但我没有使用 Linux 内核的经验,所以为了我的系统,我将不理会它。

4

0 回答 0