Linux是如何通过层层界面将鼠标(硬件)点击呈现给用户的?保持输入事件

问题描述 投票:0回答:1

请注意,我的问题可能有点困难。我不是在问硬件设备和设备驱动程序如何在内核中工作。相反,我想确认一下,在 debian11 这样的 Linux 发行版中,用户点击鼠标左键后,整个操作系统中这个点击事件会发生什么变化,最终让用户能够观察到桌面上的图标(gnome-桌面)已选择。

我目前比较简单的理解是: 硬件事件->内核中的驱动处理该行为,生成点击事件->该事件交给用户层接口(如libudev)->事件由Xorg获取->Xorg通过X客户端将事件传递给X客户端X-协议->X客户端响应事件并处理它们

linux input operating-system xorg libudev
1个回答
0
投票

更多详情: 我理解正确吗?如果没有,更具体和详细的流程会是什么样子? 关于我为什么问这个问题:当我当前使用Debian系统时,鼠标偶尔无法点击。也就是说,当我单击鼠标左键时,系统桌面的任何部分都没有响应。但是可以通过Ctrl+Alt+T来移动鼠标并调出终端。然后我也在系统日志中确认了USB驱动没有异常。等待一段时间后,鼠标即可恢复正常使用。同时我也确认了问题发生时没有出现高负载,内存使用情况良好。 如果问题原因出现在内核中,可以通过系统日志来确认。 如果问题出现在libudev等接口上,那么我可以使用evemu-record等命令来确认libudev是否接收到来自内核的事件。 但是如何确认Xorg和Xclient中鼠标事件是否被正确处理呢? 所以我提出这个问题是为了确认整个系统中鼠标事件的完整生命周期(从产生到消费),然后想办法确认“鼠标左键无响应”的问题发生在哪里,最后想办法调试解决方案。

我非常感谢任何能够阅读这个问题或提供帮助的计算机工程师、科学家或Linux爱好者,您的善意一瞥对我来说是极大的慷慨。

© www.soinside.com 2019 - 2024. All rights reserved.