Good catch that the fake input device wasn't properly tested. Real devices worked though! Merged connect-cursor-listener-to-input-device-hub in order to write a test to make this possible.
Added said test (see diff: presses and releases all buttons)
Discovered another issue: If we omit mir_motion_action_down (gesture start) for a second button down instead of mir_motion_action_pointer_down the "conflicting action" codepath in android::InputDispatcher::findFocusedWindowTargetsLocked and the event gets converted to a motion event. Corrected this with some refactoring to the event builders.
Good catch that the fake input device wasn't properly tested. Real devices worked though! Merged connect- cursor- listener- to-input- device- hub in order to write a test to make this possible.
Added said test (see diff: presses and releases all buttons)
Discovered another issue: If we omit mir_motion_ action_ down (gesture start) for a second button down instead of mir_motion_ action_ pointer_ down the "conflicting action" codepath in android: :InputDispatche r::findFocusedW indowTargetsLoc ked and the event gets converted to a motion event. Corrected this with some refactoring to the event builders.