From 4adc27aec5dc47fe6ee5321650513383deb18e4f Mon Sep 17 00:00:00 2001 From: Jan Lerking Date: Sun, 20 Apr 2025 22:30:36 +0200 Subject: [PATCH] Added rumble functionality to DualSense controllers. /JL --- pygameControls/controller.py | 2 +- pygameControls/dualsense_controller.py | 11 +++++++++-- pygameControls/dualsense_edge_controller.py | 11 +++++++++-- setup.py | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/pygameControls/controller.py b/pygameControls/controller.py index b3a051c..15385ec 100644 --- a/pygameControls/controller.py +++ b/pygameControls/controller.py @@ -9,7 +9,7 @@ from .xbox_series_x_controller import XboxSeriesXController from .generic_controller import GenericController from .logitech_dual_action_controller import LogitechDualActionController -__version__ = "0.1.1" +__version__ = "0.1.2" CONTROLLERS = { "DualSense Wireless Controller": DualSenseController, diff --git a/pygameControls/dualsense_controller.py b/pygameControls/dualsense_controller.py index 8e72b70..933228f 100644 --- a/pygameControls/dualsense_controller.py +++ b/pygameControls/dualsense_controller.py @@ -76,9 +76,16 @@ class DualSenseController(ControlsBase): def pause(self): pass - def rumble(self): - pass + def rumble(self, left, right): + if not left in range(255) or not right in range(255): + raise ValueError("left and right values must be in the range 0 - 255") + self.device.setLeftMotor(left) + self.device.setRightMotor(right) + def stop_rumble(self): + self.device.setLeftMotor(0) + self.device.setRightMotor(0) + @property def name(self) -> str: return self._name diff --git a/pygameControls/dualsense_edge_controller.py b/pygameControls/dualsense_edge_controller.py index d0e50e2..97aa831 100644 --- a/pygameControls/dualsense_edge_controller.py +++ b/pygameControls/dualsense_edge_controller.py @@ -68,9 +68,16 @@ class DualSenseEdgeController(ControlsBase): def pause(self): pass - def rumble(self): - pass + def rumble(self, left, right): + if not left in range(255) or not right in range(255): + raise ValueError("left and right values must be in the range 0 - 255") + self.device.setLeftMotor(left) + self.device.setRightMotor(right) + def stop_rumble(self): + self.device.setLeftMotor(0) + self.device.setRightMotor(0) + @property def name(self) -> str: return self._name diff --git a/setup.py b/setup.py index b470655..e4a2180 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ if __name__ == "__main__": setup( name='pygameControls', - version='0.1.1', + version='0.1.2', packages=find_packages(), install_requires=[], author='Jan Lerking',