dualsense_api 1.0.0
dualsense_api: ^1.0.0 copied to clipboard
Control a Sony DualSense (PS5) controller over USB on macOS via HIDAPI + Dart FFI: read sticks, triggers, buttons, battery and audio jack in real time, and command the lightbar color.
// Minimal usage example for `dualsense_api`.
//
// Requires HIDAPI installed (`brew install hidapi`, see README) and a
// Sony DualSense (PS5) controller connected over USB.
//
// Run with:
// dart run example/example.dart
import 'dart:io';
import 'package:dualsense_api/controllers/dualsense_controller.dart';
import 'package:dualsense_api/dualsense_bindings.dart';
Future<void> main() async {
final bindings = switch (Platform.operatingSystem) {
'macos' => DualSenseBindings.macOS(),
_ => throw UnsupportedError('Platform not supported yet'),
};
final controller = DualSenseController(bindings);
final connected = await controller.connect();
if (!connected) {
print('No DualSense found. Is it connected via USB?');
return;
}
print('DualSense connected, listening for events (Ctrl+C to exit)...');
// Bright cyan on connect.
controller.setLedColor(0, 200, 255);
controller.onInputChanged.listen((state) {
print(state);
if (state.isPsPressed) {
print('PS button pressed — switching lights to red.');
controller.setLedColor(255, 0, 0);
}
});
ProcessSignal.sigint.watch().listen((signal) {
print('\nReleasing native resources...');
controller.dispose();
exit(0);
});
}