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.
Installing node-gamecontroller is as easy as cloning this repo or use npmjs:
npm install gamecontroller
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);
});
data
- Get parsed data as it comes in
{type}:press
- Button with given type was pressed{type}:release
- Button with given type was released
{type}:move
- Joystick with given type was moved in either x or y direction. Object with positions gets passed
{type}:change
- The status of a measure like battery changed
error
- An error has occurredclose
- The connection was closed successfully
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);
If your controller isn't supported yet, add the 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 (c) 2017, Robert Eisele Dual licensed under the MIT or GPL Version 2 licenses.