LVGL触摸事件处理机制及驱动注意事项

事件处理框架:通过周期性调用lv_indev_read_timer_cb函数,从底层获取事件并进行处理。

触摸事件处理函数:indev_pointer_proc   -》indev_proc_press、indev_proc_release

press事件更新机制:

当检测到当前活动对象indev_obj_act不等于上一次的对象(proc->types.pointer.act_obj)时,则认为触摸丢失,如果当前对象不为空,则将上一次的触摸事件结束,然后产生一个新的LV_EVENT_PRESSED事件;

 

注意事项:

lv_indev_read_timer_cb函数在读取底层事件时,是持续获取的,如果底层驱动未上报对应事件,则lv_indev_read_timer_cb将会得到一个空事件(默认为释放动作),将会导致之前按下的动作变成释放,从而使触摸失去连续性!!!

因此底层事件接口不能传递空事件给LVGL内核,一种处理办法是,当触摸按下(未释放)时,如果没有新的事件产生,则将上一次的触摸事件传给内核。

posted @ 2023-01-31 14:25  30toB  阅读(3824)  评论(0)    收藏  举报