Skip to content
takasurazeemPublic

About

Identify any game controller, detect GameSir modes, and test every button — macOS app + CLI

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PadCheck

A macOS app and command-line tool that tells you what game controller is plugged in (whoever made it), whether it's a GameSir and which mode it's in, and lets you verify every button, trigger, stick and d-pad direction.

What it identifies

  • What the controller claims to be: USB vendor/product ID matched against known pads (Switch Pro, Joy-Con, Xbox 360/One/Series, DualShock 3/4, DualSense).
  • Genuine or emulated: third-party controllers that pretend to be a first-party pad report their own manufacturer string; PadCheck compares it with the real one.
  • GameSir detection: GameSir's USB vendor ID (0x3537), "GameSir" in the device names, or Zikway firmware (which GameSir uses).
  • Mode: Switch, XInput (PC), Xbox, PS3/PS4/PS5, or DInput/Android/generic HID, worked out from the emulated IDs and the USB interface classes.
  • Manufacturer and product strings, serial, firmware revision, connection, battery.

With several controllers connected, pick one from the Controller dropdown; Refresh (⌘R) scans again. The app also rescans on its own every couple of seconds.

Testing inputs

Each input turns green once it has registered, and the checklist shows what's left.

  • Switch-mode controllers are read straight from their own 0x30 input reports. macOS's GameController framework drops face buttons and Capture from some third-party Switch-mode pads, so PadCheck doesn't rely on it for these.
  • Other controllers are read through the GameController framework. While PadCheck is in front it turns off macOS's controller shortcuts (HOME/PS opening the Games app, Share taking a screenshot) so those buttons can be tested too.
  • Raw HID view shows every HID button and axis plus a live hex dump of the input reports, with changing bytes highlighted. This works for any HID controller, even ones macOS doesn't present to games.

If a controller reports inputs it doesn't physically have (a GameSir posing as a DualShock 4 reports a touchpad, for example), click No touchpad or right-click any input or section and mark it as missing. Skipped inputs are left out of the count and remembered per controller.

Controllers in XInput mode over USB can be identified, but macOS has no driver for them, so their buttons can't be read. Switch the controller to Switch or DInput/Android mode to test them.

The exception is the GameSir Nova 2 Lite in PC mode (3537:100F). PadCheck talks to its configuration interface (vendor HID page FF7A), the same channel GameSir's own software uses, to:

  • show it as a Nova 2 Lite and read its firmware version (e.g. V61 international);
  • run a Test Vibration;
  • test every button, trigger, stick and D-pad direction from the controller's own state reports.

PadCheck only sends packets GameSir's software sends, and turns the state reports off again when it lets go of the controller.

Build

Requires macOS 14+ and the Xcode command-line tools.

./build.sh

This produces build/PadCheck.app and the build/padcheck CLI.

CLI usage

build/padcheck            # identify, then open the live input tester
build/padcheck --info     # identify only
build/padcheck --raw      # start in the raw HID view
build/padcheck --log      # print one line per input event

In the live tester: r resets the checklist, h toggles the raw HID view, q quits and prints any inputs that never registered.

Layout

Path Contents
Core/Controllers.swift Identification, GameSir mode detection, input tracking, Switch report decoder, Nova 2 Lite support
App/ SwiftUI app
CLI/main.swift Terminal tool
build.sh Builds both

About

Identify any game controller, detect GameSir modes, and test every button — macOS app + CLI

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages