jsdualsense
v1.5.3
Published
Control your PS5 (or EDGE) controller with JavaScript using WebHID.
Maintainers
Readme
README Español
jsDualsense
jsDualsense is a JavaScript library for interacting with the PlayStation 5 DualSense (and Edge) controller using WebHID. It allows you to read inputs, control LED lights, vibration, adaptive triggers, and audio from the controller directly in the browser.
Features
- Easy connection to the DualSense controller via WebHID.
- Input reading (sticks, buttons, triggers, sensors).
- RGB LED control.
- Vibration control (left and right motors).
- Adaptive trigger control (L2/R2).
- Audio effect control from the controller.
Requirements
- A browser that supports the WebHID API (Chrome, Edge).
- A DualSense (PS5) or DualSense Edge controller.
Installation
npm install jsdualsenseOr download the files from this repository.
Basic Usage
HTML code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Light features example</title>
</head>
<body>
<input type="button" value="Conect" id="connectButton" />
<input type="button" value="Close" id="closeButton" />
<script type="module" src="index.js"></script>
</body>
</html>Javascript code
//index.js
// Local import for development or internal use
import { jsDualsense, TrigerEffects } from "jsdualsense";
// Import from CDN for environments where packages can't be installed (e.g., directly in browsers)
//import {jsDualsense, TrigerEffects} from 'https://cdn.skypack.dev/jsdualsense';
const startElement = document.getElementById("connectButton");
const closeElement = document.getElementById("closeButton");
const ds = new jsDualsense();
startElement.addEventListener("click", async () => {
await ds.start(); // Connect
const data = await ds.readData(); // Read input data
console.log("Input:", data);
// Change LED color to blue
await ds.setLight.setColorI([0, 0, 255]);
// Vibrate the left motor at 50%
await ds.setVibrationL.setVibration(128);
// Set left trigger to max force
await ds.setTriggerL.setEffect(TrigerEffects.Weapon);
});
closeElement.addEventListener("click", async () => {
await ds.finish(); // Disconnect
});Main API
- start(): Initiates the connection with the controller.
- readData(): Reads and decodes input data.
- finish(): Turns off effects and closes the connection.
Documentation
Check out the folder en_documentation for more information about the function of this library.
Notes
- This code must run in a secure context (https or localhost).
- The user must grant permission to access the HID device.
Credits
- flok, this proyect it is almost a traslate of his proyect pydualsense.
- dualshock-tools, all the information about software and hardware comes from his proyect dualshock-tools.github.io. Also you can calibrate your controller in his page DualShock Calibration GUI
License
MIT
Developed by amerca9664, email: [email protected]
