在 ubuntu 20.04 LTS

问题描述

我正在开发 ubuntu 20.04 LTS,其中 2 个计算机鼠标(Microsoft Microsoft® 2.4GHz Transceiver v9.0 Mouse,id=11MX Vertical Mouse,id=31)连接到 2 个不同的主机(Virtual core pointer,id=2Auxiliary pointer id=27),请参阅{{1 }}:

xinput

问题:

如何使用 python 操作附加到 laptop:~/$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 Mouse id=11 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 Consumer Control id=12 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 Consumer Control id=13 [slave pointer (2)] ⎜ ↳ ELAN9008:00 04F3:2A46 id=17 [slave pointer (2)] ⎜ ↳ GDX1515:00 27C6:01F4 Mouse id=19 [slave pointer (2)] ⎜ ↳ GDX1515:00 27C6:01F4 Touchpad id=20 [slave pointer (2)] ⎜ ↳ GDX1515:00 27C6:01F4 id=21 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Video Bus id=8 [slave keyboard (3)] ↳ Power Button id=9 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 id=10 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 System Control id=14 [slave keyboard (3)] ↳ USB2.0 HD IR UVC WebCam: USB2.0 id=15 [slave keyboard (3)] ↳ USB2.0 HD IR UVC WebCam: USB2.0 id=16 [slave keyboard (3)] ↳ ELAN9008:00 04F3:2A46 id=18 [slave keyboard (3)] ↳ Intel HID events id=22 [slave keyboard (3)] ↳ Asus WMI hotkeys id=23 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=24 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 Consumer Control id=25 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v9.0 Consumer Control id=26 [slave keyboard (3)] ⎡ Auxiliary pointer id=27 [master pointer (28)] ⎜ ↳ Auxiliary XTEST pointer id=29 [slave pointer (27)] ⎜ ↳ MX Vertical Mouse id=31 [slave pointer (27)] ⎣ Auxiliary keyboard id=28 [master keyboard (27)] ↳ Auxiliary XTEST keyboard id=30 [slave keyboard (28)] (不是 Mx Vertical Mouse id=31)的 Auxiliary pointer,例如使用 Virtual core pointerXlib.ext.xtest.fake_inputpyautogui.moveto 等,或者直接使用 xautC-API?

问题:

这些基于 X Window System 的 python 包中的任何一个都只能控制带有 Xlib-slave 的 Virtual core pointer-master。这些包都通过将 Microsoft Microsoft® 2.4GHz Transceiver v9.0 Mouse,id=11 传递给 Virtual core pointer 函数获取初始 Xlib.display.display()-master,该函数不接受任何进一步的输入来指定应该操作哪个指针(......不确定关于最后一点)。我可以通过例如获得 Xlib.ext.xtest.fake_input()-master Auxiliary pointer 但后来我不知道在哪里插入它。使用 Xlib.ext.xinput.query_device(window,xinput.AllMasterDevices).devices[1] 的源 ID Auxiliary pointer 也无济于事。

感谢您提供任何建议、想法或解决方案,提前谢谢!

解决方法

X11/extensions/XInput2.h::XIWarpPointer 移动由 deviceid

指定的设备指针

XIWarpPointer 可用于控制由鼠标/光标所连接的主指针的 id(而不是鼠标的设备 id)定义的鼠标光标:

#include <X11/extensions/XInput2.h>

Bool XIWarpPointer( Display *display,int deviceid,Window src_w,Window dest_w,double src_x,double src_y,int src_width,int src_height,double dest_x,double dest_y);

这是一个如何将它集成到 C 中或构建一个库然后使用例如与 python 接口的示例CFFI

enter image description here