python获取鼠标状态_通过Python中的Xlib找出鼠标按钮状态

使用Python的Xlib库可以查询鼠标位置,但要获取鼠标按钮的状态,需要依赖XInput扩展。如果X服务器支持XInput,可以遍历设备并检查ButtonClass来判断左、中、右键的状态。代码示例展示了如何获取鼠标按钮状态,注意某些设备如触摸板也可能被视为按钮。
摘要由CSDN通过智能技术生成

我可以通过以下方式确定当前鼠标指针的位置:

from Xlib.display import Display

display = Display()

qp = display.screen().root.query_pointer()

print(qp.root_x, qp.root_y)

我如何也可以通过Xlib获得当前鼠标按钮的状态,例如按下/释放左/右按钮? (或者,如果不可能,为什么不呢?)

解决方法:

您的X窗口必须支持XInput扩展. Real X可以使用,但是如果X服务器不支持VNC服务器等扩展名,则无法使用鼠标键.

如果X服务器支持它,则可以进入鼠标状态,如下所示:

from Xlib.display import Display

from Xlib.ext import xinput

display = Display()

import time

while True:

buttons = []

for device_info in display.xinput_query_device(xinput.AllDevices).devices:

if not device_info.enabled:

continue

if xinput.ButtonClass not in [ device_class.type for device_class in device_info.classes ]:

continue

buttons.append(device_info)

for button in buttons:

for device_class in button.classes:

if xinput.ButtonClass == device_class.type:

if device_class.state[0]:

print('Device {name} - Primary button down'.format(name=button.name))

time.sleep(1)

我不确定百分百找不到文档,但是我确定device_class.state [0]是主要的(左键),1是中间的,2是右键.

编辑:

为什么有两个for循环-首先,我在永远循环之外编写了“ buttons”部分.但是,“嘿,您可以随时插入鼠标.”

您会发现,有许多设备包括“虚拟”设备.在笔记本电脑上,触摸板也可以用作按钮,因此在您的应用中,如果您想了解真正的鼠标按钮,则可能必须从名称中选择设备.同样,没有好的文档,因此您可能必须解密设备类对象.您可以在/usr/lib/python3/dist-packages/Xlib/ext/xinput.py中找到xinput. (如果您使用的是Python2,请相应地进行调整.)祝您好运.

标签:xlib,mouse,cursor,linux,python

来源: https://codeday.me/bug/20191211/2105916.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值