首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linux上,如何找出哪个应用程序/进程is正在接收键盘/鼠标输入?

在Linux上,如何找出哪个应用程序/进程is正在接收键盘/鼠标输入?
EN

Stack Overflow用户
提问于 2018-05-16 12:58:01
回答 2查看 529关注 0票数 0

我正在做一个linux项目。我陷入了需要知道哪个应用程序/进程is正在接收键盘/鼠标输入的阶段。我的意思是绑定必须存储在某个地方。有人能帮帮我吗?编辑1:我正在开发一个键盘/鼠标事件捕获项目。我发现logkey(项目)很有用。我需要找到用户输入的应用程序名称以及按下的编辑键2:我使用的是gnome 7. XDG_SESSION_DESKTOP = CentOS -classic。GDMSESSION = gnome-classic。

EN

回答 2

Stack Overflow用户

发布于 2018-05-16 15:27:00

linux内核负责接收来自物理键盘或鼠标的事件,而不是任何特定的应用程序。然后将事件传递给活动应用程序。因此,请在内核源代码中查找键盘和鼠标的驱动程序。

票数 0
EN

Stack Overflow用户

发布于 2018-05-16 15:29:33

我需要知道哪个应用程序/进程I正在接收键盘/鼠标输入。

实际上,在Linux台式机(或笔记本电脑)上,如果你考虑的是物理键盘和鼠标,并不重要(见下文)。

在Linux服务器上,您通常没有任何物理键盘。

在某个物理人员使用的Linux桌面或笔记本电脑上,您通常有一些display server (例如,用于图形desktop environmentXorgWayland (除非您使用没有任何GUIvirtual consoles )。该显示服务器正在处理(和读取)物理键盘和鼠标,因此(实际上)读取它们的唯一进程也是如此。请咨询lsof(8)

当然,显示服务器正在处理物理键盘和鼠标事件,并从中生成发送给一些clientwindow的更高级别的消息(在一些window manager的帮助下),并管理focus。但这是一个不同的问题(在Xorg和Wayland中也是非常不同的)。另请阅读有关compositing window managers的信息。顺便说一句,Xorg客户端可以在远程机器上运行。

一台Linux机器可以管理多个屏幕,即由不同的物理人员使用的屏幕+keyboard+mouse的几种组合。然后,您可以拥有多个显示服务器。

你可以花几个月甚至几年的时间来研究X11 protocols and architecture。文档很繁重:几千页(另请参阅ICCCM & EWMH)。如果需要的话,你还需要花几个月的时间学习Wayland协议。

对于你的项目,你可能需要多年的工作(甚至是终生的)。累积的软件层(显示服务器、GUI工具包、窗口管理器等)都是庞大的,几千万行的源码。

另请参阅对非常类似问题的回答和this

如果您使用的是gnome-classic,那么您的显示服务器肯定是Xorg。因此,ICCCM和EWMH适用。然后,您可能会对_NET_WM_PIDWM_CLIENT_MACHINE感兴趣,因为它们结合了get X11焦点窗口的常用技术。您可以考虑修补通常的窗口管理器(并且您可能仍然需要阅读更多关于X11的知识,以便能够编写一些健壮的实现)。

不要忘记,许多X11客户机应用程序正在打开几个顶级的X11窗口,一些X11客户机应用程序正在使用几个X11显示,因此有几个Xorg显示服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50362712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档