c++ - 如何在 Linux 中做一个假的鼠标滚轮移动

标签 c++ linux qt x11 xlib

我正在尝试模拟键盘和鼠标事件,我已经成功地制作了假键盘 keydown、keyup。假鼠标按钮按下、向上和假鼠标移动,但我没有找到如何进行假鼠标滚轮移动,有人可以向我解释一种用 C++ 执行此操作的简单方法吗?

鼠标移动和鼠标按钮按下:

Display *dpy = XOpenDisplay(NULL);
XTestFakeMotionEvent(dpy, -1, 50, 50, 0);
XTestFakeButtonEvent(dpy, Button1, true, 0);
XTestFakeButtonEvent(dpy, Button1, false, 0);
XFlush(dpy);
XCloseDisplay(dpy);

键盘按键:

Display *dpy = XOpenDisplay(NULL);
unsigned int keycode = XKeysymToKeycode(dpy, XK_Super_L);
XTestFakeKeyEvent(dpy, keycode, true, 0);
XTestFakeKeyEvent(dpy, keycode, false, 0);
XFlush(dpy);
XCloseDisplay(dpy);

最佳答案

Linux 上的鼠标滚轮不就是按另一个按钮吗?我现在无法为您测试这个,但我记得在我的系统上滚动鼠标滚轮只会生成按钮事件。您可以通过运行显示 X 输入事件的程序 xev 在您的系统上对此进行测试。

关于c++ - 如何在 Linux 中做一个假的鼠标滚轮移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793338/

相关文章:

linux - 有什么方法可以跟踪网络数据包如何通过进程?

c++ - 从鼠标左键单击 QTableView 获取行和列?

c++ - Qt 4.7 : TCP thread, 数据传输导致内存泄漏

c++ - 将 QGroupBox 添加到 QButtonGroup

c++ - 在模板参数列表中使用 decltype 来推断指向类成员的指针的类型

c++ - 2D Projectile - 更新我的 x 和 y 值?

linux - debian 的 NDMP 守护进程

linux - 在安装 RPM 之前验证 Linux 软件包

c++ - 无法调用其他类 C++ 的析构函数

c++ - 错误 : invalid declarator before ‘&’ token