It has been tested with the ScummVM core on:
- NVIDIA Shield TV running Android Nougat 7.0
- NVIDIA Shield Tablet running Android Nougat 7.0
- NVIDIA Shield Tablet running Android Lollipop 5.1
- Huawei Honor 7 running Android Marshmallow 6.0
- HTC Desire 500 running Android Jelly Bean 4.1
It's been tested using the touch screen, a USB mouse/keyboard combo, and a bluetooth mouse.
The Android version running on the device limits the functionality and user experience of the external mouse support.
Android Nougat and/or an NVIDIA SHIELD device with NVIDIA extensions provides the best user experience:
Android API < 14:
- Only left mouse button supported
- The Android mouse cursor will be visible along with the in game mouse cursor
- When the Android mouse cursor hits the edge of the screen it will not be possible to move the in-game mouse cursor further in that direction
Android API < 24 and no NVIDIA extensions available:
- Both left and right mouse buttons supported
- The Android mouse cursor will be visible along with the in game mouse cursor
- When the Android mouse cursor hits the edge of the screen it will not be possible to move the in-game mouse cursor further in that direction
Android API > 23 and/or NVIDIA extensions available (SHIELD devices):
- Both left and right mouse buttons supported
- The Android mouse cursor will be hidden
- The mouse is not limited by the (hidden) Android mouse cursor hitting the edge of the screen
Description of how the the touchscreen mouse support works:
- You can move the in-game mouse cursor using the touch screen. The in-game mouse cursor will move relative to your movements on the touch screen, it will not be centered on where you press the screen.
- One quick tap on the touch screen results in the left mouse button being clicked
- Two taps on the screen and keeping the second tap pressed down results in a left mouse being held down until you release
- Two fingers on the touch screen results in the right mouse button being clicked
The touch screen mouse functionality is active at the same time as overlay support. This might cause some confusion when using cores that are designed for mouse support but where you have also enabled overlay controls. At the top of android_input.c there's a define that can be used to turn off this functionality if it causes more problems than it solves.
of other sources being set.
API level 9 doesn't support stylus, but still needs to be handled.
Current code throws out additional sources that it doesn't
recognize. This instead ignores whether other sources are set.
blocking call. For some reason this allows more input events to queue up in the
input queue for processing making it easier to press multiple gamepad buttons and
have it register within a single frame.
The NVIDIA Button on the Nvidia Shield Controller and inputs received from CEC remotes
are detected as a "Virtual" controller on the Shield TV.
If a virtual controller is detected on the Shield TV before an actual game controller
then it will be configured as "Shield Virtual Device". This allows the use of the
buttons on a CEC remote to control the Retroarch menu and games.
When an actual controller is connected the Virtual Device will be overwritten and
the NVIDIA button of the Virtual device will be mapped to the controller as the
menu button.
This also fixes the situation where you press the NVIDIA Button before any other
button on the game controller and it does nothing. Now it will go into the
Retroarch menu even if it is the first button pressed.
A matching profile for "Nvidia Shield Virtual Controller" has been sent as a pull request to
the "retroarch-joypad-autoconfig" repository.
This solves the problem with volume buttons on phones being detected as
keyboards and blocking a real keyboard from being mapped afterwards.
Renamed id_1 and id_2 to pad_id1 and pad_id2
Renamed id_3 to kbd_id and change it to an array
Implement function is_keyboard_id(int id) which checks if an id is mapped as
a keyboard