node-gamecontroller
node-gamecontroller copied to clipboard
A node.js driver for several gamecontrollers
Gamecontroller.js is a small layer on top of HID to interact with any USB game controller, like Sony PlayStation, XBOX, SNES, ... with node.js, depending on a small config for each controller only.
Installation
Installing node-gamecontroller is as easy as cloning this repo or use npmjs:
npm install gamecontroller
Usage
Plug in your game controller and run the following code:
const Gamecontroller = require('gamecontroller');
const ctrl = new Gamecontroller('ps2');
ctrl.connect(function() {
console.log('Game On!');
});
ctrl.on('X:press', function() {
console.log('X was pressed');
});
ctrl.on('X:release', function() {
console.log('X was released');
});
To get the full parsed HID data stream, you can run
ctrl.on('data', function(data) {
console.log(data);
});
Supported Events
Data
-
data
- Get parsed data as it comes in
Buttons
-
{type}:press
- Button with given type was pressed -
{type}:release
- Button with given type was released
Joysticks
-
{type}:move
- Joystick with given type was moved in either x or y direction. Object with positions gets passed
Status
-
{type}:change
- The status of a measure like battery changed
Misc
-
error
- An error has occurred -
close
- The connection was closed successfully
Supported Controllers
At the moment, the following controllers are supported:
- Playstation 2 Ripoff ("ps2")
- XBOX 360 ("xbox360")
- Tomee SNES Controller ("snes-tomee")
- Retrolink SNES Controller ("snes-retrolink")
If you've connected a supported controller, you can run the following to find the name of it:
var Gamecontroller = require('gamecontroller');
var dev = Gamecontroller.getDevices();
console.log(dev);
Adding new controllers
If your controller isn't supported yet, add the config to the lib/vendor.js
file and send a pull request or file a bug ticket. To get all the information follow the following simple steps. Run the following snippet, locate your controller and note the vendorId and productId:
var HID = require('node-hid');
console.log(HID.devices());
Using the vendorId and productId you can run the following snippet, press all the keys on your controller and get the array position of what key changes what array index:
var hid = new HID.HID(vendorId, productId);
hid.on("data", function(data) {
console.log(data);
});
Copyright and licensing
Copyright (c) 2017, Robert Eisele Dual licensed under the MIT or GPL Version 2 licenses.