来源非常基本:
#include <SDL.h>
int main(int argc, char *argv[])
{
if (SDL_Init(SDL_INIT_JOYSTICK))
{
return 1;
}
int num_joy, i;
num_joy=SDL_NumJoysticks();
printf("%d joysticks found\n", num_joy);
for(i=0;i<num_joy;i++)
printf("%s\n", SDL_JoystickName(i));
SDL_Quit();
return 0;
}
这会输出 Ubuntu 12.04 上连接的操纵杆的名称,但不会在我的 Mavericks Mac(使用 Homebrew 安装的 SDL 1.2.15)上输出。作为 root 运行它没有什么区别。此时我假设这只是 SDL 中的一个错误,但我很乐意看到我在这里做错了什么。
最佳答案
您需要查看以下 SDL2 函数调用:
SDL_GameControllerAddMappingsFromFile
这将读取 SDL2 开箱即用不支持的游戏 handle 配置。
要获取社区维护的 Controller 列表,请查看: gamecontrollerdb.txt
要为您可能随处可见的不起眼的游戏 handle 创建您自己的映射,您需要运行 SDL/test/controllermap.c 示例。 为了在 OSX 上构建这个示例,我使用了:
$ gcc controllermap.c -lSDL2 -I ../include -o controllermap -L ~/lib/ -framework AudioUnit -framework Carbon -framework ForceFeedback -framework CoreAudio -framework CoreVideo -framework IOKit -framework Cocoa
关于macos - 如何在 Mac 上使用 SDL 的操纵杆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27050663/