2014-11-20 29 views
2

来源是很基本的:如何在Mac上使用SDL上的游戏杆?

#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,却没有关于我的Mac小牛与SDL 1.2.15,从家酿安装。以root身份运行它没有任何区别。我现在假设这只是SDL中的一个错误,但我很想证明我在这里做错了什么。

来源的位置:https://github.com/mikepurvis/joystick_sdl

+0

您可能必须在Mac上手动安装驱动程序。例如,我查找Mac的Xbox360控制器的驱动程序,只能找到安装第三方软件的说明。 – KuramaYoko 2014-11-20 22:55:00

+0

360控制器特别需要自己的驱动程序。我正在谈论标准的HID游戏杆,它几乎可以肯定只是开箱即用。 – mikepurvis 2014-11-21 12:49:19

+0

一些操作系统将输入链接到一个窗口。您可能必须创建一个窗口才能从游戏板接收输入事件。 – 2014-12-19 20:48:55

回答

1

你需要看看下面SDL2函数调用:

SDL_GameControllerAddMappingsFromFile

这将在手柄的配置读取不受SDL2支持出来的游戏手柄盒子。

为了得到一个社区维护控制器的列表,请看看:,你需要运行SDL /测试/ controllermap gamecontrollerdb.txt

要创建你自己的,你可能已经躺在附近不起眼的游戏键盘映射.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