21 Commits

Author SHA1 Message Date
1ccceeeb06 Merge pull request 'Updated Xbox controller selection. /JL' (#17) from 0.1.8 into main
Reviewed-on: #17
2025-04-20 23:25:30 +02:00
ff3bfc66d2 Updated Xbox controller selection. /JL 2025-04-20 23:25:09 +02:00
5be0dace93 Merge pull request 'Added close() method to all controller classes. /JL' (#16) from 0.1.7 into main
Reviewed-on: #16
2025-04-20 23:21:01 +02:00
d6f72a8e74 Added close() method to all controller classes. /JL 2025-04-20 23:20:37 +02:00
5a5acdf583 Merge pull request 'Added stop_rumble() to all controller classes. /JL' (#15) from 0.1.6 into main
Reviewed-on: #15
2025-04-20 23:15:59 +02:00
9c66fe8930 Added stop_rumble() to all controller classes. /JL 2025-04-20 23:15:35 +02:00
3980bd92ca Merge pull request 'Update Xbox controller. /JL' (#14) from 0.1.5 into main
Reviewed-on: #14
2025-04-20 23:09:50 +02:00
75fb3f577b Update Xbox controller. /JL 2025-04-20 23:09:25 +02:00
b9a9d60e52 Merge pull request 'Added rumble functionality to Xbox controller. /JL' (#13) from 0.1.4 into main
Reviewed-on: #13
2025-04-20 23:05:17 +02:00
e0609fd526 Added rumble functionality to Xbox controller. /JL 2025-04-20 23:04:52 +02:00
e9a7764459 Merge pull request 'Fixed a bug to allow rumble values 255. /JL' (#12) from 0.1.3 into main
Reviewed-on: #12
2025-04-20 22:47:57 +02:00
8cba42f903 Fixed a bug to allow rumble values 255. /JL 2025-04-20 22:47:18 +02:00
58320211cd Merge pull request 'Added rumble functionality to DualSense controllers. /JL' (#11) from 0.1.2 into main
Reviewed-on: #11
2025-04-20 22:31:15 +02:00
4adc27aec5 Added rumble functionality to DualSense controllers. /JL 2025-04-20 22:30:36 +02:00
758f5b7b3d Merge pull request 'Added close() method to dualsense controller class #8. /JL' (#10) from 0.1.1 into main
Reviewed-on: #10
2025-04-20 12:55:09 +02:00
cccaf0c8cb Added close() method to dualsense controller class #8. /JL 2025-04-20 12:54:08 +02:00
19fee503fa Merge pull request '#8 Added close() to class. /JL' (#9) from 0.1.0 into main
Reviewed-on: #9
2025-04-20 12:48:41 +02:00
fd7a3ea0b5 #8 Added close() to class. /JL 2025-04-20 12:47:14 +02:00
6248124a20 Merge pull request '0.0.7' (#7) from 0.0.7 into main
Reviewed-on: #7
2025-04-20 12:09:11 +02:00
ce694b3625 Update DualSense controllers. /JL 2025-04-20 12:08:16 +02:00
1d65c88a7b Updated dualsense. /JL 2025-04-20 09:19:45 +02:00
11 changed files with 90 additions and 13 deletions

View File

@@ -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.0.4"
__version__ = "0.1.8"
CONTROLLERS = {
"DualSense Wireless Controller": DualSenseController,
@@ -18,7 +18,7 @@ CONTROLLERS = {
"Logitech Gamepad F510": LogitechF510Controller,
"Logitech Gamepad F710": LogitechF710Controller,
"Logitech Dual Action": LogitechDualActionController,
"X box Series X Controller": XboxSeriesXController
"Xbox Series X Controller": XboxSeriesXController
}
class Controllers:

View File

@@ -30,4 +30,12 @@ class ControlsBase(ABC):
@abstractmethod
def rumble(self):
pass
@abstractmethod
def stop_rumble(self):
pass
@abstractmethod
def close(self):
pass

View File

@@ -18,6 +18,12 @@ class DualSenseController(ControlsBase):
self.powerlevel = self.device.battery.Level
self.batterystate = BATTERY_STATE[str(self.device.battery.State)]
self.set_player_id(PlayerID.PLAYER_1)
self.numaxis: int = joy.get_numaxes()
self.axis: list = [joy.get_axis(a) for a in range(self.numaxis)]
self.numhats: int = joy.get_numhats()
self.hats: list = [joy.get_hat(h) for h in range(self.numhats)]
self.numbuttons: int = joy.get_numbuttons()
self.buttons: list = [joy.get_button(b) for b in range(self.numbuttons)]
self.mapping = {
"left stick x": self.axis[0],
"left stick y": self.axis[1],
@@ -43,6 +49,9 @@ class DualSenseController(ControlsBase):
print(f"Power level: {self.powerlevel}")
print(f"Battery state: {self.batterystate}")
def close(self):
self.device.close()
def handle_input(self, event):
pass
@@ -67,9 +76,16 @@ class DualSenseController(ControlsBase):
def pause(self):
pass
def rumble(self):
pass
def rumble(self, left, right):
if not left in range(256) or not right in range(256):
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

View File

@@ -10,6 +10,12 @@ class DualSenseEdgeController(ControlsBase):
self.powerlevel = self.device.battery.Level
self.batterystate = BATTERY_STATE[str(self.device.battery.State)]
self.set_player_id(PlayerID.PLAYER_1)
self.numaxis: int = joy.get_numaxes()
self.axis: list = [joy.get_axis(a) for a in range(self.numaxis)]
self.numhats: int = joy.get_numhats()
self.hats: list = [joy.get_hat(h) for h in range(self.numhats)]
self.numbuttons: int = joy.get_numbuttons()
self.buttons: list = [joy.get_button(b) for b in range(self.numbuttons)]
self.mapping = {
"left stick x": self.axis[0],
"left stick y": self.axis[1],
@@ -35,6 +41,9 @@ class DualSenseEdgeController(ControlsBase):
print(f"Power level: {self.powerlevel}")
print(f"Battery state: {self.batterystate}")
def close(self):
self.device.close()
def handle_input(self, event):
pass
@@ -59,9 +68,16 @@ class DualSenseEdgeController(ControlsBase):
def pause(self):
pass
def rumble(self):
pass
def rumble(self, left, right):
if not left in range(256) or not right in range(256):
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

View File

@@ -36,6 +36,9 @@ class GenericController(ControlsBase):
}
print(f"{self.name} connected.")
def close(self):
pass
def handle_input(self, event):
pass
@@ -57,6 +60,9 @@ class GenericController(ControlsBase):
def rumble(self):
pass
def stop_rumble(self):
pass
@property
def name(self) -> str:
return self._name

View File

@@ -56,7 +56,10 @@ class LogitechDualActionController(ControlsBase):
"logo button": None
}
print(f"{self.name} connected.")
def close(self):
pass
def handle_input(self, event):
pass
@@ -78,6 +81,9 @@ class LogitechDualActionController(ControlsBase):
def rumble(self):
pass
def stop_rumble(self):
pass
@property
def name(self) -> str:
return self._name

View File

@@ -57,6 +57,9 @@ class LogitechF310Controller(ControlsBase):
}
print(f"{self.name} connected.")
def close(self):
pass
def handle_input(self, event):
pass
@@ -78,6 +81,9 @@ class LogitechF310Controller(ControlsBase):
def rumble(self):
pass
def stop_rumble(self):
pass
@property
def name(self) -> str:
return self._name

View File

@@ -59,6 +59,9 @@ class LogitechF510Controller(ControlsBase):
}
print(f"{self.name} connected.")
def close(self):
pass
def handle_input(self, event):
pass
@@ -80,6 +83,9 @@ class LogitechF510Controller(ControlsBase):
def rumble(self):
pass
def stop_rumble(self):
pass
@property
def name(self) -> str:
return self._name

View File

@@ -59,6 +59,9 @@ class LogitechF710Controller(ControlsBase):
}
print(f"{self.name} connected.")
def close(self):
pass
def handle_input(self, event):
pass
@@ -80,6 +83,9 @@ class LogitechF710Controller(ControlsBase):
def rumble(self):
pass
def stop_rumble(self):
pass
@property
def name(self) -> str:
return self._name

View File

@@ -1,7 +1,6 @@
import time
import threading
from pygameControls.controlsbase import ControlsBase
class XboxSeriesXController:
class XboxSeriesXController(ControlsBase):
def __init__(self, joy):
self.device = joy
self.instance_id: int = self.device.get_instance_id()
@@ -37,6 +36,9 @@ class XboxSeriesXController:
}
print(f"{self.name} connected.")
def close(self):
pass
def handle_input(self, event):
pass
@@ -55,9 +57,14 @@ class XboxSeriesXController:
def pause(self):
pass
def rumble(self):
pass
def rumble(self, left, right):
if not left in range(256) or not right in range(256):
raise ValueError("left and right values must be in the range 0 - 255")
self.joy.rumble(left, right)
def stop_rumble(self):
self.joy.rumble(0, 0)
@property
def name(self) -> str:
return self._name

View File

@@ -3,7 +3,7 @@ if __name__ == "__main__":
setup(
name='pygameControls',
version='0.0.5',
version='0.1.8',
packages=find_packages(),
install_requires=[],
author='Jan Lerking',