vigemclient
Version:
Native bindings to the ViGem virtual gamepad driver
50 lines (38 loc) • 1.14 kB
JavaScript
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 };