UNPKG

dualsense-ts

Version:

A natural interface for your DualSense controller, with Typescript

86 lines 3.4 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeHIDProvider = void 0; const hid_provider_1 = require("./hid_provider"); class NodeHIDProvider extends hid_provider_1.HIDProvider { async connect() { if (typeof window !== "undefined") return this.onError(new Error("Attempted to use node-hid in browser environment")); return Promise.resolve().then(() => __importStar(require("node-hid"))).then(({ HID, devices }) => { this.disconnect(); const controllers = devices(hid_provider_1.HIDProvider.vendorId, hid_provider_1.HIDProvider.productId); if (controllers.length === 0 || !controllers[0].path) { return this.onError(new Error(`No controllers (${devices().length} other devices)`)); } // Detect connection type this.wireless = controllers[0].interface === -1; const device = new HID(controllers[0].path); // Enable accelerometer, gyro, touchpad device.getFeatureReport(0x05, 41); device.on("data", (arg) => { this.buffer = arg; this.onData(this.process(arg)); }); device.on("error", (err) => { this.onError(err); }); this.device = device; }) .catch((err) => { this.onError(new Error(`Could not import 'node-hid'. Did you add it?\nError: ${err instanceof Error ? err.message : "???"}`)); }); } write(data) { if (!this.device) return Promise.resolve(); this.device.write(Array.from(data)); return Promise.resolve(); } get connected() { return this.device !== undefined; } disconnect() { if (this.device) { this.device.removeAllListeners(); this.device.close(); } this.reset(); } process(buffer) { const report = { length: buffer.length, readUint8(offset) { return buffer.readUint8(offset); }, readUint16LE(offset) { return buffer.readUint16LE(offset); }, }; return this.processReport(report); } } exports.NodeHIDProvider = NodeHIDProvider; //# sourceMappingURL=node_hid_provider.js.map