scrcpy/app/src
Pawel Jasinski c7b1d0ea9a Force mouse source when --forward-all-clicks
Right click and middle click require the source device to be a mouse,
not a touchscreen. Therefore, the source device was changed only when a
button other than the primary button was pressed (see
adc547fa6e).

However, this led to inconsistencies between the ACTION_DOWN when a
secondary button is pressed (with a mouse as source device) and the
matching ACTION_UP when the secondary button is released (with a
touchscreen as source device, because then there is no button pressed).

To avoid the problem in all cases, force a mouse as source device when
--forward-all-clicks is set.

Concretely, for mouse events in --forward-all-clicks mode:
 - device source is set to InputDevice.SOURCE_MOUSE;
 - motion event toolType is set to MotionEvent.TOOL_TYPE_MOUSE;

Otherwise (when --forward-all-clicks is unset, or for real touch
events), finger events are injected:
 - device source is set to InputDevice.SOURCE_TOUCHSCREEN;
 - motion event toolType is set to MotionEvent.TOOL_TYPE_FINGER.

Fixes #3568 <https://github.com/Genymobile/scrcpy/issues/3568>
PR #3579 <https://github.com/Genymobile/scrcpy/pull/3579>

Co-authored-by: Romain Vimont <rom@rom1v.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-12-22 11:26:26 +01:00
..
adb Add missing LOG_OOM() on malloc failure 2022-07-19 12:15:06 +02:00
android Fix typos 2021-04-18 14:36:31 +02:00
sys Use /dev/null instead of closing fds 2022-09-25 15:42:33 +02:00
trait Add relative mode flag to mouse processors 2022-01-04 17:41:40 +01:00
usb Add missing allocation failure check 2022-07-19 12:17:02 +02:00
util Use current adb port (if any) for --tcpip 2022-12-02 19:09:53 +01:00
cli.c Add option to not power on on start 2022-04-28 19:12:52 +02:00
cli.h Move scrcpy option structs to options.h 2021-10-27 18:43:47 +02:00
clock.c Replace '%g' by '%f' as printf format 2022-08-03 23:25:09 +02:00
clock.h Fix typo in clock comments 2021-10-29 12:21:34 +02:00
common.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
compat.c Add (v)asprintf compatibility functions 2021-11-24 19:55:00 +01:00
compat.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
control_msg.c Force mouse source when --forward-all-clicks 2022-12-22 11:26:26 +01:00
control_msg.h Force mouse source when --forward-all-clicks 2022-12-22 11:26:26 +01:00
controller.c Remove LOGC() 2022-02-09 09:52:15 +01:00
controller.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
coords.h Use sc_ prefix for size, position and point 2021-10-30 15:20:39 +02:00
decoder.c Use sc_ prefix for decoder 2022-02-02 21:03:55 +01:00
decoder.h Use sc_ prefix for decoder 2022-02-02 21:03:55 +01:00
demuxer.c Rename buffer_util.h to binary.h 2022-08-28 15:23:08 +02:00
demuxer.h Rename stream to sc_demuxer 2022-02-02 21:03:55 +01:00
device_msg.c Rename buffer_util.h to binary.h 2022-08-28 15:23:08 +02:00
device_msg.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
events.h Add OTG mode 2022-01-27 23:36:23 +01:00
file_pusher.c Remove LOGC() 2022-02-09 09:52:15 +01:00
file_pusher.h Move ADB code to adb/ 2022-02-04 08:39:10 +01:00
fps_counter.c Move FPS counter start/stop logs 2022-02-18 18:16:12 +01:00
fps_counter.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
frame_buffer.c Fix code style 2022-01-27 19:02:07 +01:00
frame_buffer.h Extract current video_buffer to frame_buffer 2021-07-14 14:22:32 +02:00
icon.c Fix build with ffmpeg 5.0 2022-01-16 17:37:28 +01:00
icon.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
input_events.h Force mouse source when --forward-all-clicks 2022-12-22 11:26:26 +01:00
input_manager.c Force mouse source when --forward-all-clicks 2022-12-22 11:26:26 +01:00
input_manager.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
keyboard_inject.c Use sc_ prefix for control_msg enums 2022-01-27 16:47:51 +01:00
keyboard_inject.h Use sc_ prefix for controller 2022-01-14 22:17:30 +01:00
main.c Support wchar_t in argv for Windows 2022-10-23 23:45:00 +02:00
mouse_inject.c Force mouse source when --forward-all-clicks 2022-12-22 11:26:26 +01:00
mouse_inject.h Use sc_ prefix for controller 2022-01-14 22:17:30 +01:00
opengl.c Fix OpenGL ES prefix skip 2022-03-30 12:01:01 +02:00
opengl.h Define feature test macros in common.h 2021-01-17 14:08:48 +01:00
options.c Add option to not power on on start 2022-04-28 19:12:52 +02:00
options.h Add option to not power on on start 2022-04-28 19:12:52 +02:00
receiver.c Remove LOGC() 2022-02-09 09:52:15 +01:00
receiver.h Add missing SC_ prefix to header guards 2022-04-12 23:59:01 +02:00
recorder.c Remove LOGC() 2022-02-09 09:52:15 +01:00
recorder.h Use sc_ prefix for recorder 2022-02-02 21:03:55 +01:00
scrcpy.c Add option to not power on on start 2022-04-28 19:12:52 +02:00
scrcpy.h Add specific exit code for device disconnection 2022-03-06 22:19:46 +01:00
screen.c Remove continuous resizing workaround for Windows 2022-12-21 22:06:43 +01:00
screen.h Add --print-fps to enable FPS counter on start 2022-02-18 18:16:50 +01:00
server.c Use current adb port (if any) for --tcpip 2022-12-02 19:09:53 +01:00
server.h Add option to not power on on start 2022-04-28 19:12:52 +02:00
v4l2_sink.c Remove LOGC() 2022-02-09 09:52:15 +01:00
v4l2_sink.h Fix build with ffmpeg 5.0 2022-01-16 17:37:28 +01:00
version.c Print libusb version on --version 2022-02-09 10:15:19 +01:00
version.h Move version handling to a separate file 2022-02-09 10:15:07 +01:00
video_buffer.c Rename scrcpy threads 2021-12-09 21:32:11 +01:00
video_buffer.h Add buffering debugging tools 2021-07-14 14:54:22 +02:00