用树莓派pico模拟鼠标,实现了屏幕上滑,想用同样的逻辑实现点击,结果试了半天,按下与释放拼接的逻辑没有直接一个click命令效果来的准确。查了一下这个库提供的核心命令,记录如下。adafruit_hid.mouse 库的核心命令(方法)主要有以下几个,可以帮你实现鼠标移动、点击和滚动等功能:
主要命令
| 命令 (方法) | 功能描述 | 代码示例 |
|---|---|---|
move() |
移动鼠标光标 或 滚动滚轮。可以同时指定 x, y 的移动量以及滚轮的滚动量。 | mouse.move(x=10, y=-5) mouse.move(wheel=1) |
click() |
点击一次鼠标按钮。它相当于先按下再释放一个按钮。 | mouse.click(Mouse.LEFT_BUTTON) |
press() |
按住一个或多个鼠标按钮不松开。常用于组合操作,例如实现拖动效果。 | mouse.press(Mouse.LEFT_BUTTON) |
release() |
释放一个或多个之前按住的鼠标按钮。 | mouse.release(Mouse.LEFT_BUTTON) |
release_all() |
释放所有被按住的鼠标按钮。 | mouse.release_all() |
主要常量定义
关键常量 (按钮定义)
在使用 click()、press() 或 release() 时,你需要通过以下常量来指定具体是哪个鼠标按键:
- Mouse.LEFT_BUTTON:鼠标左键
- Mouse.RIGHT_BUTTON:鼠标右键
- Mouse.MIDDLE_BUTTON:鼠标中键(按下滚轮)
简单示例
import usb_hid
from adafruit_hid.mouse import Mouse
# 初始化鼠标
mouse = Mouse(usb_hid.devices)
# 执行一次鼠标左键点击
mouse.click(Mouse.LEFT_BUTTON)模拟鼠标点击
import usb_hid
from adafruit_hid.mouse import Mouse
import time
import random
mouse = Mouse(usb_hid.devices)
time.sleep(1)
while True:
mouse.move(x=-1000, y=-1000)
time.sleep(0.1)
mouse.move(x=200, y=30)
time.sleep(0.1)
mouse.click(Mouse.LEFT_BUTTON)
time.sleep(0.1)
mouse.move(x=-1000, y=-1000)
time.sleep(0.1)
mouse.move(x=160, y=310)
time.sleep(2.5)
mouse.click(Mouse.LEFT_BUTTON)
time.sleep(0.1)
time.sleep(46) 移动端玄学的分辨率
本身调试成功的程序,给手机充了会电重试的时候分辨率忽然又不一样了,原本在iphone xsmax上实测大约220全屏移动,重新充电后大约110,直接缩水一半。
import usb_hid
from adafruit_hid.mouse import Mouse
import time
import random
def reset_pos():
mouse.move(x=-1000, y=0)
time.sleep(0.05)
mouse.move(x=40, y=0)
time.sleep(0.05)
mouse.move(x=0, y=-1000)
time.sleep(0.05)
mouse.move(x=0, y=40)
time.sleep(0.05)
def move_to(x,y):
reset_pos()
mouse.move(x,y)
time.sleep(1)
mouse = Mouse(usb_hid.devices)
time.sleep(1)
while True:
move_to(72,-8)
mouse.click(Mouse.LEFT_BUTTON)
time.sleep(0.5)
move_to(30,95)
time.sleep(0.5)
mouse.click(Mouse.LEFT_BUTTON)
time.sleep(46)

