By default, scrcpy injects input events at the Android API level. As an alternative, it is possible to send HID events, so that scrcpy behaves as if it was a physical keyboard and/or a physical mouse connected to the Android device (see keyboard and mouse).
A special mode (OTG) allows to control the device using AOA
keyboard, mouse and
gamepad, without using adb at all (so USB debugging is not
necessary). In this mode, video and audio are disabled, and --keyboard=aoa
and
--mouse=aoa
are implicitly set. However, gamepads are disabled by default, so
--gamepad=aoa
(or -G
in OTG mode) must be explicitly set.
Therefore, it is possible to run scrcpy with only physical keyboard, mouse and gamepad simulation, as if the computer keyboard, mouse and gamepads were plugged directly to the device via an OTG cable.
To enable OTG mode:
scrcpy --otg
# Pass the serial if several USB devices are available
scrcpy --otg -s 0123456789abcdef
It is possible to disable keyboard or mouse:
scrcpy --otg --keyboard=disabled
scrcpy --otg --mouse=disabled
and to enable gamepads:
scrcpy --otg --gamepad=aoa
scrcpy --otg -G # short version
It only works if the device is connected over USB.
See FAQ.
Note that the purpose of OTG is to control the device without USB debugging (adb).
If you want to solely control the device without mirroring while USB debugging is enabled, then OTG mode is not necessary.
Instead, disable video and audio, and select UHID (or AOA):
scrcpy --no-video --no-audio --keyboard=uhid --mouse=uhid --gamepad=uhid
scrcpy --no-video --no-audio -KMG # short version
scrcpy --no-video --no-audio --keyboard=aoa --mouse=aoa --gamepad=aoa
One benefit of UHID is that it also works wirelessly.