awtk获取键盘事件
PC端
static ret_t on_key_record_play_events(void* ctx, event_t* e) {
key_event_t* evt = (key_event_t*)e;
if (evt->key == 1073741886) { //根据自己电脑情况捕抓的值
log_debug("========key:F5");
return RET_OK;
}
else if (evt->key == 1073741887) {
log_debug("========key:F6");
return RET_OK;
}
else if (evt->key == 1073741888) {
log_debug("========key:F7");
return RET_OK;
}
else if (evt->key == 1073741889) {
log_debug("========key:F8");
return RET_OK;
}
else {
log_debug("========key:%d\n", evt->key);
}
return RET_OK;
}
void *startKey(void *args)
{
while (1)
{
// EVT_KEY_UP 按键抬起 | EVT_KEY_DOWN 按下
widget_on(window_manager(), EVT_KEY_UP, on_key_record_play_events, NULL);
sleep_ms(300);
}
}
嵌入式端
void Print_Key(struct input_event *evt)
{
int i;
if (!evt)
return;
if (EV_KEY == evt->type)
{
for (i = 0; i < MAX_KEY_CNT; i++)
{
if (gkeyinfos[i].key == evt->code)
{
if (evt->value == 1)
{
time_before = evt->time.tv_sec;
}
log_debug("%s:[%d][%ld.%06ld]\n", gkeyinfos[i].name, evt->value, evt->time.tv_sec, evt->time.tv_usec);
break;
}
}
if (i >= MAX_KEY_CNT)
{
log_debug("type:%d, code:%d, value:%d\n", evt->type, evt->code, evt->value);
}
if (evt->code == KEY_F1)
{
ret_t is_ok = set_loop_value(evt->type, KEY_TO_TKKEY(evt->code));
}
else if (evt->code == KEY_F2)
{
ret_t is_ok = set_loop_value(evt->type, KEY_TO_TKKEY(evt->code));
return;
}
else
{
log_debug("%s---%d---KEY:%d\n", __FILE__, __LINE__, (int32_t)evt->code);
}
}
else
{
log_debug("type:%d, code:%d, value:%d\n", evt->type, evt->code, evt->value);
}
}
ret_t set_loop_value(unsigned short eValue, uint32_t KEY_value)
{
return main_loop_post_key_event(main_loop(), TRUE, KEY_value);
}