使用以下函数,通过游戏控制器库向你的游戏中添加鼠标设备支持。我们在这里使用术语“鼠标设备”来描述传统的鼠标,以及触控板或轨迹球。
添加鼠标状态回调
游戏控制器库使用鼠标状态回调来在鼠标连接或断开连接时通知游戏。它一次只支持一个鼠标状态回调。
- 要注册鼠标状态回调或用新的回调函数替换任何先前注册的回调,请调用
Paddleboat_setMouseStatusCallback
函数。 - 要移除任何当前注册的回调,请在
statusCallback
参数中传递NULL
或nullptr
。 userData
参数是指向用户定义数据的可选指针。userData
参数将传递给回调函数。此指针在被另一个对Paddleboat_setMouseStatusCallback
的调用更改之前,会在内部保留。
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
鼠标状态回调函数的函数签名为:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
mouseStatus
枚举参数有三个可能的值:
PADDLEBOAT_MOUSE_NONE
:当前没有鼠标设备连接。PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
:已连接的控制器正在模拟鼠标。PADDLEBOAT_MOUSE_PHYSICAL
:已连接一个或多个物理鼠标设备。(这些设备包括鼠标、触控板、轨迹球或其他类似设备。)
userData
参数包含上次调用Paddleboat_setMouseStatusCallback
时指定的userData
指针。userData
可能是NULL或nullptr
。
并非所有控制器都模拟鼠标。控制器可以使用模拟摇杆或集成触控板来模拟鼠标。
游戏控制器库仅报告来自单个鼠标设备的数据。物理鼠标设备优先于虚拟控制器鼠标设备。如果连接了物理鼠标,它将接管任何先前活动的虚拟控制器鼠标。
读取鼠标数据
调用Paddleboat_getMouseStatus
函数以获取鼠标设备的状态。
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
使用Paddleboat_getMouseData
函数获取当前鼠标数据。如果成功读取数据,此函数将返回PADDLEBOAT_NO_ERROR
,否则将返回相应的错误代码。
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Paddleboat_Mouse_Data
结构包含有关以下方面的信息:
- 最新的鼠标输入事件时间戳
- 当前指针位置
- 鼠标按钮的状态
- 鼠标滚轮的状态
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
结构成员 | 描述 |
---|---|
timestamp
|
最新的鼠标输入事件的时间戳。时间戳值以自纪元以来的微秒为单位。 |
buttonsDown
|
位字段,从位0开始的每个位表示如果设置则为按钮按下状态。 |
mouseX mouseY
|
以像素坐标表示的鼠标位置。位置坐标的范围为0.0 到屏幕宽度和高度。 |
mouseScrollDeltaH mouseScrollDeltaV
|
自上次调用Paddleboat_getMouseData 以来累积的鼠标滚轮事件计数。这些值并非保证精确,仅表示特定方向上的滚轮活动指示。大多数鼠标只有一个滚轮,在mouseScrollDeltaV 中报告。如果鼠标有侧滚轮,则在mouseScrollDeltaH 中报告。这些值在调用Paddleboat_getMouseData 后会在内部重置为0 。 |
游戏控制器库在paddleboat.h
接口头文件中定义了鼠标按钮的位掩码常量。
enum Paddleboat_Mouse_Buttons {
PADDLEBOAT_MOUSE_BUTTON_LEFT = (1U << 0),
PADDLEBOAT_MOUSE_BUTTON_RIGHT = (1U << 1),
PADDLEBOAT_MOUSE_BUTTON_MIDDLE = (1U << 2),
PADDLEBOAT_MOUSE_BUTTON_BACK = (1U << 3),
PADDLEBOAT_MOUSE_BUTTON_FORWARD = (1U << 4),
PADDLEBOAT_MOUSE_BUTTON_6 = (1U << 5),
PADDLEBOAT_MOUSE_BUTTON_7 = (1U << 6),
PADDLEBOAT_MOUSE_BUTTON_8 = (1U << 7)
};
物理鼠标设备与虚拟鼠标设备
Paddleboat_MouseStatus
为PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
表示物理鼠标设备不存在,并且游戏控制器库正在使用已连接的控制器模拟虚拟鼠标。设置了PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
标志的最低已连接控制器索引将用作虚拟鼠标。虚拟鼠标设备仅保证报告mouseX
和mouseY
坐标。虚拟鼠标设备可能会报告来自单个(左)鼠标按钮的按键,但这并非保证。