SDL2操纵杆轴

时间:2016-05-07 23:52:17

标签: c sdl-2 ubuntu-15.10

我刚刚为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_JoystickGetHatSDL_JoystickGetButtonSDL_JoystickGetBall来映射其余部分。

其他任何按钮都不会更改这些值。我不确定,但我可能错过了一些东西。我查看了SDL2维基,但我找不到任何有用的东西。我还搜索了我的垫子的映射,但我唯一能找到的是this。不幸的是他们想念我的。其他谷歌搜索结果建议使用Steam的大图片模式来配置我的打击垫,因为这将生成SDL2映射,但我的大脑不会参与,我不明白我应该做什么。

我正在使用这些drivers。在安装它们之前我的垫子根本没被识别。安装后我遇到了这个问题。

更新

我玩过jstest-gtk并报告同样的事情。它表示存在六个轴,但是垫片上的任何东西似乎都没有触发0,1,3,4。

编辑:

哦,我忘了提到我正在使用ubuntu 15.10。

更新2:

我现在有一个官方的xbox one pad,它运行正常。但是另一个垫的问题仍然存在。这是Xbox One的Rock Candy有线控制器。

我也在Steam上使用这两个垫。摇滚糖果的问题也出现在那里。现在我要假设它是驱动程序的问题。源代码可用,但我没有使用Linux内核的经验,所以为了我的系统,我将不管它。

0 个答案:

没有答案