监视Ubuntu中的键盘键

Monitoring Keyboard keys in Ubuntu

本文关键字:键盘 Ubuntu 监视      更新时间:2023-10-16

可能的重复:
如何在Ubuntu 中的后台进程中获取数据

我正在编写一个程序,用于监视键盘上按下的键。但我的程序可能在前台或后台运行。我听说有一个特定于操作系统的系统调用,即使运行系统调用的程序在后台,程序员也可以监控键盘活动。我是Ubuntu编程的新手,所以请有人告诉我操作系统的调用是什么。

注意:此计划仅用于教育目的。这是学校项目的一部分。。

问候

大多数Ubuntu系统(至少是Ubuntu新手的桌面系统)都运行X11窗口服务器(比如Xorg)。该服务器(仅)正在获取原始键盘和鼠标设备输入。它处理它们以将X11协议事件传递到客户端应用程序(例如,您的firefox浏览器、emacs编辑器、gnome或xterm终端)。

你可以花时间(几个月)了解所有这些(也许从免费桌面开始)。你也可以切换到其他项目,也许只是使用Gtk(在Gnome中)或Qt(在KDE中)编写一个有趣的GUI应用程序。所有Linux图形工具包库都构建在与X11协议(通常是Xlib或XCB)接口的库之上。

如果你想开始学习Linux编程,请阅读高级Unix编程和高级Linux编程。之后,需要花费大量时间来理解tty-s的奥秘,并熟悉系统调用(2)。然后熟悉像Qt或GTK这样的图形工具包。

然后你就会开始明白,准确地回答你问得不多、可疑的问题有多难。(答案在很大程度上取决于观点——Xorg看到的关键事件与其他应用程序不同,尤其是X客户端,并且非常复杂)。

一旦你理解了我给你的链接中的所有概念,你就可以更准确地提出你的问题。当你用更精确和技术性的术语重新问你的问题时(特别是解释你想监控键盘和鼠标的级别),展示你实验过的代码,我们将能够(并且愿意)回答你。

听说有操作系统特定的系统调用:你是从谁那里听到的?你问他们了吗?

这需要多个调用,您需要使用ioctl(在Ubuntu上可能不同)将记录器推入终端流。这并不简单,也不适合作为一个刚开始的项目。有关示例,请参见script程序。

有一个适用于linux的程序,它绑定全局热键并在按键时执行预定义的操作。它被称为xbindkeys。在它的源代码中查找建议或直接使用它