UNPKG

vigemclient

Version:

Native bindings to the ViGem virtual gamepad driver

50 lines (38 loc) 1.14 kB
const vigemclient = require('../build/Release/vigemclient'); const { VIGEM_ERRORS } = require('./common'); const { X360Controller } = require('./X360Controller'); const { DS4Controller, DS4ControllerExtended } = require('./DS4Controller'); class ViGEmClient { constructor() { this._clientHandle = null; this._connected = false; } get _handle() { return this._clientHandle; } connect() { this._clientHandle = vigemclient.vigem_alloc(); let errCode = vigemclient.vigem_connect(this._clientHandle); let errMsg = VIGEM_ERRORS[errCode]; if (errMsg == "VIGEM_ERROR_NONE") { this._connected = true; return null; } else { this._connected = false; return new Error(errMsg); } } createX360Controller() { if (!this._connected) throw new Error("Not connected"); return new X360Controller(this); } createDS4Controller(extended = false) { if (!this._connected) throw new Error("Not connected"); if (extended) { return new DS4ControllerExtended(this); } else { return new DS4Controller(this); } } } module.exports = { ViGEmClient };