Mouse
Several mouse input modes are available:
--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
SDK mouse
Section titled “SDK mouse”In this mode (--mouse=sdk, or if the parameter is omitted), mouse input events
are injected at the Android API level with absolute coordinates.
Note that on some devices, an additional option must be enabled in developer options for this mouse mode to work. See prerequisites.
Mouse hover
Section titled “Mouse hover”By default, mouse hover (mouse motion without any clicks) events are forwarded to the device. This can be disabled with:
scrcpy --no-mouse-hoverPhysical mouse simulation
Section titled “Physical mouse simulation”Two modes allow to simulate a physical HID mouse on the device.
In these modes, the computer mouse is “captured”: the mouse pointer disappears from the computer and appears on the Android device instead.
The shortcut mod (either Alt or Super by default) toggle (disable or enable) the mouse capture. Use one of them to give the control of the mouse back to the computer.
This mode simulates a physical HID mouse using the UHID kernel module on the device.
To enable UHID mouse, use:
scrcpy --mouse=uhidscrcpy -M # short versionNote: UHID may not work on old Android versions due to permission errors.
This mode simulates a physical HID mouse using the AOAv2 protocol.
To enable AOA mouse, use:
scrcpy --mouse=aoaContrary to the other modes, it works at the USB level directly (so it only works over USB).
It does not use the scrcpy server, and does not require adb (USB debugging).
Therefore, it is possible to control the device (but not mirror) even with USB
debugging disabled (see OTG).
Note: On Windows, it may only work in OTG mode, not while mirroring (it is not possible to open a USB device if it is already open by another process like the adb daemon).
Mouse bindings
Section titled “Mouse bindings”By default, with SDK mouse:
- right-click triggers
BACK(orPOWERon) - middle-click triggers
HOME - the 4th click triggers
APP_SWITCH - the 5th click expands the notification panel
The secondary clicks may be forwarded to the device instead by pressing the Shift key (e.g. Shift+right-click injects a right click to the device).
In AOA and UHID mouse modes, the default bindings are reversed: all clicks are forwarded by default, and pressing Shift gives access to the shortcuts (since the cursor is handled on the device side, it makes more sense to forward all mouse buttons by default in these modes).
The shortcuts can be configured using --mouse-bind=xxxx:xxxx for any mouse
mode. The argument must be one or two sequences (separated by :) of exactly 4
characters, one for each secondary click:
.---- 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 clickEach character must be one of the following:
+: forward the click to the device-: ignore the clickb: trigger shortcutBACK(or turn screen on if off)h: trigger shortcutHOMEs: trigger shortcutAPP_SWITCHn: trigger shortcut “expand notification panel”
For example:
scrcpy --mouse-bind=bhsn:++++ # the default mode for SDK mousescrcpy --mouse-bind=++++:bhsn # the default mode for AOA and UHIDscrcpy --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 panelThe second sequence of bindings may be omitted. In that case, it is the same as the first one:
scrcpy --mouse-bind=bhsnscrcpy --mouse-bind=bhsn:bhsn # equivalent