鼠标按钮模拟-右键和上下文菜单问题
Mouse button simulation - right button and context menu problem
我正在编程远程触摸板。所以我需要在c++中模拟Linux上的鼠标按钮。我使用Xlib函数来做到这一点。
两个触摸板按钮工作几乎很好,但例如,当我按右键在Linux桌面上,上下文菜单显示,然后它是不可能选择任何东西,从它的左键按模拟。我甚至不能通过点击上下文菜单来摆脱它
你能有人帮我如何使我的模拟触摸板按钮行为像真实的,请吗?
下面是我的代码:void MainWindow::mouseClick(int button)
{
// Open X display
Display *display = XOpenDisplay (NULL);
if (display == NULL)
{
cerr << "Can't open display!" << endl;
}
// Create and setting up the event
XEvent event;
memset (&event, 0, sizeof (event));
event.xbutton.button = button;
event.xbutton.same_screen = True;
XQueryPointer (display, RootWindow(display, DefaultScreen(display)),
&event.xbutton.root, &event.xbutton.subwindow,
&event.xbutton.x_root, &event.xbutton.y_root,
&event.xbutton.x, &event.xbutton.y,
&event.xbutton.state);
event.xbutton.subwindow = event.xbutton.window;
while (event.xbutton.subwindow)
{
event.xbutton.window = event.xbutton.subwindow;
XQueryPointer (display, event.xbutton.window,
&event.xbutton.root, &event.xbutton.subwindow,
&event.xbutton.x_root, &event.xbutton.y_root,
&event.xbutton.x, &event.xbutton.y,
&event.xbutton.state);
}
// Press
event.type = ButtonPress;
if (XSendEvent (display, PointerWindow, True, 0xfff, &event) == 0) cerr << "Error to send the event!" << endl;
XFlush (display);
usleep (1);
// Release
event.type = ButtonRelease;
event.xbutton.state = 0x100;
if (XSendEvent (display, PointerWindow, True, 0xfff, &event) == 0) cerr << "Error to send the event!" << endl;
XFlush (display);
usleep (1);
XCloseDisplay (display);
}
我在处理Xlib时遇到了类似的问题。我最终使用了Xtest库。这很简单。在你的linux机器上安装libxtest。
XTestFakeMotionEvent(display, -1, x, y, CurrentTime );
XTestFakeButtonEvent(display, button, True, CurrentTime); //Mouse down
XTestFakeButtonEvent(display, button, False, CurrentTime); //Mouse up
你根本不需要担心windows的层次结构!
相关文章:
- 如何使用IExecuteCommand和动词在上下文菜单外壳扩展中显示本地化文本和自定义图标?
- Adobe Acrobat插件-在上下文菜单中创建子菜单项
- QT 无法通过上下文菜单添加新绘图 (QCustomPlot)
- 使用自定义上下文菜单删除 QTreeView 项崩溃
- 链接标签的本地化默认上下文菜单
- 系统托盘上下文菜单空白
- 电子内部或外部方法创建自己的右键单击上下文菜单 - Windows
- 自定义快捷方式上的上下文菜单
- 如何更新C 中已使用TrackPopupMenu显示的上下文菜单
- Windows Shell 扩展:当选择超过 16 个文件时,上下文菜单
- 右键单击系统托盘图标,然后单击C 中的上下文菜单
- QT/C 上下文菜单 - 禁用项目
- 将菜单项添加到Windows Explorer右键单击Java中的上下文菜单
- 如何在Qt中获取文件系统操作的上下文菜单
- Windows 资源管理器右键单击文件和文件夹的上下文菜单
- 如何为回收站添加上下文菜单
- 单击上下文菜单项时运行程序
- 如何在Qt(Windows xp)中禁用QScrollbar上下文菜单
- 如何使用基于 IExecuteCommand 的 shell 扩展将某些上下文菜单选项变灰
- 如何在加载时填充上下文菜单