目次 - SDL 3.0 API(機能別) - マウス
概要
あらゆるGUIアプリケーションはマウスを扱う必要があり, SDLはマウス入力とカーソル表示を行う関数を提供している.
ほとんどのマウスとの相互作用は, イベントサブシステムを通して伝えられる.
マウスを動かすとSDL_EVENT_MOUSE_MOTIONイベントが, ボタンを押すとSDL_EVENT_MOUSE_BUTTON_DOWNイベントが発生するなどである. しかし, マウスの状態はいつでもSDL_GetMouseState()で得ることもできる.
一部のゲームでは, マウス入力とマウスカーソルを関連付けないことが望ましい.
例えばFPSでは, マウスがウィンドウの枠の外に移動してプレイヤーの動きを止めたくない.
この場合SDL_SetWindowRelativeMouseMode()を使うと, カーソルを隠し, マウス入力するウィンドウにグラブし, マウスがどれだけ動いてもマウス入力を読み取らせることができる.
システムにマウスを追跡させたいが, 自分でマウスカーソルを描きたい場合, SDL_HideCursor()とSDL_ShowCursor()を使うことができる.
可能ならば, SDL_CreateColorCursor()で生成されたカスタムされた画像に対してSDL_SetCursor()を使用する, または単にSDL_CreateSystemCursor()でシステムカーソルを指定し, システムにカーソルを管理させる方がより効率がよいかもしれない.
ユニークな使用法やマルチプレイヤーゲームを可能にするために, 多くの環境でSDLは接続された複数個のマウスを区別して認識できる.
SDL_GetMice()で一覧を得ることができ, SDLはマウスの接続と切断があったときSDL_EVENT_MOUSE_ADDEDイベントとSDL_EVENT_MOUSE_REMOVEDイベントを発生させる.
多くのアプリケーションは基本的なマウス入力のみを扱うため, SDLはタッチスクリーンやペン入力を仮想マウスデバイスとして提供する.
そのため, デスクトップアプリケーションをコードの大きな変更なしでタッチスクリーンのスマートフォンで動作させられるかもしれない.
アプリケーションがマウス入力とタッチ/ペン入力を分けて扱いたい場合は, イベントをSDL_TOUCH_MOUSEID/SDL_PEN_MOUSEIDのwhichフィールドでフィルタして除外する必要がある.
関数
- SDL_CaptureMouse - SDLウィンドウの外でのマウスやトラックボールの入力を得られるように捕捉する
- SDL_CreateColorCursor - 色つきのマウスカーソルを生成する
- SDL_CreateCursor - 指定のビットマップデータとマスク(MSB形式)からマウスカーソルを生成する
- SDL_CreateSystemCursor - システムカーソルを生成する
- SDL_CursorVisible - マウスカーソルが表示されているかを得る
- SDL_DestroyCursor - カーソルを解放する
- SDL_GetCursor - 現在のマウスカーソルを得る
- SDL_GetDefaultCursor - デフォルトのマウスカーソルを得る
- SDL_GetGlobalMouseState - 動作環境の非同期なマウスボタンの状態とデスクトップ上のマウスカーソルの位置を得る
- SDL_GetMice - 接続されたマウスの一覧を得る
- SDL_GetMouseFocus - 現在マウスフォーカスのあるウィンドウを得る
- SDL_GetMouseNameForID - マウスの名前を得る
- SDL_GetMouseState - SDLがキャッシュした同期したマウスボタンの状態とウィンドウ上のマウスカーソルの位置を得る
- SDL_GetRelativeMouseState - SDLがキャッシュした同期したマウスボタンの状態と最後に呼び出したときからのマウスの移動量を得る
- SDL_GetWindowMouseGrab - ウィンドウのマウスグラブ状態を得る
- SDL_GetWindowMouseRect - ウィンドウのマウスの移動範囲を得る
- SDL_GetWindowRelativeMouseMode - ウィンドウの相対マウスモードが有効かチェックする
- SDL_HasMouse - マウスが接続されているかチェックする
- SDL_HideCursor - マウスカーソルを非表示にする
- SDL_SetCursor - マウスカーソルを設定する
- SDL_SetRelativeMouseTransform - 相対マウスの入力を変換するユーザ定義の関数を設定する
- SDL_SetWindowMouseGrab - ウィンドウのマウスグラブモードを設定する
- SDL_SetWindowMouseRect - ウィンドウのマウスの移動範囲を設定する
- SDL_SetWindowRelativeMouseMode - ウィンドウの相対マウスモードを設定する
- SDL_ShowCursor - マウスカーソルを表示する
- SDL_WarpMouseGlobal - マウスカーソルを画面上の指定の座標に移動させる
- SDL_WarpMouseInWindow - マウスカーソルをウィンドウ内の指定の位置へ移動する
型
- SDL_Cursor - SDLマウスカーソルの型
- SDL_MouseButtonFlags - SDL_GetMouseState等が報告するマウスボタンのビットマスクの型
- SDL_MouseID - システムに接続されたマウスのユニークIDの型
- SDL_MouseMotionTransformCallback - マウスの移動量を変換するコールバックの型
列挙体
- SDL_MouseWheelDirection - スクロールイベントのスクロール方向の列挙体
- SDL_SystemCursor - SDL_CreateSystemCursor()のマウスカーソルの種類の列挙体
マクロ
- SDL_TOUCH_MOUSEID - マウスイベントでのタッチ入力のSDL_MouseID
SDL Wikiへのリンク
SDL3/CategoryMouse - SDL Wiki