适配自定义按键

本文深入解析了Weston框架下的输入管理流程,包括按键适配处理及亮灭屏机制。揭示了从底层输入设备到顶层destop-shell的交互过程,详细介绍了按键事件如何触发屏幕唤醒,以及西斯顿框架如何实现完整的灭屏操作。

目录

 

前言

1 weston框架下输入管理流程

2 按键适配处理分析

3 亮灭屏分析

3.1 destop层面下的分析

3.2 compositor层面下的分析

4 总结


前言

在weston框架下,支持的输入设备通常是标准设备,如:键盘、鼠标、触摸屏等。若要支持我们自定义的键盘,需要在weston框架下做适配。

1 weston框架下输入管理流程

该部分我们参考ariesjzj大神的《输入管理》章节部分,理解了第一部分之后,基于该部分在第二章中阐述适配的过程。

Weston中的输入管理模块与libinput对接,它实现了两大部分的功能:一是对输入设备的维护,二是对输入事件的处理。对于输入事件既会在Weston中做处理,也会传给相应的client。从事件处理模型上来看,libinput的主循环监听udev monitor fd,它主要用于监听设备的添加删除事件。如果有设备添加,会打开该设备并把fd加入到libinput的主循环上。另一方面,Weston中会将libinput的epoll fd加入主循环。这样形成级联的epoll,无论是udev monitor还是input device的fd有事件来,都会通知到Weston和libinput的主循环。这些事件通过libinput中的事件缓冲队列存储,而Weston会作为消费者从中拿事件并根据事件类型进行处理。

2 按键适配处理分析

weston在嵌入式设备中运行,常采用的命令为:weston --tty=1 --backend=drm-backend.so ,后端采取的是drm对接显示硬件。drm-backend.so来自于weston/libweston/compositor_drm.c

drm_backend_create
  udev_input_init -> process_events(input);
                  -> udev_input_enable 
  wl_event_loop_add_fd 将input设备添加到epoll中去监控

在udev_input_enable 中将输入设备的fd加入到epoll循环中,如果该设备信号可读,则触发回调函数:libinput_source_dispatch

libinput_source_dispatch
       udev_input_dispatch
            process_events(input)
                  	第二个epoll循环:
                    while ((event = libinput_get_event(input->libinput))) {
		                  process_event(event);
		                  libinput_event_destroy(event);
	                }             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值