Skip to content

Commit

Permalink
Inject finger input whenever possible
Browse files Browse the repository at this point in the history
Even if the pointer is a mouse, inject it as a finger unless it is
required to be a mouse, that is:
 - when it is a HOVER_MOUSE event, or
 - when a secondary button is pressed.

Some apps/games only accept events from a finger/touchscreen, so using a
mouse by default does not work for them.

For simplicity, make this change on the server side just before
event injection (so that the client does not need to know about this
hacky behavior).

Refs 6808288
Refs c7b1d0e
Fixes Genymobile#5162 <Genymobile#5162>
Fixes Genymobile#5163 <Genymobile#5163>
  • Loading branch information
rom1v authored and Gottox committed Sep 29, 2024
1 parent f649729 commit d5abb49
Showing 1 changed file with 3 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,9 @@ private boolean injectTouch(int action, long pointerId, Position position, float
pointer.setPressure(pressure);

int source;
if (pointerId == POINTER_ID_MOUSE) {
// real mouse event
boolean activeSecondaryButtons = ((actionButton | buttons) & ~MotionEvent.BUTTON_PRIMARY) != 0;
if (pointerId == POINTER_ID_MOUSE && (action == MotionEvent.ACTION_HOVER_MOVE || activeSecondaryButtons)) {
// real mouse event, or event incompatible with a finger
pointerProperties[pointerIndex].toolType = MotionEvent.TOOL_TYPE_MOUSE;
source = InputDevice.SOURCE_MOUSE;
pointer.setUp(buttons == 0);
Expand Down

0 comments on commit d5abb49

Please sign in to comment.