利用树莓派pico模拟ios的hid鼠标

关于CircuitPython

CircuitPython 是一个对初学者非常友好的、开源的教学用编程语言,专门用于控制单片机(microcontrollers)——那些可以做成各种电子项目的小型计算机。它最大的特点就是让代码与现实世界连接起来,让你通过编写简单的Python代码,就能轻松控制硬件,比如让LED灯闪烁或读取传感器数据。

与MicroPython有什么关系

CircuitPython 是 Adafruit 为了简化硬件编程和学习,从另一个知名的嵌入式Python项目 MicroPython 衍生出来的版本。

  • MicroPython 是最初的“开拓者”,旨在将Python运行在单片机上。
  • CircuitPython 则是在此基础上,更专注于易用性、教育和统一硬件API。它进一步简化了流程,比如统一的USB存储访问方式,让所有支持的板子用起来体验都差不多。

简单来说,可以把 MicroPython 看作一个强大的基础引擎,而 CircuitPython 则是一个安装了“新手友好”套件的版本,并附带详细的教学地图。

文章所涉及到的文件下载

picoMouse项目文件

<!-- 库文件 -->
adafruit-circuitpython-bundle-10.x-mpy-20260310.zip
<!-- circuitpython刷机文件 -->
adafruit-circuitpython-raspberry_pi_pico-en_US-10.1.4
<!-- 刷回arduino可识别格式 -->
arduino-blink.uf2

手动安装 CircuitPython 固件

第一步:让 Pico 进入“待刷机”模式 (BOOTSEL模式)
这是最关键的一步,目的是让电脑把 Pico 识别为一个可写入文件的U盘。
准备:先用USB线将Pico与电脑断开连接。
操作:按住 Pico 板上唯一的那个 BOOTSEL 按钮,不要松手。
连接:按住按钮的同时,将USB线插入电脑,连接Pico。
成功:连接后,你就可以松开 BOOTSEL 按钮了。此时,你的电脑上应该会出现一个名为 RPI-RP2 的新移动磁盘。这就表示Pico已经准备好接收新系统了。找不到RPI-RP2盘? 请检查USB线是否只是充电线(没有数据功能),尝试更换一根数据线或电脑的USB接口。如果还是不出现,可以重复以上步骤再试一次。

第二步:下载并拖放 CircuitPython 固件
下载固件:在浏览器中访问 CircuitPython 官方网站,根据你手上的Pico型号,下载对应的 .uf2 格式的固件文件。
普通 Pico:下载文件名包含 raspberry_pi_pico 的UF2文件。
Pico W (带无线功能):下载文件名包含 raspberry_pi_pico_w 的UF2文件。
Pico 2:下载文件名包含 raspberry_pi_pico2 的UF2文件。
Pico 2W:下载文件名包含 raspberry_pi_pico2_w 的UF2文件。
拖放文件:找到刚刚下载好的 .uf2 文件,用鼠标将它拖拽到刚才出现的 RPI-RP2 磁盘里。
自动安装:文件复制完成后,Pico 会自动重启。此时,你会发现 RPI-RP2 磁盘消失了,取而代之的是一个名为 CIRCUITPY 的新磁盘。

恭喜!当 CIRCUITPY 磁盘出现时,就意味着 CircuitPython 已经成功安装到你的 Pico 上了。现在,你可以像操作普通U盘一样,把Python代码保存在里面的 code.py 文件中,保存后代码就会自动运行。

添加库文件

添加HID库:刷写完成后,Pico会重新出现为一个名为CIRCUITPY的U盘。在该磁盘中创建一个lib文件夹,并将adafruit_hid库文件夹复制进去。你可以从CircuitPython官方库Bundle中获得。(本站已提供百度网盘下载)

python文件

配置文件,提醒设备将pico识别为hid鼠标或键盘;

# boot.py
# 这个文件在Pico启动时只运行一次,用于配置USB模式
import usb_hid
import storage

# 禁用USB大容量存储模式(这样电脑就不会把它识别为一个U盘了)
storage.disable_usb_drive()

# 启用USB HID鼠标功能
# 注意:这里用的是usb_hid.enable,参数是一个包含设备的元组
usb_hid.enable((usb_hid.Devices.MOUSE,))

# 如果你以后想同时模拟键盘,可以改成:
# usb_hid.enable((usb_hid.Devices.KEYBOARD, usb_hid.Devices.MOUSE))

尝试模拟上滑动作,ios下记得开启辅助控制以显示鼠标光标;

import usb_hid
from adafruit_hid.mouse import Mouse
import time
import random

# 初始化鼠标
mouse = Mouse(usb_hid.devices)

mouse.move(x=0, y=-1000)

while True:
    # 第一步:向下移动40像素,重复25次(模拟滑动)
    print("向下滑动中...")
    for i in range(25):
        mouse.move(x=0, y=20)  # 向下移动40像素
        time.sleep(0.02)       # 对应原代码的delay(20)
    
    # 第二步:按下左键 + 向上移动
    print("按下左键,向上拖动...")
    mouse.press(Mouse.LEFT_BUTTON)  # 按下左键
    for i in range(25):
        mouse.move(x=0, y=-20)  # 向上移动40像素
        time.sleep(0.02)
    
    # 第三步:松开左键,再向上微调一下
    print("松开左键,微调...")
    mouse.release(Mouse.LEFT_BUTTON)  # 松开左键
    mouse.move(x=0, y=-20)  # 最后再向上移动一次
    
    # 随机等待2-3秒
    wait_time = random.randint(3000, 4000) / 1000
    print(f"等待 {wait_time:.1f} 秒")
    time.sleep(wait_time)

以上两个文件都放入 CIRCUITPY 盘符的根目录下。博主在电脑上重新插入后不起作用,iphone xsmax下测试通过。

需要修改程序的情况

因为默认识别为鼠标,所以再次插入电脑也不会显示盘符,上电后注意pico板载led会连续闪烁几下,在这个期间内按住pico板上的bootsel键,长按几秒后松开,就可以重新进入 CIRCUITPY 盘了。

模拟失效的情况

重启手机或者重新开关一下辅助控制,辅助控制长时间开启可能会出错。

标签: pico

移动端可扫我直达哦~

推荐阅读

thumbnail 2026-03-14

树莓派 pico adafruit_hid.mouse 库的核心命令

用树莓派pico模拟鼠标,实现了屏幕上滑,想用同样的逻辑实现点击,结果试了半天,按下与释放拼接的逻辑没有直接一个click命令效果来的准确。查了一下这个库提供的核心命令,记录如下。adafruit_hid.mouse 库的核心命令(方...

少儿编程 pico

thumbnail 2026-03-12

pico 安装 CircuitPython 之后的复原与修复

用树莓派 pico板成功模拟了ios系统的有线鼠标, 实测在安卓系统中也同样适用,但多次插拔后,某次安卓手机把它当成了可移动磁盘。重新连上电脑想进入 CIRCUITPY 盘时,电脑只识别出来一个可移动磁盘,内部的程序都不见了,尝试将其...

少儿编程 pico

thumbnail 2026-03-03

简单介绍一下树莓派 pico

树莓派 Pico 是树莓派基金会推出的一系列微控制器开发板。它和我们通常所说的能跑系统的“树莓派电脑”不同,更专注于与传感器、电机等硬件“打交道”,非常适合用于嵌入式开发、物联网、教育和创意项目。Pico 系列核心成员对比树莓派 Pi...

少儿编程 pico