目次 - SDL 3.0 API(機能別) - ゲームパッド
ゲームパッド
概要
SDLは, ジョイスティックを単にボタン, 方向, ハットスイッチの塊として扱う低レベルジョイスティックAPIを提供している.
もし自分でコントローラの設定画面を作るつもりならば, これは柔軟な対応ができるが, すべきことが多く, さらに現在の「ジョイスティック」のほとんどは実際には家庭用ゲーム機のようなゲームパッドであると考えられる.
そのため, SDLは低レベルジョイスティック機能の上にゲームパッドAPIを提供している.
ジョイスティックとゲームパッドの違いは, ゲームパッドはボタンと方向がデバイス上のどこにあるかがわかることである.
ゲームパッドでは「ボタン3」や「方向2」のような番号ではなく, デバイス上の標準的な位置で扱われる. (十字キー, ショルダーボタン, トリガー, A/B/X/Y(または×/〇/□/△)のような)
ジョイスティックは, SDLにデバイスの使用の詳細を伝える呪文のような文字列(これはあるハードウェアでは, ボタン2が押されると, 実際には十字キーの上などの情報である)でゲームパッドに変わる.
SDLには多くの主要なコントローラの設定が組み込まれている. そしてSDLに組み込まれていない場合は, ユーザは環境変数を通して自分のコントローラの情報を追加できる.
これらの関数を使うときは, SDL_INIT_GAMEPADフラグを付けてSDL_Init()を呼ぶ必要がある. これでSDLはシステムのゲームパッドをスキャンし, 正しいドライバを読み込むようになる.
アプリケーションがバックグラウンドのときもゲームパッドのイベントを受信したい場合は, SDL_Init()を呼ぶ前にSDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTSヒントを設定する必要がある.
ゲームパッドには, 振動, カラーLED, タッチパッド, ジャイロなどの様々な追加機能がある.
これらの機能に対応しているかは, コントローラとOSが対応しているかによる.
実行中にLEDと振動が利用可能かは, SDL_GetGamepadProperties()を呼び, 可不可のプロパティをチェックするとわかる.
タッチパッドはSDL_GetNumGamepadTouchpads()を呼ぶと, ジャイロと加速度センサーはSDL_GamepadHasSensor()を呼ぶとわかる.
デフォルトではSDLは最も受け入れ可能なドライバを使用しようとする. しかし, OSのドライバはSDL_hints.hにある様々なジョイスティックのヒントで調整できる.
アプリケーションはゲームパッドのホットプラグインを行えるべきである.
Xbox, Stram Deckなどの一部の環境では, 審査の必須事項である.
macOSやWindowsなどのその他の環境では, Windows.Gaming.Inputを使っている場合, コントローラは起動時には使えず, プロセスイベントが開始された時点で使えるようになる場合がある.
関数
- SDL_AddGamepadMapping - SDLが認識していないゲームパッドを追加する. または既存のゲームパッドのバインドを変更する
- SDL_AddGamepadMappingsFromFile - ファイルからゲームパッドマッピングを読み込む
- SDL_AddGamepadMappingsFromIO - SDL_IOStreamからゲームパッドマッピングを読み込む
- SDL_CloseGamepad - SDL_OpenGamepad()でオープンしたゲームパッドをクローズする
- SDL_GamepadConnected - ゲームパッドが既にオープンされ接続されているかチェックする
- SDL_GamepadEventsEnabled - ゲームパッドイベント処理の有無を得る
- SDL_GamepadHasAxis - ゲームコントローラーに指定の方向が存在するかチェックする
- SDL_GamepadHasButton - ゲームコントローラーに指定のボタンが存在するかチェックする
- SDL_GamepadHasSensor - ゲームコントローラーに指定のセンサーが存在するかチェックする
- SDL_GamepadSensorEnabled - ゲームパッドのセンサーデータ報告が有効かチェックする
- SDL_GetGamepadAppleSFSymbolsNameForAxis - Apple環境のゲームパッドの指定の方向のsfSymbolsNameを得る
- SDL_GetGamepadAppleSFSymbolsNameForButton - Apple環境のゲームパッドの指定のボタンのsfSymbolsNameを得る
- SDL_GetGamepadAxis - ゲームパッドの方向コントローラーの状態を得る
- SDL_GetGamepadAxisFromString - 文字列からSDL_GamepadAxis列挙体の値を得る
- SDL_GetGamepadBindings - ゲームパッドにバインドされたSDLジョイスティックレイヤを得る
- SDL_GetGamepadButton - ゲームパッドのボタンの状態を得る
- SDL_GetGamepadButtonFromString - 文字列からSDL_GamepadButton列挙体の値を得る
- SDL_GetGamepadButtonLabel - ゲームパッドのボタンのラベルを得る
- SDL_GetGamepadButtonLabelForType - ゲームパッドの種類別のボタンのラベルを得る
- SDL_GetGamepadConnectionState - ゲームパッドの接続状態を得る
- SDL_GetGamepadFirmwareVersion - 可能ならばオープンしたゲームパッドのファームウェアのバージョンを得る
- SDL_GetGamepadFromID - オープンされている場合, インスタンスIDに関連付けられたSDL_Gamepadを得る
- SDL_GetGamepadFromPlayerIndex - プレイヤーインデックス番号に関連付けられたSDL_Gamepadを得る
- SDL_GetGamepadGUIDForID - インスタンスIDからゲームパッドの実装に依存するGUIDを得る
- SDL_GetGamepadID - オープンされたゲームパッドからインスタンスIDを得る
- SDL_GetGamepadJoystick - ゲームパッドの背後のジョイスティックを得る
- SDL_GetGamepadMapping - オープンしたゲームパッドの現在のマッピングを得る
- SDL_GetGamepadMappingForGUID - 指定のGUIDのゲームパッドのマッピング文字列を得る
- SDL_GetGamepadMappingForID - インスタンスIDからゲームパッドのマッピング文字列を得る
- SDL_GetGamepadMappings - ゲームパッドマッピングの一覧を得る
- SDL_GetGamepadName - オープンしたゲームパッドから実装に依存する名前を得る
- SDL_GetGamepadNameForID - インスタンスIDからゲームパッドの実装に依存する名前を得る
- SDL_GetGamepadPath - オープンしたゲームパッドの実装に依存するパスを得る
- SDL_GetGamepadPathForID - インスタンスIDからゲームパッドの実装に依存するパスを得る
- SDL_GetGamepadPlayerIndex - オープンしたゲームパッドのプレイヤーインデックス番号を得る
- SDL_GetGamepadPlayerIndexForID - インスタンスIDからゲームパッドのプレイヤーインデックス番号を得る
- SDL_GetGamepadPowerInfo - ゲームパッドのバッテリー状態を得る
- SDL_GetGamepadProduct - オープンしたゲームパッドからUSBプロダクトIDを得る
- SDL_GetGamepadProductForID - インスタンスIDからゲームパッドのUSBプロダクトIDを得る
- SDL_GetGamepadProductVersion - オープンしたゲームパッドのプロダクトバージョンを得る
- SDL_GetGamepadProductVersionForID - インスタンスIDからゲームパッドのプロダクトバージョンを得る
- SDL_GetGamepadProperties - ゲームパッドに関連付けられたプロパティを得る
- SDL_GetGamepads - 接続されているゲームパッドの一覧を得る
- SDL_GetGamepadSensorData - ゲームパッドのセンサー状態を得る
- SDL_GetGamepadSensorDataRate - ゲームパッドのセンサーのデータレート(1秒当たりのイベント数)を得る
- SDL_GetGamepadSerial - オープンしたゲームパッドのシリアル番号を得る
- SDL_GetGamepadSteamHandle - オープンしたゲームパッドのSteam入力ハンドルを得る
- SDL_GetGamepadStringForAxis - SDL_GamepadAxis列挙体の値から文字列を得る
- SDL_GetGamepadStringForButton - SDL_GamepadButton列挙体の値から文字列を得る
- SDL_GetGamepadStringForType - SDL_GamepadType列挙体の値から文字列を得る
- SDL_GetGamepadTouchpadFinger - ゲームパッドのタッチパッド上の指の状態を得る
- SDL_GetGamepadType - オープンしたゲームパッドの種類を得る
- SDL_GetGamepadTypeForID - インスタンスIDからゲームパッドの種類を得る
- SDL_GetGamepadTypeFromString - 文字列からSDL_GamepadType列挙体の値を得る
- SDL_GetGamepadVendor - オープンしたゲームパッドのUSBベンダーIDを得る
- SDL_GetGamepadVendorForID - インスタンスIDからゲームパッドのUSBベンダーIDを得る
- SDL_GetNumGamepadTouchpadFingers - ゲームパッドのタッチパッドで同時に認識できる指の数を得る
- SDL_GetNumGamepadTouchpads - ゲームパッドのタッチパッド数を得る
- SDL_GetRealGamepadType - オープンしたマッピングの上書きを無視したゲームパッドの種類を得る
- SDL_GetRealGamepadTypeForID - インスタンスIDからマッピングの上書きを無視したゲームパッドの種類を得る
- SDL_HasGamepad - ゲームパッドが接続されているかチェックする
- SDL_IsGamepad - ジョイスティックがゲームパッドインターフェースに対応しているかチェックする
- SDL_OpenGamepad - ゲームパッドを使用するためにオープンする
- SDL_ReloadGamepadMappings - ゲームパッドのマッピングデータベースを初期状態に戻す
- SDL_RumbleGamepad - ジョイスティックの振動を開始する
- SDL_RumbleGamepadTriggers - ゲームパッドのトリガーの振動を開始する
- SDL_SendGamepadEffect - ゲームパッドにエフェクトパケットを送信する
- SDL_SetGamepadEventsEnabled - ゲームパッドイベント処理の状態を設定する
- SDL_SetGamepadLED - ジョイスティックのLEDの色を設定する
- SDL_SetGamepadMapping - ジョイスティックまたはゲームパッドのマッピングを設定する
- SDL_SetGamepadPlayerIndex - オープンされたゲームパッドにプレイヤーインデックス番号を設定する
- SDL_SetGamepadSensorEnabled - ゲームパッドのセンサーのデータ報告の有効状態を設定する
- SDL_UpdateGamepads - イベントループを使用せずに手動でゲームパッドを更新する
型
- SDL_Gamepad - SDLゲームパッドの識別のために使用される型
構造体
- SDL_GamepadBinding - ジョイスティックとゲームパッドの間のマッピングの構造体
列挙体
- SDL_GamepadAxis - ゲームパッドの方向の列挙体
- SDL_GamepadBindingType - ゲームパッドのバインドの種類の列挙体
- SDL_GamepadButton - ゲームパッドのボタンの列挙体
- SDL_GamepadButtonLabel - ゲームパッドのボタンのラベルの列挙体
- SDL_GamepadType - 一般的なゲームパッドの種類の列挙体
SDL Wikiへのリンク
SDL3/CategoryGamepad - SDL Wiki