Skip to content

About

Use the original 2015 NVIDIA SHIELD Controller touchpad as a system-wide mouse while preserving gamepad input.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SHIELD Controller Touchpad Mouse

Turn the touchpad on the original NVIDIA SHIELD Controller (2015, USB 0955:7210) into a system-wide mouse on SHIELD TV while keeping the buttons, sticks, triggers, and shoulder buttons available as a normal gamepad.

V2.1 Public R4 dashboard

What it does

  • Moves a visible pointer with the controller's physical touchpad.
  • Clicks when the touchpad is physically pressed.
  • Preserves the rest of the controller through a virtual UHID gamepad.
  • Provides a TV-friendly speed slider from 0.50x to 3.00x.
  • Restores the helper automatically after a SHIELD restart or controller reconnect, with no PC needed after one-time setup.
  • Uses the pointer artwork already included in the SHIELD Android framework.
  • Requires no root, unlocked bootloader, or firmware modification.

This project is independent and is not affiliated with or endorsed by NVIDIA.

Compatibility

Item Status
Original SHIELD Controller 2015 (0955:7210) Supported and tested
SHIELD TV 2015 Pro, SHIELD Experience 9.2.1 / Android TV 11 Tested
SHIELD TV 2017 and 2019 hosts Expected to work, not fully tested
SHIELD Controller 2017 Not supported by this release
Root access Not required
PC after initial setup Not required

Download

Download ShieldTouchpadMouse-v2.1-public-r4.apk from the latest GitHub release.

Verify the APK before installing:

SHA-256  3E5CC06AE70BDB4AD2B3E66FEB795FFEA40F9A47733A79C8F7544E974473D029
Size     50,002 bytes
Package  com.drmoss.shieldtouchpadmouse
Version  2.1-public-r4 (versionCode 16)

The current APK is development/debug signed. Google Play Protect may therefore identify it as an unknown sideloaded app. Confirm the checksum and only install the APK if you trust this source. A future Play-distributed build should use a private production signing key.

Setup summary

  1. Install and open the APK on the SHIELD.
  2. Connect or wake the original 2015 controller.
  3. Select Grant and approve controller access.
  4. Select Open settings, then enable Shield Touchpad Mouse under Accessibility.
  5. Enable Developer options > Network debugging on the SHIELD.
  6. Return to the app and select Authorize.
  7. On the debugging prompt, check Always allow from this computer, then select Allow. The “computer” is the app's local key on the same SHIELD.
  8. When all four checks are green, select Finish setup.

Network debugging must remain enabled for automatic recovery after restarts and reconnects. The app connects only to 127.0.0.1:5555; it does not contact an internet server.

For every screen and menu path, see the complete installation tutorial.

Controls

Action Control
Move pointer Slide one finger on the touchpad
Click Physically press the touchpad
Change speed Focus the slider and use D-pad left/right
Temporarily stop Select Stop mouse in the app
Resume Select Start mouse + gamepad
Gamepad input All non-touchpad reports are passed through unchanged

There is no L1/R1 filter in Public R4. All normal buttons are preserved.

Standard mode or touchpad compatibility mode?

NVIDIA's firmware-native controller mouse is the simpler option, but on the tested Android TV firmware it is hard-coded to the right stick. This app's compatibility mode is for people who specifically want the physical touchpad and still need the controller to work as a gamepad.

Capability Standard NVIDIA mode This app
Pointer control Right stick on tested firmware 2015 controller touchpad
Touchpad press as click Not in the tested native TV path Yes
Gamepad remains usable Yes, directly Yes, through virtual gamepad
Accessibility required No Yes
Developer / Network debugging No Yes
Root or modified firmware No No
Speed control Firmware/app dependent Built-in 0.50x-3.00x slider
Firmware dependency Private NVIDIA behavior Raw 2015-controller HID format

Read the full comparison and recommendation.

How it works

2015 controller USB HID
        |
        v
Android app claims the HID interface
        |                         |
        | report ID 2             | every other HID report
        v                         v
touchpad parser             loopback bridge (127.0.0.1:47210)
        |                         |
        v                         v
Accessibility cursor/tap    shell-owned /dev/uhid virtual gamepad

The on-device helper is needed because Android's normal app security domain cannot write /dev/uhid. The app uses the SHIELD's already enabled local ADB service to install and start that narrowly scoped helper as shell. Helper files are checked with SHA-256 before reuse. See How it works for the detailed sequence and threat model.

Privacy and security

  • No accounts, analytics, ads, telemetry, or remote servers.
  • Accessibility event contents are ignored; Accessibility is used only to draw the pointer and dispatch a tap.
  • The INTERNET permission is used for localhost ADB and the localhost gamepad bridge.
  • The gamepad bridge listens only on 127.0.0.1 and requires an app/bridge token.
  • Network debugging itself exposes ADB on the local network on this SHIELD firmware. Use it only on a trusted network and understand the tradeoff.

Read Privacy and Security before enabling the app.

Build from source

Requirements:

  • JDK 17
  • Android SDK Platform 36 and Build Tools
  • Internet access for the first Gradle dependency download

The committed helper binaries are staged into the APK automatically:

.\gradlew.bat clean lintRelease assembleRelease

Output: app/build/outputs/apk/release/app-release.apk

The current release build type intentionally uses the Android debug signing configuration so contributors can reproduce this development release. Do not publish updates under your own key as if they were signed by this release. Production distribution needs a protected release key and a new trust chain.

See bridge/README.md to rebuild the native and Java helper artifacts. Third-party licensing is in THIRD_PARTY_NOTICES.txt.

Documentation

License status

No project license has been selected yet. The repository is source-available, but no permission to redistribute modified builds is granted unless a license is added. The bundled adblib dependency remains under its own BSD license.

About

Use the original 2015 NVIDIA SHIELD Controller touchpad as a system-wide mouse while preserving gamepad input.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages