Scrcpy 键盘控制
提供多种键盘输入模式:
--keyboard=sdk(default)--keyboard=uhid(or-K): simulates a physical HID keyboard using the UHID kernel module on the device--keyboard=aoa: simulates a physical HID keyboard using the AOAv2 protocol--keyboard=disabled
默认使用 sdk,但如果你经常使用 scrcpy,建议使用uhid,并在设备上一次性配置好键盘布局。
SDK 键盘
Section titled “SDK 键盘”在该模式下(--keyboard=sdk,或省略该参数时),键盘输入事件在 Android API 层注入。它几乎适用于所有场景,但仅支持 ASCII 及少量其它字符。
注意:在部分设备上,需要在开发者选项中启用额外设置该键盘模式才可用。参见前置条件。
下面的附加参数(仅适用于 --keyboard=sdk)可用于自定义行为。
文本注入偏好
Section titled “文本注入偏好”在输入文本时会产生两类事件:
- 键盘事件:表示按键按下或抬起;
- 文本事件:表示一段文本已被输入。
默认情况下,数字和“特殊字符”通过文本事件插入,而字母通过按键事件注入,以便在游戏中按键行为符合预期(典型如 WASD)。
但这可能会导致问题。如果遇到此类问题,可以将字母也作为文本注入(或直接切换到 UHID):
scrcpy --prefer-text(但这会影响游戏中的键盘行为)
相反,你也可以强制始终注入原始按键事件:
scrcpy --raw-key-events默认情况下,长按按键会生成重复的按键事件。在某些游戏中,这些事件并无意义,还可能引发性能问题。
为避免转发重复按键事件:
scrcpy --no-key-repeat物理键盘模拟
Section titled “物理键盘模拟”提供两种模式在设备上模拟物理 HID 键盘。
为正常工作,需在设备上一次性将键盘布局配置为与电脑一致。
可通过以下方式打开配置页面:
- 在使用
uhid或aoa时,从 scrcpy 窗口按下 MOD+k(见快捷键) - 在设备上,进入 设置 → 系统 → 语言和输入法 → 物理设备
- 在电脑终端执行
adb shell am start -a android.settings.HARD_KEYBOARD_SETTINGS
在该页面也可以开启或关闭屏幕键盘。
该模式使用设备上的 UHID 内核模块模拟物理 HID 键盘。
启用 UHID 键盘:
scrcpy --keyboard=uhidscrcpy -K # short version在配置好键盘布局后(见上文),这是镜像场景下使用键盘的最佳模式:
- 支持所有字符与输入法(不同于
--keyboard=sdk) - 可禁用屏幕键盘(不同于
--keyboard=sdk) - 支持 TCP/IP(无线)(不同于
--keyboard=aoa) - 在 Windows 上无相关问题(不同于
--keyboard=aoa)
缺点是老版本 Android 可能因权限错误无法使用。
该模式使用 AOAv2 协议模拟物理 HID 键盘。
启用 AOA 键盘:
scrcpy --keyboard=aoa与其他模式不同,它直接在 USB 层工作(因此仅支持 USB 连接)。
它不使用 scrcpy 服务端,也不需要 adb(USB 调试)。因此,即使关闭 USB 调试也可以控制设备(但无法镜像),见OTG。
注意:在 Windows 上,它可能只能在OTG 模式下工作,无法在镜像时使用(当 USB 设备已被其他进程如 adb daemon 打开时无法再次打开)。