键盘 API
概述
键盘 API 提供与设备键盘或其他输入类型(旋钮、传感器、触摸条)交互的功能。它允许你检索按键事件、获取按键信息,以及在按键位置和 ID 之间转换。
KeyInfo API 将来可能会有一些变化,以支持复杂的动态输入类型。
此 API 的头文件是 os/MatrixOS.h 的一部分,实现位于 os/system/KeyPad.cpp。
MatrixOS::KEYPAD::Get
bool Get([`KeyEvent`](./Types/KeyEvent/)* keyEvent_dest, uint32_t timeout_ms = 0);
获取下一个可用的按键事件。如果没有事件可用,函数将等待指定的超时时间。
参数:
keyEvent_dest
(KeyEvent
*):用于存储检索到的按键事件的目标指针。timeout_ms
(uint32_t
,可选):等待事件的最大时间(以毫秒为单位)。默认值为0
。
返回值:
bool
:如果检索到按键事件则返回true
,否则返回false
。
MatrixOS::KEYPAD::GetKey
(按位置)
[`KeyInfo`](./Types/KeyInfo/)* GetKey(Point keyXY);
获取位于指定位置的按键的信息。
参数:
keyXY
(Point
):按键的位置。
返回值:
KeyInfo*
:指向按键信息的指针。如果未找到按 键则返回nullptr
。
MatrixOS::KEYPAD::GetKey
(按 ID)
[`KeyInfo`](./Types/KeyInfo/)* GetKey(uint16_t keyID);
获取具有指定 ID 的按键的信息。
参数:
keyID
(uint16_t
):按键的 ID。
返回值:
KeyInfo*
:指向按键信息的指针。如果未找到按键则返回nullptr
。
MatrixOS::KEYPAD::Clear
void Clear();
清除当前按键状态并抑制所有按键的后续事件(例如 Release
、Hold
),直到它们的下一个 Press
事件。
MatrixOS::KEYPAD::ClearList
void ClearList();
清除当前的 KeyEvent
队列。调用此函数后,队列中将不再有任何事件。
MatrixOS::KEYPAD::XY2ID
uint16_t XY2ID(Point xy);
将按键位置转换为对应的按键 ID。
参数:
xy
(Point
):按键的位置。
返回值:
uint16_t
:与位置关联的按键 ID。如果指定位置没有分配按键 ID 则返回UINT16_MAX
。
MatrixOS::KEYPAD::ID2XY
Point ID2XY(uint16_t keyID);
将按键 ID 转换为对应的位置。
参数:
keyID
(uint16_t
):按键的 ID。
返回值:
Point
:按键的位置。如果找不到指定 ID 的位置则返回Point::Invalid()
。你可以使用 bool(Point) 来检查点是否有效。
Comments