跳转到内容

Scrcpy 鼠标控制

提供多种鼠标输入模式:

  • --mouse=sdk (default)
  • --mouse=uhid (or -M): simulates a physical HID mouse using the UHID kernel module on the device
  • --mouse=aoa: simulates a physical HID mouse using the AOAv2 protocol
  • --mouse=disabled

在该模式下(--mouse=sdk,或省略该参数时),鼠标输入事件以绝对坐标在 Android API 层注入。

注意:在部分设备上,需要在开发者选项中启用额外设置该鼠标模式才可用。参见前置条件

默认会将鼠标悬停(无点击的移动)事件转发到设备。可通过以下命令禁用:

scrcpy --no-mouse-hover

提供两种模式在设备上模拟物理 HID 鼠标。

在这些模式下,电脑的鼠标会“被捕获”:电脑上的鼠标指针会消失,转而在 Android 设备上显示。

通过快捷键修饰键(默认是 AltSuper)来切换是否捕获鼠标。使用其中之一可将鼠标控制权交还给电脑。

该模式使用设备上的 UHID 内核模块模拟物理 HID 鼠标。

启用 UHID 鼠标:

Terminal window
scrcpy --mouse=uhid
scrcpy -M # short version

注意:在旧版 Android 上,UHID 可能因权限错误而无法工作。

该模式使用 AOAv2 协议模拟物理 HID 鼠标。

启用 AOA 鼠标:

Terminal window
scrcpy --mouse=aoa

与其他模式不同,它直接在 USB 层工作(因此仅支持 USB 连接)。

它不使用 scrcpy 服务端,也不需要 adb(USB 调试)。因此,即使关闭 USB 调试也可以控制设备(但无法镜像),见OTG

注意:在 Windows 上,它可能只能在OTG 模式下工作,无法在镜像时使用(当 USB 设备已被其他进程如 adb daemon 打开时无法再次打开)。

在 SDK 鼠标模式下的默认绑定:

  • 右键触发 BACK(或点亮屏幕)
  • 中键触发 HOME
  • 第四键触发 APP_SWITCH
  • 第五键展开通知面板

按住 Shift 可将这些次要按键直接转发给设备(例如 Shift+右键会向设备注入右键点击)。

在 AOA 与 UHID 模式下,默认绑定相反:默认转发所有点击,按住 Shift 可触发快捷操作(由于光标在设备侧处理,这两种模式默认转发所有鼠标按键更合理)。

可通过 --mouse-bind=xxxx:xxxx 在任意鼠标模式下配置快捷绑定。该参数为一段或两段(以 : 分隔)的恰好 4 个字符序列,对应每个次要点击:

.---- Shift + right click
SECONDARY |.--- Shift + middle click
BINDINGS ||.-- Shift + 4th click
|||.- Shift + 5th click
||||
vvvv
--mouse-bind=xxxx:xxxx
^^^^
||||
PRIMARY ||| `- 5th click
BINDINGS || `-- 4th click
| `--- middle click
`---- right click

每个字符必须是以下之一:

  • +:将点击转发至设备
  • -:忽略该点击
  • b:触发快捷键 BACK(或在屏幕熄灭时点亮屏幕)
  • h:触发快捷键 HOME
  • s:触发快捷键 APP_SWITCH
  • n:触发快捷键“展开通知面板”

例如:

Terminal window
scrcpy --mouse-bind=bhsn:++++ # the default mode for SDK mouse
scrcpy --mouse-bind=++++:bhsn # the default mode for AOA and UHID
scrcpy --mouse-bind=++bh:++sn # forward right and middle clicks,
# use 4th and 5th for BACK and HOME,
# use Shift+4th and Shift+5th for APP_SWITCH
# and expand notification panel

第二组绑定可省略,此时与第一组相同:

Terminal window
scrcpy --mouse-bind=bhsn
scrcpy --mouse-bind=bhsn:bhsn # equivalent