No description
  • TypeScript 67.2%
  • Rust 17.5%
  • JavaScript 9.9%
  • CSS 2.9%
  • PowerShell 2%
  • Other 0.3%
Find a file
Checkpoint Zero d9e350a39e
Some checks are pending
Windows verification / verify (push) Waiting to run
Verify native updater and complete hosted release downloads
2026-10-12 12:24:29 +05:30
.cargo Initial commit 2026-10-12 10:59:27 +05:30
.forgejo/workflows Verify native updater and complete hosted release downloads 2026-10-12 12:24:29 +05:30
.github/workflows Initial commit 2026-10-12 10:59:27 +05:30
.vscode Initial commit 2026-10-12 10:59:27 +05:30
assets Initial commit 2026-10-12 10:59:27 +05:30
crates/zeropad-core Initial commit 2026-10-12 10:59:27 +05:30
docs Verify native updater and complete hosted release downloads 2026-10-12 12:24:29 +05:30
e2e Add signed Forgejo updates and draft release tooling 2026-10-12 11:43:51 +05:30
public Initial commit 2026-10-12 10:59:27 +05:30
scripts Verify native updater and complete hosted release downloads 2026-10-12 12:24:29 +05:30
src Add signed Forgejo updates and draft release tooling 2026-10-12 11:43:51 +05:30
src-tauri Initialize update TLS before release discovery and prepare 0.2.2 2026-10-12 11:54:27 +05:30
.gitattributes Initial commit 2026-10-12 10:59:27 +05:30
.gitignore Add signed Forgejo updates and draft release tooling 2026-10-12 11:43:51 +05:30
.prettierignore Add signed Forgejo updates and draft release tooling 2026-10-12 11:43:51 +05:30
AGENTS.md Initial commit 2026-10-12 10:59:27 +05:30
Cargo.lock Initialize update TLS before release discovery and prepare 0.2.2 2026-10-12 11:54:27 +05:30
Cargo.toml Initial commit 2026-10-12 10:59:27 +05:30
components.json Initial commit 2026-10-12 10:59:27 +05:30
CONTRIBUTING.md Initial commit 2026-10-12 10:59:27 +05:30
index.html Initial commit 2026-10-12 10:59:27 +05:30
LICENSE Initial commit 2026-10-12 10:59:27 +05:30
package-lock.json Initialize update TLS before release discovery and prepare 0.2.2 2026-10-12 11:54:27 +05:30
package.json Initialize update TLS before release discovery and prepare 0.2.2 2026-10-12 11:54:27 +05:30
playwright.config.ts Initial commit 2026-10-12 10:59:27 +05:30
README.md Initialize update TLS before release discovery and prepare 0.2.2 2026-10-12 11:54:27 +05:30
release.config.json Add signed Forgejo updates and draft release tooling 2026-10-12 11:43:51 +05:30
THIRD_PARTY.md Add signed Forgejo updates and draft release tooling 2026-10-12 11:43:51 +05:30
tsconfig.json Initial commit 2026-10-12 10:59:27 +05:30
tsconfig.node.json Initial commit 2026-10-12 10:59:27 +05:30
vite.config.ts Initial commit 2026-10-12 10:59:27 +05:30
vitest.config.ts Initial commit 2026-10-12 10:59:27 +05:30

ZeroPad logo

ZeroPad

Your controller. Your way.
Free, open-source controller tools for Windows, by Checkpoint Zero.

Source · Get started · Controller support · User guide · Contribute · Publish on Forgejo

ZeroPad controller workspace with split render and drawing views and the Xbox mode dock

Captured from the current interface on 2026-10-12 using labeled sample data. Browser previews cannot control hardware.

Dark appearance

ZeroPad controller workspace in dark appearance

The same sample workspace in dark appearance.

ZeroPad turns supported PlayStation controllers into a virtual Xbox 360 controller for Windows games that expect XInput. Monitor your inputs, tune your layout, adjust the lightbar, and control conventional vibration from one desktop workspace.

Current version: 0.2.2 alpha · Windows 10/11 x64 · MIT licensed. The app works on tested DualSense paths, but wider hardware coverage and fresh-PC installation still need validation. See the release assessment and verification record.

What you can do

  • Play with Xbox compatibility. Explicitly enable one virtual Xbox 360 controller for games that do not understand your physical controller.
  • See every input. Inspect sticks, triggers, buttons, battery estimates, charging status, and observed report rates. Compare physical and mapped input.
  • Make the layout yours. Save profiles with radial deadzones, axis inversion, stick swapping, and simultaneous button remapping.
  • Set your lightbar. Pick a preset or custom RGB color, adjust brightness, or turn the light off. Changes preview on the controller before you apply them.
  • Control vibration. Forward XInput game rumble, change strength, mute it, or run a bounded 600 ms motor test.
  • Explore the interface. Rotate the 3D controller and slide between its render and technical drawing. A flat drawing is available when WebGL is unavailable.
  • Choose your appearance. Switch between light, dark, and system themes. Theme selection and the interface sound mute setting are remembered.
  • Keep control of output. Xbox mode starts off and stops on input loss. Reconnecting never enables it automatically.

Controller support

“Implemented” describes the adapters in the source. It does not mean every model and connection has been physically tested.

Controller Input adapters Lights / conventional rumble Hardware evidence
DualSense USB and Bluetooth Implemented for both Live input and Xbox output smoke checks; feedback HID writes accepted on USB and Bluetooth
DualSense Edge Standard controls over USB and Bluetooth Implemented Dedicated Edge hardware testing pending; extra paddles / function controls not mapped
Official DualShock 4 v1 / v2 USB and Bluetooth Implemented for both Synthetic protocol tests; real DS4 testing pending
Xbox, Nintendo, generic and third-party controllers Not implemented Not implemented Some HID devices may appear as unsupported

