dualsense-ts
Version:
A natural interface for your DualSense controller, with Typescript
74 lines (64 loc) • 1.84 kB
text/typescript
import { Dualsense } from "../src/dualsense";
import { TriggerMode } from "../src/hid";
function main() {
try {
const controller = new Dualsense();
controller.connection.on("change", ({ state }) => {
console.log(
`Connected: ${state} ${
state ? (controller.hid.provider.wireless ? "bluetooth" : "usb") : ""
}`
);
});
controller.left.trigger.on("change", (trigger) => {
controller.left.rumble(trigger.magnitude);
});
controller.right.trigger.on("change", (trigger) => {
controller.right.rumble(trigger.magnitude);
});
controller.triangle.on("press", () => {
controller.rumble(0.5);
});
controller.triangle.on("release", () => {
controller.rumble(0);
});
controller.left.analog.on("change", (analog) => {
const { x, y } = analog;
const state = {
Analog: {
Magnitude: analog.magnitude,
Direction: analog.direction,
Force: analog.force,
Threshold: analog.threshold,
Deadzone: analog.deadzone,
X: {
State: x.state,
Magnitude: x.magnitude,
Force: x.force,
Threshold: x.threshold,
Deadzone: x.deadzone,
},
Y: {
State: y.state,
Magnitude: y.magnitude,
Force: y.force,
Threshold: y.threshold,
Deadzone: y.deadzone,
},
},
};
console.log(state);
});
controller.cross.on("change", (input) => {
controller.hid.setRightTriggerFeedback(TriggerMode.Pulse, [
controller.left.analog.direction * 40.5,
128,
controller.right.analog.direction * 40.5,
]);
});
} catch (err) {
console.log(err);
setTimeout(main, 100);
}
}
main();