繁体   English   中英

使用 ubuntu 20.04 LTS 上的 python Xlib 或 C-API 操作第二个(辅助)鼠标输入

[英]Manipulate second (auxiliary) mouse inputs with python Xlib or C-API on 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 ),见xinput

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)]

问题:

如何使用 python 操作附加到Auxiliary pointer (非Virtual core pointer )的Mx Vertical Mouse id=31 ,例如使用Xlib.ext.xtest.fake_inputpyautogui.moveToxaut等,或者直接使用C X Window System的 API ?

问题:

这些基于Xlib的 python 包中的任何一个都只能控制Virtual core pointer - 主控,附带Microsoft Microsoft® 2.4GHz Transceiver v9.0 Mouse, id=11 - 从属。 这些包都通过将Xlib.display.Display()传递给Xlib.ext.xtest.fake_input() function 来获取初始Virtual core pointer -master ,它不需要任何进一步的输入来指定应该操纵哪个指针 (. ..不确定最后一点)。 我可以使用例如Xlib.ext.xinput.query_device(window, xinput.AllMasterDevices).devices[1]来获取Auxiliary pointer -master,但是我不知道在哪里插入它。同时使用Auxiliary pointer ' s source id id=31没有帮助。

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

X11/extensions/XInput2.h::XIWarpPointer移动由deviceid指定的设备指针

XIWarpPointer可用于控制鼠标 cursor 由鼠标/光标所连接的主指针的 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 或构建一个库,然后使用例如CFFI与 python 接口:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM