UNPKG

vigemclient

Version:

Native bindings to the ViGem virtual gamepad driver

55 lines (39 loc) 1.57 kB
const ViGEmClient = require('..'); let client = new ViGEmClient(); const connErr = client.connect() if (connErr == null) { let controller = client.createX360Controller(); let err = controller.connect(); if (err) { console.log("Error while connecting to the virtual controller:", err.message); process.exit(1); } console.log("Vendor ID:", controller.vendorID); console.log("Product ID:", controller.productID); console.log("Index:", controller.index); console.log("Type:", controller.type); console.log("User index:", controller.userIndex); controller.on("notification", data => { console.log("notification", data); }); controller.updateMode = "manual"; // requires manual calls to controller.update() let t = 0; let buttons = Object.keys(controller.button); let btn = 0; setInterval(() => { controller.axis.leftX.setValue(Math.sin(t)); controller.axis.leftY.setValue(Math.cos(t)); controller.axis.rightX.setValue(-Math.sin(t)); controller.axis.rightY.setValue(Math.cos(t)); controller.axis.dpadHorz.setValue(Math.sin(t)); controller.axis.dpadVert.setValue(Math.cos(t)); if (buttons[btn] != "GUIDE") { // otherwise Win 10 spams the GameBar controller.button[buttons[btn]].setValue(!controller.button[buttons[btn]].value); // invert button value } controller.update(); // update manually for better performance t += 0.1; btn = (btn + 1) % buttons.length; }, 100); } else { console.log("Error while connecting to the ViGEmBus driver:", connErr.message); }