MoveStick turns any movement into game controls.
Attach it to anything — your hand, a cap, a balance board, a wheelchair joystick — and tilt to control a virtual joystick, mouse, or keyboard/gamepad buttons. No drivers, no proprietary hardware.
Built on the excellent HID Remapper by jfedor, with custom gyroscope support for the Seeed XIAO BLE Sense.
A collaboration between PlayAbility Adaptive Software and HitClic.
💡 Don't want to build it yourself? Buy a ready-made MoveStick from HitClic
| Attach to... | Control with... | Use case |
|---|---|---|
| Hand (velcro strap) | Hand tilt | Joystick replacement |
| Cap / Headband | Head movement | Hands-free aiming/steering |
| Balance board | Feet tilt | Racing games, fitness |
| Wheelchair joystick | Existing movements | Smartphone/PC control |
| Any surface | Your imagination | Adaptive gaming setups |
- 🎮 Virtual joystick — map Roll/Pitch to any gamepad stick
- 🖱️ Motion mouse — tilt to move cursor, tap/shake to click
- ⌨️ Keyboard/buttons — trigger A/B/X/Y, space, WASD from tilt angles
- 🔗 Bluetooth hub — connect multiple BT devices and merge into one controller
- ♿ Adaptive ready — works with Xbox Adaptive Controller, Hori Flex, PS Access
| Resource | Link |
|---|---|
| Firmware (.uf2) | Download latest release |
| Web Configuration | playabilitytech.github.io/MoveStick |
| Buy ready-made | HitClic Shop |
Works on Windows, macOS, and Linux — enumerates as standard USB HID.
Build your own MoveStick for under $25:
| Part | Price | Link |
|---|---|---|
| Seeed XIAO BLE Sense (nRF52840 + IMU) | ~$15-20 | Seeed Studio / Gotronic |
| USB-C cable | ~$5 | Any USB-C data cable |
Optional accessories:
- Balance board → Amazon
- Velcro strap (for hand/cap mounting)
- 3D printed case → see
/enclosurefolder
-
Enter bootloader mode
- Hold BOOT + tap RESET (or double-tap RESET quickly)
- A USB drive named
XIAO-SENSEappears
-
Drag & drop the
.uf2file onto the drive -
Done! The board reboots as a USB HID device
💡 If the drive doesn't appear, try a different USB cable (must support data, not charge-only)
Open the Web Config Tool: playabilitytech.github.io/MoveStick
- Connect your MoveStick via USB
- Click "Open Device" in the web tool
- Go to Settings → IMU support → ON
- Load an example profile or create your own mapping
| Setting | What it does |
|---|---|
| Angle limit | Max tilt angle before output saturates |
| Buffer size | Smoothing (higher = smoother but more latency) |
| Axis inversion | Flip X/Y directions |
| Shake threshold | Sensitivity for tap/shake detection |
Map motion axes to any output:
- Roll (X) → mouse X, left stick X, arrow keys...
- Pitch (Y) → mouse Y, left stick Y, WASD...
- Shake → click, button A, space, etc.
Roll → Cursor X
Pitch → Cursor Y
Shake → Left click
Roll → Left stick X
Pitch → Left stick Y
Shake → Button A
Roll → Left stick X (steering)
Load these from Examples in the web config tool.
MoveStick can also act as a Bluetooth hub, connecting multiple devices wirelessly and merging all inputs into one controller.
Supported devices:
- DualSense / Xbox controllers
- Xbox Adaptive Controller
- PS Access controller
- Bluetooth keyboards/mice
- BLE wheelchair joysticks
See BLUETOOTH.md for setup instructions.
- HID Remapper by jfedor — the foundation this project builds on
- PlayAbility — gyroscope/IMU features and integration
- HitClic — hardware design and distribution
MIT License — see LICENSE
- PlayAbility Adaptive Software — Face/voice/head control for gaming
- HitClic Handigamer — Adaptive gaming hardware
- Xbox Adaptive Controller — Microsoft's adaptive gaming platform
Questions? Open an issue or reach out on Discord