UNPKG

vigemclient

Version:

Native bindings to the ViGem virtual gamepad driver

103 lines (91 loc) 2.47 kB
const XUSB_BUTTON = Object.freeze({ DPAD_UP: 0x0001, DPAD_DOWN: 0x0002, DPAD_LEFT: 0x0004, DPAD_RIGHT: 0x0008, START: 0x0010, BACK: 0x0020, LEFT_THUMB: 0x0040, RIGHT_THUMB: 0x0080, LEFT_SHOULDER: 0x0100, RIGHT_SHOULDER: 0x0200, GUIDE: 0x0400, A: 0x1000, B: 0x2000, X: 0x4000, Y: 0x8000 }); const DS4_BUTTONS = Object.freeze({ THUMB_RIGHT: 1 << 15, THUMB_LEFT: 1 << 14, OPTIONS: 1 << 13, SHARE: 1 << 12, TRIGGER_RIGHT: 1 << 11, TRIGGER_LEFT: 1 << 10, SHOULDER_RIGHT: 1 << 9, SHOULDER_LEFT: 1 << 8, TRIANGLE: 1 << 7, CIRCLE: 1 << 6, CROSS: 1 << 5, SQUARE: 1 << 4 }); const DS4_SPECIAL_BUTTONS = Object.freeze({ SPECIAL_PS: 1 << 0, SPECIAL_TOUCHPAD: 1 << 1 }); const DS4_DPAD_DIRECTIONS = Object.freeze({ DPAD_NONE: 0x8, DPAD_NORTHWEST: 0x7, DPAD_WEST: 0x6, DPAD_SOUTHWEST: 0x5, DPAD_SOUTH: 0x4, DPAD_SOUTHEAST: 0x3, DPAD_EAST: 0x2, DPAD_NORTHEAST: 0x1, DPAD_NORTH: 0x0 }); const VIGEM_ERRORS = Object.freeze({ 0x20000000: "VIGEM_ERROR_NONE", 0xE0000001: "VIGEM_ERROR_BUS_NOT_FOUND", 0xE0000002: "VIGEM_ERROR_NO_FREE_SLOT", 0xE0000003: "VIGEM_ERROR_INVALID_TARGET", 0xE0000004: "VIGEM_ERROR_REMOVAL_FAILED", 0xE0000005: "VIGEM_ERROR_ALREADY_CONNECTED", 0xE0000006: "VIGEM_ERROR_TARGET_UNINITIALIZED", 0xE0000007: "VIGEM_ERROR_TARGET_NOT_PLUGGED_IN", 0xE0000008: "VIGEM_ERROR_BUS_VERSION_MISMATCH", 0xE0000009: "VIGEM_ERROR_BUS_ACCESS_FAILED", 0xE0000010: "VIGEM_ERROR_CALLBACK_ALREADY_REGISTERED", 0xE0000011: "VIGEM_ERROR_CALLBACK_NOT_FOUND", 0xE0000012: "VIGEM_ERROR_BUS_ALREADY_CONNECTED", 0xE0000013: "VIGEM_ERROR_BUS_INVALID_HANDLE", 0xE0000014: "VIGEM_ERROR_XUSB_USERINDEX_OUT_OF_RANGE" }); class InputReport { constructor() { this.reportObj = {}; } updateButton(name, value) {} updateAxis(name, value) {} getButtonValue(name) {} getAxisValue(name) {} reset() {} } function clamp(value, min, max) { return Math.min(max, Math.max(min, value)); } function rangeMap(value, spec) { let inRange = spec.maxIn - spec.minIn; let outRange = spec.maxOut - spec.minOut; return spec.minOut + outRange * ((value - spec.minIn) / inRange); } module.exports = { XUSB_BUTTON, VIGEM_ERRORS, InputReport, DS4_BUTTONS, DS4_SPECIAL_BUTTONS, DS4_DPAD_DIRECTIONS, clamp, rangeMap, };