在Ubuntu中监控键盘按键

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

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

注意:此程序严格用于教育目的。 这是学校项目的一部分。

问候

Solutions Collecting From Web of "在Ubuntu中监控键盘按键"

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

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

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

然后你才会明白,要回答你的问题和怀疑的问题是多么困难。 (答案在很大程度上取决于观点Xorg比其他应用程序看到不同的关键事件,特别是X客户端,而且非常复杂)。

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

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

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

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