skate-kbm
v0.1.9
Published
Plain Node CLI keyboard and mouse to virtual Xbox 360 controller mapper for Windows games.
Maintainers
Readme
This is a plain terminal CLI. It does not use a full-screen TUI or any non-Node JavaScript runtime.
Install
Install globally with npm:
npm install -g skate-kbm
skate-kbmInstall adds the skate-kbm command and the native mapper binary.
Requirements:
Windows needs a signed virtual controller driver before games can see a fake Xbox controller. If the app says it cannot connect, install the driver from the source repo with npm run driver, or install ViGEmBus manually from its release page.
Use
skate-kbmKeep the terminal open, then launch your game. Press Ctrl+Alt+M to toggle cursor lock if the game needs it. Press Ctrl+C in the terminal or Ctrl+Alt+Backspace anywhere to stop the mapper.
The command prints normal terminal output only. It should not switch screens, clear your terminal, or close the terminal window.
To change mouse sensitivity:
skate-kbm --mouse-sensitivity 300By default, the mapper uses Windows Raw Input for mouse movement and leaves the visible cursor alone. Cursor lock is an explicit toggle, not tied to mouse buttons.
Cursor lock modes:
skate-kbm --cursor-lock toggle
skate-kbm --cursor-lock always
skate-kbm --cursor-lock offIf raw input is unavailable, it falls back to cursor capture. To test without hiding or recentering the cursor:
skate-kbm --no-mouse-captureTo print live input diagnostics:
skate-kbm --debugBuild from source
Developers also need Rust to rebuild the native Windows mapper.
npm install
npm run build
npm run driver
npm startnpm run build compiles the Rust mapper and copies it to dist/app/mapper/skate-kbm-mapper.exe, which is the binary shipped in the npm package.
Controls
| Input | Controller output |
| --- | --- |
| WASD | Left stick |
| Mouse | Right stick |
| Shift or Space | A |
| Esc | B |
| E | X |
| R | Y |
| Q | Left bumper |
| F | Right bumper |
| Left click | Right trigger |
| Right click | Left trigger |
| Arrow keys | D-pad |
| Tab | Back |
| Enter | Start |
- The npm package has no JavaScript runtime dependencies.
- The app uses a plain Node.js CLI wrapper and a Rust Windows mapper process for keyboard, mouse, and virtual controller output.
- The game still sees a controller, not native keyboard and mouse.
- ViGEmBus is required because Windows needs a driver to expose the virtual Xbox controller.
- ViGEmBus is archived, so it is treated as the current compatibility backend rather than a forever dependency.
License
MIT
