Linux C++ 中的后台程序
Background program in C++ for Linux
我不确定应该使用什么关键字来搜索这个,所以我要在这里问。如果这是重复的,我很抱歉。
基本上,我想做以下事情
./my_prog &
其中my_prog,编码为 C++14,
- 每当我右键单击时,都会向文件 A 添加一个字符。
- 每当我左键单击时,都会向文件 B 添加一个字符。
- 每当我按下某个键时,都会向文件 C 添加一个字符。
(这将使我能够看到我在一天结束时执行上述任何操作的频率。
首先我想使用Qt,但不久之后我意识到Qt只在自己的窗口中这样做。(或者至少,这是我能用的。这无济于事,因为我宁愿my_prog
计算每次点击和按键。
有人知道我应该使用什么库/函数吗?谢谢。
您需要在 Linux 中读取鼠标设备。在我的 Ubuntu 中,该设备是"/dev/input/event4",您可以从"/proc/bus/input/devices"检查您的设备。
在 linux/input.h 标头中,您可以找到可用于处理不同鼠标事件的"input_event"结构。
这是一个简单的例子
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <linux/input.h>
#define MOUSEFILE "/dev/input/event4"
int main()
{
int fd;
struct input_event ie;
if((fd = open(MOUSEFILE, O_RDONLY)) == -1) {
perror("Cannot access mouse device");
exit(EXIT_FAILURE);
}
while(read(fd, &ie, sizeof(struct input_event))) {
printf("%d, %d, %dn", ie.type, ie.value, ie.code);
}
return 0;
}
您可以从 http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/input.h?v=2.6.11.8 中找到有关input_event结构和代码定义的更多信息
例如,在我的机器中,我意识到当我左键单击鼠标时,会发生以下组合
ie.type = 1
ie.value = 1
ie.code = 272
这有助于捕获 Linux 中的不同事件。
相关文章:
- 与Qt同时运行后台循环或回调C++应用程序?
- 是否有可能让 c++ dll 在后台运行 python 程序并让它填充向量图?如果是这样,如何?
- 如何在程序后台运行函数(特别是自动保存函数)?QT / C++
- 如何在后台模拟鼠标单击到 DirectX 应用程序?
- 当nCurses应用程序来自后台时无效内容
- 阻止后台应用程序接收消息
- 从后台处理程序获取作业 - C++
- 在后台记录 Eclipse IDE 调用的应用程序列表
- 窗口后台处理程序究竟如何确定它将发送到打印处理器的数据类型?
- Linux C++ 中的后台程序
- 编写具有命令行交互的后台程序
- c++允许后台线程在退出应用程序之前完成
- 程序在前台工作,但不在后台使用nohup
- 在后台运行应用程序并捕获传入和传出消息
- 用于检测启动了哪些程序的后台脚本
- 什么可能导致我的 C++ win32 应用程序在后台运行
- 如何使我的控制台C++程序在后台运行
- 使用打印后台处理程序 API 打印"raw"数据
- 实现打印机后台处理程序
- 在后台线程上创建的调度程序未关闭时会发生什么情况?如何确保调度程序已正确关闭