2014-11-20 60 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