在 Linux 上以编程方式触发拖放事件

在 Linux 上以编程方式触发拖放事件

我目前正在开发一个交互式视频流应用程序(在 PyQt5 中实现),它允许流的观看者与流媒体系统进行交互,例如通过移动鼠标光标或打开程序。

我还想允许通过流从一个设备拖放到另一设备。我能够通过使用 QWidget 的 dropEvent() 函数和 Web 服务器来实现拖动部分以及传输数据。但是,我正在努力在流媒体系统上的某些坐标处触发放置事件。我查看了 xdnd 以及一些应用程序,例如复制已经,但所有这些似乎都需要鼠标进行拖放。

有没有办法告诉 X11 在给定坐标处调用具有特定负载的放置事件,而无需使用鼠标?

先感谢您!

答案1

使用xdotool

xdotool mousedown 1 mousemove x y mouseup 1

首先,它单击左侧按钮并按住 ( mousedown 1)。然后将其拖动到坐标 x,y ( mousemove x y)。您还可以使用极坐标和 flag --polar,使坐标相对于窗口-w <window id>。还可以使用当前坐标的相对坐标来mousemove_relative代替mousemove。最后,通过松开点击按钮将其放下mouseup 1

这是一个演示。我将文件从一个平底锅拖放到 Dolphin 中的另一个平底锅中。 在此输入图像描述

注意:我不知道它是否能满足您的需要,它比编程方式更倾向于 cli 方式。但你可以进行系统调用。

相关内容