目次 - SDL 3.0 API(機能別) - ゲームパッド

ゲームパッド

概要

SDLは, ジョイスティックを単にボタン, 方向, ハットスイッチの塊として扱う低レベルジョイスティックAPIを提供している. もし自分でコントローラの設定画面を作るつもりならば, これは柔軟な対応ができるが, すべきことが多く, さらに現在の「ジョイスティック」のほとんどは実際には家庭用ゲーム機のようなゲームパッドであると考えられる. そのため, SDLは低レベルジョイスティック機能の上にゲームパッドAPIを提供している.

ジョイスティックとゲームパッドの違いは, ゲームパッドはボタンと方向がデバイス上のどこにあるかがわかることである. ゲームパッドでは「ボタン3」や「方向2」のような番号ではなく, デバイス上の標準的な位置で扱われる. (十字キー, ショルダーボタン, トリガー, A/B/X/Y(またはX/O/Square/Triangle)のような)

ジョイスティックは, 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を使っている場合, コントローラは起動時には使えず, プロセスイベントが開始された時点で使えるようになる場合がある.

関数

  1. SDL_AddGamepadMapping
  2. SDL_AddGamepadMappingsFromFile
  3. SDL_AddGamepadMappingsFromIO
  4. SDL_CloseGamepad
  5. SDL_GamepadConnected
  6. SDL_GamepadEventsEnabled
  7. SDL_GamepadHasAxis
  8. SDL_GamepadHasButton
  9. SDL_GamepadHasSensor
  10. SDL_GamepadSensorEnabled
  11. SDL_GetGamepadAppleSFSymbolsNameForAxis
  12. SDL_GetGamepadAppleSFSymbolsNameForButton
  13. SDL_GetGamepadAxis
  14. SDL_GetGamepadAxisFromString
  15. SDL_GetGamepadBindings
  16. SDL_GetGamepadButton
  17. SDL_GetGamepadButtonFromString
  18. SDL_GetGamepadButtonLabel
  19. SDL_GetGamepadButtonLabelForType
  20. SDL_GetGamepadConnectionState
  21. SDL_GetGamepadFirmwareVersion
  22. SDL_GetGamepadFromID
  23. SDL_GetGamepadFromPlayerIndex
  24. SDL_GetGamepadGUIDForID
  25. SDL_GetGamepadID
  26. SDL_GetGamepadJoystick
  27. SDL_GetGamepadMapping
  28. SDL_GetGamepadMappingForGUID
  29. SDL_GetGamepadMappingForID
  30. SDL_GetGamepadMappings
  31. SDL_GetGamepadName
  32. SDL_GetGamepadNameForID
  33. SDL_GetGamepadPath
  34. SDL_GetGamepadPathForID
  35. SDL_GetGamepadPlayerIndex
  36. SDL_GetGamepadPlayerIndexForID
  37. SDL_GetGamepadPowerInfo
  38. SDL_GetGamepadProduct
  39. SDL_GetGamepadProductForID
  40. SDL_GetGamepadProductVersion
  41. SDL_GetGamepadProductVersionForID
  42. SDL_GetGamepadProperties
  43. SDL_GetGamepads
  44. SDL_GetGamepadSensorData
  45. SDL_GetGamepadSensorDataRate
  46. SDL_GetGamepadSerial
  47. SDL_GetGamepadSteamHandle
  48. SDL_GetGamepadStringForAxis
  49. SDL_GetGamepadStringForButton
  50. SDL_GetGamepadStringForType
  51. SDL_GetGamepadTouchpadFinger
  52. SDL_GetGamepadType
  53. SDL_GetGamepadTypeForID
  54. SDL_GetGamepadTypeFromString
  55. SDL_GetGamepadVendor
  56. SDL_GetGamepadVendorForID
  57. SDL_GetNumGamepadTouchpadFingers
  58. SDL_GetNumGamepadTouchpads
  59. SDL_GetRealGamepadType
  60. SDL_GetRealGamepadTypeForID
  61. SDL_HasGamepad
  62. SDL_IsGamepad
  63. SDL_OpenGamepad
  64. SDL_ReloadGamepadMappings
  65. SDL_RumbleGamepad
  66. SDL_RumbleGamepadTriggers
  67. SDL_SendGamepadEffect
  68. SDL_SetGamepadEventsEnabled
  69. SDL_SetGamepadLED
  70. SDL_SetGamepadMapping
  71. SDL_SetGamepadPlayerIndex
  72. SDL_SetGamepadSensorEnabled
  73. SDL_UpdateGamepads

  1. SDL_Gamepad

構造体

  1. SDL_GamepadBinding

列挙体

  1. SDL_GamepadAxis
  2. SDL_GamepadBindingType
  3. SDL_GamepadButton
  4. SDL_GamepadButtonLabel
  5. SDL_GamepadType

SDL Wikiへのリンク

SDL3/CategoryGamepad - SDL Wiki