Battery percentages are coarse estimates from controller reports, not precise charge measurements. Basic reports may lack battery or charging telemetry. XInput-only controllers may not appear in HID discovery. Unknown Sony models and third-party clones do not receive guessed protocol packets.

Adaptive triggers, advanced DualSense haptics, gyro aiming, touchpad coordinates / mouse mapping, multiple virtual controllers, and automatic per-game profiles are future work. See controller features and the roadmap.

Get started

Install the Windows alpha

Use an installer attached to a release by the project maintainer. A public download URL has not been established yet; do not treat an old local ZIP as the current release.

The full offline testing package includes the app, Microsoft WebView2 runtime installer, the official ViGEmBus 1.22.0 installer, dependency notices, and a testing guide. You do not need Node.js, Rust, or a DSX purchase to run it.

  1. Extract the release ZIP and verify its checksums.
  2. Run the ZeroPad setup executable. WebView2 is installed if missing.
  3. If Xbox output needs a driver, setup offers to launch the bundled ViGEmBus wizard. This requires your explicit choice and an administrator prompt.
  4. Restart Windows if the driver wizard requests it.

Alpha limitation: ZeroPad's executable and installer are currently unsigned. The bundled driver has its own publisher signature. ViGEmBus is retired and remains the current output dependency; evaluating a maintained replacement is a release priority. HidHide is optional and is configured separately.

Play your first game

  1. Close other controller emulators, including DSX / DualSenseX and DS4Windows.
  2. Connect a supported controller by USB or pair it through Windows Bluetooth.
  3. Open ZeroPad and confirm that the input monitor responds.
  4. Click Turn on Xbox controller mode.
  5. Launch the game and keep ZeroPad running while you play.

Seeing input in ZeroPad alone does not enable game compatibility. Xbox mode must be on. If a game was already running, restart it after enabling output.

For duplicate input, missing drivers, lighting, charging, and vibration help, read the user guide. The testing guide includes a checklist for reporting useful results.

Updates and releases

Open About ZeroPad → Updates to check for a published update, read its notes, download with progress, and verify its signature. Installing requires a separate confirmation and stops controller output before setup. Saved profiles are kept. The first updater-enabled installer must be installed manually.

ZeroPad About page with its update panel

The browser preview disables native update actions.

See Releasing ZeroPad for signed builds, draft testing, and explicit release publication through Forgejo.

A closer look

ZeroPad lightbar presets, brightness, and rumble controls

Lighting and vibration controls. Applying settings and testing motors require the desktop app; this capture uses sample data.

ZeroPad profile editor showing controller button mappings and stick settings

Profiles combine button mappings and stick tuning. This screenshot uses sample input.

ZeroPad diagnostics showing engine, controller, and output readiness information

Diagnostics make the current engine and output state visible. This is a browser sample, not a hardware test.

Built to grow

Physical controller protocols, profile transformations, and virtual output are separate Rust components. Adding a controller adapter does not require rewriting the UI or Xbox output backend.

Physical controller → HID input adapter → Normalized input → Profile → Virtual Xbox → Game
                                                                         ↓
Physical controller ← Feedback encoder ← Rumble / light settings ← Game vibration

The native worker processes controller input and output directly. React reads snapshots for the interface; UI rendering is outside the controller-to-game path.

Layer Technology
Desktop shell and native engine Tauri 2, Rust, HIDAPI
Interface React, TypeScript, Tailwind CSS 4
Controls shadcn/ui with Base UI
Controller visualization Three.js, original SVG / procedural geometry
Current virtual output ViGEmBus via vigem-client
Contracts and testing ts-rs, Vitest, Playwright, Rust tests

See architecture for boundaries, storage, feedback, and the output lifecycle.

Build from source

On Windows, install Node.js 24, Rust with the MSVC toolchain, Microsoft C++ Build Tools with Desktop development with C++, and WebView2. Follow the official Tauri prerequisites.

npm ci
npm run tauri dev

Run npm run dev for the interface in a browser. Sample input is opt-in, hardware commands are disabled, and preview profiles are isolated from desktop data.

Verify

npm run format:check
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
git diff --exit-code -- src/lib/generated
npm run build
npm test
npm run test:e2e
npm run test:release
npm audit --omit=dev

Browser workflows require Microsoft Edge. Rust tests regenerate committed TypeScript contracts. Hardware tests are separate; see verification.

Package

npm run package:windows

This downloads and verifies pinned driver payloads, collects dependency licenses, and builds the full offline Windows x64 NSIS installer. The shareable ZIP, installer, testing guide, build metadata, and SHA-256 checksums appear in releases/. Build from a reviewed, clean commit before tagging a release.

The smaller npm run tauri build uses the default runtime setup and is intended for local builds. Use package:windows for the self-contained testing package. Downloaded payloads, build outputs, and release archives are ignored by Git.

To refresh the README images after a frontend build:

npm run docs:screenshots

See Forgejo publishing for repository setup, Windows CI and the completed hostname migration.

Contribute and report issues

Protocol implementations, hardware reports, accessibility improvements, and documentation are welcome. Read CONTRIBUTING.md before changing controller or output behavior.

Report the app version, Windows version, controller model, connection type, game / launcher, reproduction steps, and expected versus actual behavior. Review diagnostics before sharing: upstream errors can contain device paths. Do not post controller serial numbers or access tokens.

License and acknowledgements

ZeroPad's original code and artwork are MIT licensed. Dependencies and bundled components retain their own licenses; see THIRD_PARTY.md. PlayStation, DualSense, DualShock, Xbox, and related names belong to their respective owners. ZeroPad is an independent project.