键盘

有多种键盘输入模式可供选择:

  • --keyboard=sdk(默认)
  • --keyboard=uhid(或 -K):使用设备上的UHID内核模块模拟物理HID键盘
  • --keyboard=aoa:使用AOAv2协议模拟物理HID键盘
  • --keyboard=disabled

默认情况下使用sdk模式,但如果经常使用scrcpy,建议使用uhid并一次性配置键盘布局。

SDK键盘

在这种模式下(--keyboard=sdk,或者如果省略参数),键盘输入事件在Android API级别注入。它在所有地方都适用,但仅限于ASCII和一些其他字符。

请注意,在某些设备上,为了使这种键盘模式正常工作,需要在开发者选项中启用一个额外的选项。请参见先决条件

以下描述的额外参数(特定于--keyboard=sdk)允许自定义行为。

文本注入偏好

打字文本时生成两种类型的事件: - 键事件,表示按键被按下或释放; - 文本事件,表示已输入文本。

默认情况下,数字和“特殊字符”使用文本事件插入,但字母使用键事件注入,以便在游戏中(通常对于WASD键)键盘表现如预期。

但这可能会导致问题。如果你遇到这样的问题,你可以将字母作为文本注入(或者切换到UHID):

scrcpy --prefer-text

(但这将破坏游戏中的键盘行为)

相反,你可以强制始终注入原始键事件:

scrcpy --raw-key-events

键重复

默认情况下,按住一个键会生成重复的键事件。这可能会导致一些游戏中出现性能问题,因为这些事件本来就无用。

要避免转发重复的键事件:

scrcpy --no-key-repeat

物理键盘模拟

有两种模式可以在设备上模拟物理HID键盘。

为了正常工作,需要(一次性地)配置设备上的键盘布局,以匹配计算机的布局。

配置页面可以通过以下方式之一打开: - 从scrcpy窗口(当使用uhidaoa时),按MOD+k(见快捷键) - 从设备上,在设置 → 系统 → 语言和输入 → 物理设备中 - 从计算机上的终端,执行adb shell am start -a android.settings.HARD_KEYBOARD_SETTINGS

从这个配置页面,还可以启用或禁用心屏幕键盘。

UHID

这种模式使用设备上的UHID内核模块模拟物理HID键盘。

要启用UHID键盘,请使用:

scrcpy --keyboard=uhid
scrcpy -K  # 简洁版本

一旦键盘布局配置完成(见上文),它是在镜像使用时使用键盘的最佳模式:

  • 它适用于所有字符和IME(与--keyboard=sdk相反)
  • 可以禁用心屏幕键盘(与--keyboard=sdk相反)
  • 可以通过TCP/IP(无线)工作(与--keyboard=aoa相反)
  • 在Windows上没有问题(与--keyboard=aoa相反)

一个缺点是,由于权限错误,它可能不适用于旧版本的Android。

AOA

这种模式使用AOAv2协议模拟物理HID键盘。

要启用AOA键盘,请使用:

scrcpy --keyboard=aoa

与其他模式不同,它直接在USB级别工作(因此只能通过USB工作)。

它不使用scrcpy服务器,也不需要adb(USB调试)。因此,即使禁用了USB调试(见OTG),也可以控制设备(但不能镜像)。

注意:在Windows上,它可能只能在OTG模式下工作,而不能在镜像模式下工作(如果一个USB设备已经被另一个进程如_adb守护程序_打开,则不可能打开该USB设备)。