事件系统 (event)
窗口子系统的输入事件抽象层,统一管理按键、旋转编码器、鼠标、触摸、手柄和系统事件,通过 FIFO 队列将事件从输入设备传递到窗口。
事件类型
| 类型 | 值 | 说明 |
|---|---|---|
EVENT_TYPE_KEY_DOWN | 0x0100 | 按键按下 |
EVENT_TYPE_KEY_UP | 0x0101 | 按键释放 |
EVENT_TYPE_ROTARY_STEP | 0x0200 | 旋转编码器步进 |
EVENT_TYPE_MOUSE_DOWN | 0x0300 | 鼠标按键按 下 |
EVENT_TYPE_MOUSE_MOVE | 0x0301 | 鼠标移动 |
EVENT_TYPE_MOUSE_UP | 0x0302 | 鼠标按键释放 |
EVENT_TYPE_MOUSE_WHEEL | 0x0303 | 鼠标滚轮 |
EVENT_TYPE_TOUCH_BEGIN | 0x0400 | 触摸开始 |
EVENT_TYPE_TOUCH_MOVE | 0x0401 | 触摸移动 |
EVENT_TYPE_TOUCH_END | 0x0402 | 触摸结束 |
EVENT_TYPE_JOYSTICK_LEFTSTICK | 0x0500 | 手柄左摇杆 |
EVENT_TYPE_JOYSTICK_RIGHTSTICK | 0x0501 | 手柄右摇杆 |
EVENT_TYPE_JOYSTICK_LEFTTRIGGER | 0x0502 | 手柄左扳机 |
EVENT_TYPE_JOYSTICK_RIGHTTRIGGER | 0x0503 | 手柄右扳机 |
EVENT_TYPE_JOYSTICK_BUTTONDOWN | 0x0504 | 手柄按键按下 |
EVENT_TYPE_JOYSTICK_BUTTONUP | 0x0505 | 手柄按键释放 |
EVENT_TYPE_SYSTEM_EXIT | 0x1000 | 系统退出 |
数据结构
struct event_t {
void * device; /* 事件来源设备 */
enum event_type_t type; /* 事件类型 */
ktime_t timestamp; /* 事件时间戳 */
union {
struct { uint32_t key; } key_down; /* 按键按下 */
struct { uint32_t key; } key_up; /* 按键释放 */
struct { int32_t delta; } rotary_step; /* 旋转步进 */
struct { int32_t x, y; uint32_t button; } mouse_down; /* 鼠标按下 */
struct { int32_t x, y; } mouse_move; /* 鼠标移动 */
struct { int32_t x, y; uint32_t button; } mouse_up; /* 鼠标释放 */
struct { int32_t dx, dy; } mouse_wheel; /* 鼠标滚轮 */
struct { int32_t x, y; uint32_t id; } touch_begin; /* 触摸开始 */
struct { int32_t x, y; uint32_t id; } touch_move; /* 触摸移动 */
struct { int32_t x, y; uint32_t id; } touch_end; /* 触摸结束 */
struct { int32_t x, y; } joystick_left_stick; /* 左摇杆 */
struct { int32_t x, y; } joystick_right_stick; /* 右摇杆 */
struct { int32_t v; } joystick_left_trigger; /* 左扳机 */
struct { int32_t v; } joystick_right_trigger; /* 右扳机 */
struct { uint32_t button; } joystick_button_down; /* 手柄按下 */
struct { uint32_t button; } joystick_button_up; /* 手柄释放 */
} e;
};
按键定义
按键码与 ASCII 编码兼容(32-127),同时扩展了功能键(1-31)和 Latin-1 补充字符(160-255)。常用功能键:
| 按键 | 值 | 说明 |
|---|---|---|
KB_KEY_POWER | 1 | 电源键 |
KB_KEY_UP | 2 | 方向键上 |
KB_KEY_DOWN | 3 | 方向键下 |
KB_KEY_LEFT | 4 | 方向键左 |
KB_KEY_RIGHT | 5 | 方向键右 |
KB_KEY_ENTER | 13 | 确认键 |
KB_KEY_BACK | 11 | 返回键 |
KB_KEY_HOME | 10 | Home 键 |
KB_KEY_MENU | 12 | 菜单键 |
KB_KEY_DELETE | 127 | 删除键 |