我正在编写一个监控键盘按键的程序。但我的程序可能在前台或后台运行。我听说有OS特定的系统调用,即使运行系统调用的程序在后台,程序员也可以监视键盘活动。我是Ubuntu编程的新手,所以请有人告诉我OS系统调用是什么。
注意: 该计划仅用于教育目的。这是学校项目的一部分..
此致
答案 0 :(得分:2)
大多数Ubuntu系统(至少是新手Ubuntu用户的桌面)正在运行X11窗口服务器(如Xorg)。该服务器(仅)获取原始键盘和鼠标设备输入。它会处理它们以向客户端应用程序(例如您的firefox浏览器,或您的emacs
编辑器或您的gnome或xterm
终端)提供X11 protocol events。
您可以花时间(几个月)了解所有这些(可能从freedesktop开始)您也可以切换到其他项目,也许只使用Gtk编写一个有趣的GUI应用程序(在Gnome中) )或Qt(在KDE内)。所有Linux图形工具包库都构建在连接X11协议的库之上,通常是Xlib或XCB。
如果您想开始学习Linux编程,请阅读Advanced Unix Programming和Advanced Linux Programming。之后,花费大量时间来了解tty - s的奥秘,并熟悉syscalls(2)。然后熟悉Qt或GTK等图形工具包。
然后你就会开始明白,准确回答你的疑问和疑问是多么困难。 (答案很大程度上取决于观点 - Xorg
看到与其他应用程序不同的关键事件,特别是X客户端,并且非常复杂。)
一旦你理解了我给你的链接中的所有概念,你就能够更准确地问你的问题。当您以更精确和技术的方式重新提出问题时(特别是解释您希望监控键盘和鼠标的级别),显示您尝试的代码,我们将能够(并且愿意)回答你。
答案 1 :(得分:0)
听说有操作系统特定的系统调用:你是谁听到的?你问过他们了吗?
这需要多次调用,您需要使用ioctl
(可能在Ubuntu上有所不同)将您的记录器推送到终端流。它并不简单,也不适合初学项目。有关示例,请参阅script
程序。
答案 2 :(得分:0)
有一个linux程序,它绑定全局热键并在按键上执行预定义的操作。它被称为xbindkeys
。查看其源代码中的建议或直接使用它。