|
|
@ -18,17 +18,50 @@ void key_init(key_module_t *key_module) { |
|
|
|
} |
|
|
|
|
|
|
|
void key_do_loop_in_each_period() { |
|
|
|
//如果没初始化则不进行按键扫描 |
|
|
|
if (!s_inited) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
//按键扫描 |
|
|
|
for (int i = 0; i < key_module_s->nkey; i++) { |
|
|
|
// printf("key_name:%s\n", key_module_s->keys[i].name); |
|
|
|
key_process_each(&key_module_s->keys[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void prv_zkey_process_each_after_filter(key_t *each, bool now_io_state) { |
|
|
|
if (now_io_state != each->last_io_state) { |
|
|
|
if (now_io_state) { |
|
|
|
each->keep_state_count = 0; |
|
|
|
each->hasProcessed = false; |
|
|
|
each->cur_state = zks_rising_edge; |
|
|
|
key_module_s->onkey(each, each->cur_state); |
|
|
|
} else { |
|
|
|
each->cur_state = zks_falling_edge; |
|
|
|
key_module_s->onkey(each, each->cur_state); |
|
|
|
each->keep_state_count = 0; |
|
|
|
} |
|
|
|
each->last_io_state = now_io_state; |
|
|
|
} else { |
|
|
|
each->cur_state = zks_keep; |
|
|
|
if (now_io_state) { |
|
|
|
key_module_s->onkey(each, each->cur_state); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void key_process_each(key_t *each) { |
|
|
|
each->keep_state_count++; |
|
|
|
|
|
|
|
bool now_io_state = each->get_key_state(); //获取现在的按键io状态 |
|
|
|
if (!now_io_state) { |
|
|
|
key_module_s->onkey(each, zks_rising_edge); |
|
|
|
} |
|
|
|
bool now_io_state = each->get_key_state(); //获取现在的按键io状态 true未按下 false按下 |
|
|
|
|
|
|
|
// if (now_io_state != each->last_io_state) { |
|
|
|
// each->keep_state_count = 0; |
|
|
|
// } |
|
|
|
|
|
|
|
each->after_filter_state = now_io_state; |
|
|
|
each->last_real_state = now_io_state; |
|
|
|
|
|
|
|
prv_zkey_process_each_after_filter(each, each->after_filter_state); |
|
|
|
} |