HID API
概述
HID
命名空间提供控制各种人机接口设备(HID)外设的 API,如键盘、鼠标、游戏手柄等。还包括原始 HID 通信支持。
与 MIDI 系统不同,HID 系统更加直接,无需用户管理端口。来自不同源设备的所有输入都混合在一起,作为单一流发送给应用程序,所有出站消息都发送到所有端点。(如需更复杂的路由功能,请告诉我,我会考虑添加支持。)
此 API 仅支持 USB HID,目前不支持蓝牙 HID。
此 API 的头文件是 os/MatrixOS.h 的一部分,实现位于 os/system/HID/。
Keyboard
MatrixOS::HID::Keyboard::Write
bool Write(KeyboardKeycode k);
写入键盘按键事件。
参数:
k
(KeyboardKeycode
):要写入的按键。
返回值:
bool
:成功写入事件返回true
,否则返回false
。
MatrixOS::HID::Keyboard::Press
bool Press(KeyboardKeycode k);
按下键盘按键。
参数:
k
(KeyboardKeycode
):要按下的按键。
返回值:
bool
:成功按下按键返回true
,否则返回false
。
MatrixOS::HID::Keyboard::Release
bool Release(KeyboardKeycode k);
释放键盘按键。
参数:
k
(KeyboardKeycode
):要释放的按键。
返回值:
bool
:成功释放按键返回true
,否则返回false
。
MatrixOS::HID::Keyboard::Remove
bool Remove(KeyboardKeycode k);
从活动按键列表中移除按键事件。
参数:
k
(KeyboardKeycode
):要移除的按键。
返回值:
bool
:成功移除按键返回true
,否则返回false
。
MatrixOS::HID::Keyboard::ReleaseAll
void ReleaseAll(void);
释放所有已按下的键盘按键。
Mouse
MatrixOS::HID::Mouse::Click
void Click(MouseKeycode b = MOUSE_LEFT);
模拟鼠标点击。
参数:
b
(MouseKeycode
,可选):要点击的按钮。默认值为MOUSE_LEFT
。
MatrixOS::HID::Mouse::Press
void Press(MouseKeycode b = MOUSE_LEFT);
按下鼠标按钮。
参数:
b
(MouseKeycode
,可选):要按下的按钮。默认值为MOUSE_LEFT
。
MatrixOS::HID::Mouse::Release
void Release(MouseKeycode b = MOUSE_LEFT);
释放鼠标按钮。
参数:
b
(MouseKeycode
,可选):要释放的按钮。默认值为MOUSE_LEFT
。
MatrixOS::HID::Mouse::ReleaseAll
void ReleaseAll(void);
释放所有鼠标按钮。
MatrixOS::HID::Mouse::Move
void Move(signed char x, signed char y, signed char wheel = 0);
移动鼠标光标。
参数:
x
(signed char
):水平移动。y
(signed char
):垂直移动。wheel
(signed char
,可选):滚轮移动。默认值为0
。
Touch
MatrixOS::HID::Touch::Click
void Click(MouseKeycode b = MOUSE_LEFT);
在触控模式下模拟鼠标点击。
参数:
b
(MouseKeycode
,可选):要点击的按钮。默认值为MOUSE_LEFT
。
MatrixOS::HID::Touch::Press
void Press(MouseKeycode b = MOUSE_LEFT);
在触控模式下按下鼠标按钮。
参数:
b
(MouseKeycode
,可选):要按下的按钮。默认值为MOUSE_LEFT
。
MatrixOS::HID::Touch::Release
void Release(MouseKeycode b = MOUSE_LEFT);
在触控模式下释放鼠标按钮。
参数:
b
(MouseKeycode
,可选):要释放的按钮。默认值为MOUSE_LEFT
。
MatrixOS::HID::Touch::MoveTo
void MoveTo(signed char x, signed char y, signed char wheel = 0);
在触控模式下将光标移动到绝对位置。
参数:
x
(signed char
):水平位置。y
(signed char
):垂直位置。wheel
(signed char
,可选):滚轮移动。默认值为0
。
MatrixOS::HID::Touch::Move
void Move(signed char x, signed char y, signed char wheel = 0);
在触控模式下相对于当前位置移动光标。
参数:
x
(signed char
):水平移动。y
(signed char
):垂直移动。wheel
(signed char
,可选):滚轮移动。默认值为0
。
Gamepad
MatrixOS::HID::Gamepad::Press
void Press(GamepadKeycode b);
按下游戏手柄按钮。
参数:
b
(GamepadKeycode
):要按下的按钮。
MatrixOS::HID::Gamepad::Release
void Release(GamepadKeycode b);
释放游戏手柄按钮。
参数:
b
(GamepadKeycode
):要释放的按钮。
MatrixOS::HID::Gamepad::ReleaseAll
void ReleaseAll(void);
释放所有已按下的游戏手柄按钮。
MatrixOS::HID::Gamepad::Buttons
void Buttons(uint32_t b);
设置所有游戏手柄按钮的状态。
参数:
b
(uint32_t
):表示所有按钮状态的位掌码。
MatrixOS::HID::Gamepad::XAxis
void XAxis(int8_t a);
设置游戏手柄的 X 轴值。
参数:
a
(int8_t
):X 轴的值(范围:-128 到 127)。
MatrixOS::HID::Gamepad::YAxis
void YAxis(int8_t a);
设置游戏手柄的 Y 轴值。
参数:
a
(int8_t
):Y 轴的值(范围:-128 到 127)。
MatrixOS::HID::Gamepad::ZAxis
void ZAxis(int8_t a);
设置游戏手柄的 Z 轴值。
参数:
a
(int8_t
):Z 轴的值(范围:-128 到 127)。
MatrixOS::HID::Gamepad::RXAxis
void RXAxis(int8_t a);
设置游戏手柄右侧 X 轴的值。
参数:
a
(int8_t
):右侧 X 轴的值(范围:-128 到 127)。
MatrixOS::HID::Gamepad::RYAxis
void RYAxis(int8_t a);
设置游戏手柄右侧 Y 轴的值。
参数:
a
(int8_t
):右侧 Y 轴的值(范围:-128 到 127)。
MatrixOS::HID::Gamepad::RZAxis
void RZAxis(int8_t a);
设置游戏手柄右侧 Z 轴的值。
参数:
a
(int8_t
):右侧 Z 轴的值(范围:-128 到 127)。
MatrixOS::HID::Gamepad::DPad
void DPad(GamepadDPadDirection d);
设置方向键方向。
参数:
d
(GamepadDPadDirection
):方向键的方向。
Consumer
MatrixOS::HID::Consumer::Write
void Write(ConsumerKeycode c);
写入消费者控制按键事件。
参数:
c
(ConsumerKeycode
):要写入的消费者控制按键。
MatrixOS::HID::Consumer::Press
void Press(ConsumerKeycode c);
按下消费者控制按键。
参数:
c
(ConsumerKeycode
):要按下的消费者控制按键。
MatrixOS::HID::Consumer::Release
void Release(ConsumerKeycode c);
释放消费者控制按键。
参数:
c
(ConsumerKeycode
):要释放的消费者控制按键。
MatrixOS::HID::Consumer::ReleaseAll
void ReleaseAll(void);
释放所有已按下的消费者控制按键。
System
MatrixOS::HID::System::Write
void Write(SystemKeycode s);
写入系统控制按键事件。
参数:
s
(SystemKeycode
):要写入的系统按键。
MatrixOS::HID::System::Press
void Press(SystemKeycode s);
按下系统控制按键。
参数:
s
(SystemKeycode
):要按下的系统按键。
MatrixOS::HID::System::Release
void Release(void);
释放上一个按下的系统控制按键。
MatrixOS::HID::System::ReleaseAll
void ReleaseAll(void);
释放所有已按下的系统控制按键。
RawHID
MatrixOS::HID::RawHID::Get
size_t Get(uint8_t** report, uint32_t timeout_ms = 0);
从报告 ID 255 获取 16 字节的 HID 报告。
参数:
report
(uint8_t**
):用于存储获取的报告的指针。timeout_ms
(uint32_t
,可选):获取报告的超时时间(毫秒)。默认值为0
。
返回值:
size_t
:获取的报告大小。
MatrixOS::HID::RawHID::Send
bool Send(const vector<uint8_t>& report);
从报告 ID 255 发送原始 HID 报告。最大报告大小为 16 字节(额外的字节将用零填充)。
参数:
report
(const vector<uint8_t>&
):要发送的报告。
返回值:
bool
:成功发送报告返回true
,否则返回false
。
Comments