Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
2285535276 | |||
2bbf4e19d1 | |||
caebb2be77 | |||
304e42025c | |||
0dc32bd979 | |||
17c947b6fb | |||
085355e0f9 | |||
029eb3095e | |||
6eca515cf7 | |||
57d2d60f67 | |||
1ccceeeb06 | |||
ff3bfc66d2 | |||
5be0dace93 | |||
d6f72a8e74 | |||
5a5acdf583 | |||
9c66fe8930 | |||
3980bd92ca | |||
75fb3f577b |
@@ -6,10 +6,12 @@ from .logitech_f310_controller import LogitechF310Controller
|
||||
from .logitech_f510_controller import LogitechF510Controller
|
||||
from .logitech_f710_controller import LogitechF710Controller
|
||||
from .xbox_series_x_controller import XboxSeriesXController
|
||||
from .sony_playstation3_controller import SonyPlayStation3Controller
|
||||
from .playstation3_controller import PlayStation3Controller
|
||||
from .generic_controller import GenericController
|
||||
from .logitech_dual_action_controller import LogitechDualActionController
|
||||
|
||||
__version__ = "0.1.4"
|
||||
__version__ = "0.1.13"
|
||||
|
||||
CONTROLLERS = {
|
||||
"DualSense Wireless Controller": DualSenseController,
|
||||
@@ -18,7 +20,9 @@ CONTROLLERS = {
|
||||
"Logitech Gamepad F510": LogitechF510Controller,
|
||||
"Logitech Gamepad F710": LogitechF710Controller,
|
||||
"Logitech Dual Action": LogitechDualActionController,
|
||||
"X box Series X Controller": XboxSeriesXController
|
||||
"Xbox Series X Controller": XboxSeriesXController,
|
||||
"Sony PLAYSTATION(R)3 Controller": SonyPlayStation3Controller,
|
||||
"PLAYSTATION(R)3 Controller": PlayStation3Controller
|
||||
}
|
||||
|
||||
class Controllers:
|
||||
|
@@ -30,4 +30,12 @@ class ControlsBase(ABC):
|
||||
|
||||
@abstractmethod
|
||||
def rumble(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def stop_rumble(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def close(self):
|
||||
pass
|
@@ -25,25 +25,17 @@ class DualSenseController(ControlsBase):
|
||||
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],
|
||||
"right stick x": self.axis[3],
|
||||
"right stick y": self.axis[4],
|
||||
"right trigger": self.buttons[5],
|
||||
"left trigger": self.buttons[2],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[4],
|
||||
"right button": self.buttons[5],
|
||||
"cross button": self.buttons[0],
|
||||
"triangle button": self.buttons[2],
|
||||
"circle button": self.buttons[1],
|
||||
"square button": self.buttons[3],
|
||||
"left stick button": self.buttons[11],
|
||||
"right stick button": self.buttons[12],
|
||||
"connect button": self.buttons[8],
|
||||
"list button": self.buttons[9],
|
||||
"logo button": self.buttons[10]
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"cross button": 0,
|
||||
"triangle button": 2,
|
||||
"circle button": 1,
|
||||
"square button": 3,
|
||||
"left stick button": 11,
|
||||
"right stick button": 12,
|
||||
"connect button": 8,
|
||||
"list button": 9,
|
||||
"logo button": 10
|
||||
}
|
||||
print(f"{self.name} connected")
|
||||
print(f"Power level: {self.powerlevel}")
|
||||
|
@@ -14,28 +14,25 @@ class GenericController(ControlsBase):
|
||||
self.numbuttons: int = self.device.get_numbuttons()
|
||||
self.buttons: list = [self.device.get_button(b) for b in range(self.numbuttons)]
|
||||
self.mapping = {
|
||||
"left stick x": self.axis[0],
|
||||
"left stick y": self.axis[1],
|
||||
"right stick x": self.axis[2],
|
||||
"right stick y": self.axis[3],
|
||||
"right trigger": self.buttons[7],
|
||||
"left trigger": self.buttons[6],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[4],
|
||||
"right button": self.buttons[5],
|
||||
"X button": self.buttons[0],
|
||||
"Y button": self.buttons[3],
|
||||
"A button": self.buttons[1],
|
||||
"B button": self.buttons[2],
|
||||
"left stick button": self.buttons[10],
|
||||
"right stick button": self.buttons[11],
|
||||
"back button": self.buttons[8],
|
||||
"start button": self.buttons[9],
|
||||
"r2 trigger": 7,
|
||||
"l2 trigger": 6,
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"X button": 0,
|
||||
"Y button": 3,
|
||||
"A button": 1,
|
||||
"B button": 2,
|
||||
"left stick button": 10,
|
||||
"right stick button": 11,
|
||||
"back button": 8,
|
||||
"start button": 9,
|
||||
"logo button": None
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
@@ -57,6 +54,9 @@ class GenericController(ControlsBase):
|
||||
def rumble(self):
|
||||
pass
|
||||
|
||||
def stop_rumble(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
@@ -35,28 +35,25 @@ class LogitechDualActionController(ControlsBase):
|
||||
self.buttons: list = [self.device.get_button(b) for b in range(self.numbuttons)]
|
||||
self.input_mode = InputMode.DirectInput
|
||||
self.mapping = {
|
||||
"left stick x": self.axis[0],
|
||||
"left stick y": self.axis[1],
|
||||
"right stick x": self.axis[2],
|
||||
"right stick y": self.axis[3],
|
||||
"right trigger": self.buttons[7],
|
||||
"left trigger": self.buttons[6],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[4],
|
||||
"right button": self.buttons[5],
|
||||
"X button": self.buttons[0],
|
||||
"Y button": self.buttons[3],
|
||||
"A button": self.buttons[1],
|
||||
"B button": self.buttons[2],
|
||||
"left stick button": self.buttons[10],
|
||||
"right stick button": self.buttons[11],
|
||||
"back button": self.buttons[8],
|
||||
"start button": self.buttons[9],
|
||||
"r2 trigger": 7,
|
||||
"l2 trigger": 6,
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"X button": 0,
|
||||
"Y button": 3,
|
||||
"A button": 1,
|
||||
"B button": 2,
|
||||
"left stick button": 10,
|
||||
"right stick button": 11,
|
||||
"back button": 8,
|
||||
"start button": 9,
|
||||
"logo button": None
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
@@ -78,6 +75,9 @@ class LogitechDualActionController(ControlsBase):
|
||||
def rumble(self):
|
||||
pass
|
||||
|
||||
def stop_rumble(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
@@ -35,28 +35,23 @@ class LogitechF310Controller(ControlsBase):
|
||||
self.buttons: list = [self.device.get_button(b) for b in range(self.numbuttons)]
|
||||
self.input_mode = InputMode.XInput
|
||||
self.mapping = {
|
||||
"left stick x": self.axis[0],
|
||||
"left stick y": self.axis[1],
|
||||
"right stick x": self.axis[3],
|
||||
"right stick y": self.axis[4],
|
||||
"right trigger": self.axis[2],
|
||||
"left trigger": self.axis[5],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[4],
|
||||
"right button": self.buttons[5],
|
||||
"X button": self.buttons[2],
|
||||
"Y button": self.buttons[3],
|
||||
"A button": self.buttons[0],
|
||||
"B button": self.buttons[1],
|
||||
"left stick button": self.buttons[9],
|
||||
"right stick button": self.buttons[10],
|
||||
"back button": self.buttons[6],
|
||||
"start button": self.buttons[7],
|
||||
"logo button": self.buttons[8]
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"X button": 2,
|
||||
"Y button": 3,
|
||||
"A button": 0,
|
||||
"B button": 1,
|
||||
"left stick button": 9,
|
||||
"right stick button": 10,
|
||||
"back button": 6,
|
||||
"start button": 7,
|
||||
"logo button": 8
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
@@ -78,6 +73,9 @@ class LogitechF310Controller(ControlsBase):
|
||||
def rumble(self):
|
||||
pass
|
||||
|
||||
def stop_rumble(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
@@ -37,28 +37,23 @@ class LogitechF510Controller(ControlsBase):
|
||||
self.buttons: list = []
|
||||
self.input_mode: InputMode.DirectInput
|
||||
self.mapping = {
|
||||
"left stick x": self.axis[0],
|
||||
"left stick y": self.axis[1],
|
||||
"right stick x": self.axis[3],
|
||||
"right stick y": self.axis[4],
|
||||
"right trigger": self.axis[2],
|
||||
"left trigger": self.axis[5],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[4],
|
||||
"right button": self.buttons[5],
|
||||
"X button": self.buttons[2],
|
||||
"Y button": self.buttons[3],
|
||||
"A button": self.buttons[0],
|
||||
"B button": self.buttons[1],
|
||||
"left stick button": self.buttons[9],
|
||||
"right stick button": self.buttons[10],
|
||||
"back button": self.buttons[6],
|
||||
"start button": self.buttons[7],
|
||||
"logo button": self.buttons[8]
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"X button": 2,
|
||||
"Y button": 3,
|
||||
"A button": 0,
|
||||
"B button": 1,
|
||||
"left stick button": 9,
|
||||
"right stick button": 10,
|
||||
"back button": 6,
|
||||
"start button": 7,
|
||||
"logo button": 8
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
@@ -80,6 +75,9 @@ class LogitechF510Controller(ControlsBase):
|
||||
def rumble(self):
|
||||
pass
|
||||
|
||||
def stop_rumble(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
@@ -37,28 +37,23 @@ class LogitechF710Controller(ControlsBase):
|
||||
self.buttons: list = []
|
||||
self.input_mode: InputMode.DirectInput
|
||||
self.mapping = {
|
||||
"left stick x": self.axis[0],
|
||||
"left stick y": self.axis[1],
|
||||
"right stick x": self.axis[3],
|
||||
"right stick y": self.axis[4],
|
||||
"right trigger": self.axis[2],
|
||||
"left trigger": self.axis[5],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[4],
|
||||
"right button": self.buttons[5],
|
||||
"X button": self.buttons[2],
|
||||
"Y button": self.buttons[3],
|
||||
"A button": self.buttons[0],
|
||||
"B button": self.buttons[1],
|
||||
"left stick button": self.buttons[9],
|
||||
"right stick button": self.buttons[10],
|
||||
"back button": self.buttons[6],
|
||||
"start button": self.buttons[7],
|
||||
"logo button": self.buttons[8]
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"X button": 2,
|
||||
"Y button": 3,
|
||||
"A button": 0,
|
||||
"B button": 1,
|
||||
"left stick button": 9,
|
||||
"right stick button": 10,
|
||||
"back button": 6,
|
||||
"start button": 7,
|
||||
"logo button": 8
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
@@ -80,6 +75,9 @@ class LogitechF710Controller(ControlsBase):
|
||||
def rumble(self):
|
||||
pass
|
||||
|
||||
def stop_rumble(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
70
pygameControls/playstation3_controller.py
Normal file
70
pygameControls/playstation3_controller.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from pygameControls.controlsbase import ControlsBase
|
||||
|
||||
class PlayStation3Controller(ControlsBase):
|
||||
def __init__(self, joy):
|
||||
self.device = joy
|
||||
self.instance_id: int = self.device.get_instance_id()
|
||||
self.name = self.device.get_name()
|
||||
self.guid = self.device.get_guid()
|
||||
self.numaxis: int = self.device.get_numaxes()
|
||||
self.axis: list = [self.device.get_axis(a) for a in range(self.numaxis)]
|
||||
self.numhats: int = self.device.get_numhats()
|
||||
self.hats: list = [self.device.get_hat(h) for h in range(self.numhats)]
|
||||
self.numbuttons: int = self.device.get_numbuttons()
|
||||
self.buttons: list = [self.device.get_button(b) for b in range(self.numbuttons)]
|
||||
self.mapping = {
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"cross button": 0,
|
||||
"triangle button": 2,
|
||||
"circle button": 1,
|
||||
"square button": 3,
|
||||
"left stick button": 11,
|
||||
"right stick button": 12,
|
||||
"logo button": 10,
|
||||
"select button": 8,
|
||||
"start button": 9,
|
||||
"down button": 14,
|
||||
"up button": 13,
|
||||
"left button": 15,
|
||||
"right button": 16
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
self.device.quit()
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
def left(self):
|
||||
pass
|
||||
|
||||
def right(self):
|
||||
pass
|
||||
|
||||
def up(self):
|
||||
pass
|
||||
|
||||
def down(self):
|
||||
pass
|
||||
|
||||
def pause(self):
|
||||
pass
|
||||
|
||||
def rumble(self, left, right, duration=0):
|
||||
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.rumble(left / 255, right / 255, duration)
|
||||
|
||||
def stop_rumble(self):
|
||||
self.device.stop_rumble()
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name: str) -> None:
|
||||
self._name = name
|
||||
|
70
pygameControls/sony_playstation3_controller.py
Normal file
70
pygameControls/sony_playstation3_controller.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from pygameControls.controlsbase import ControlsBase
|
||||
|
||||
class SonyPlayStation3Controller(ControlsBase):
|
||||
def __init__(self, joy):
|
||||
self.device = joy
|
||||
self.instance_id: int = self.device.get_instance_id()
|
||||
self.name = self.device.get_name()
|
||||
self.guid = self.device.get_guid()
|
||||
self.numaxis: int = self.device.get_numaxes()
|
||||
self.axis: list = [self.device.get_axis(a) for a in range(self.numaxis)]
|
||||
self.numhats: int = self.device.get_numhats()
|
||||
self.hats: list = [self.device.get_hat(h) for h in range(self.numhats)]
|
||||
self.numbuttons: int = self.device.get_numbuttons()
|
||||
self.buttons: list = [self.device.get_button(b) for b in range(self.numbuttons)]
|
||||
self.mapping = {
|
||||
"l1 button": 4,
|
||||
"r1 button": 5,
|
||||
"cross button": 0,
|
||||
"triangle button": 2,
|
||||
"circle button": 1,
|
||||
"square button": 3,
|
||||
"left stick button": 11,
|
||||
"right stick button": 12,
|
||||
"logo button": 10,
|
||||
"select button": 8,
|
||||
"start button": 9,
|
||||
"down button": 14,
|
||||
"up button": 13,
|
||||
"left button": 15,
|
||||
"right button": 16
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
self.device.quit()
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
def left(self):
|
||||
pass
|
||||
|
||||
def right(self):
|
||||
pass
|
||||
|
||||
def up(self):
|
||||
pass
|
||||
|
||||
def down(self):
|
||||
pass
|
||||
|
||||
def pause(self):
|
||||
pass
|
||||
|
||||
def rumble(self, left, right, duration=0):
|
||||
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.rumble(left / 255, right / 255, duration)
|
||||
|
||||
def stop_rumble(self):
|
||||
self.device.stop_rumble()
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name: str) -> None:
|
||||
self._name = name
|
||||
|
@@ -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()
|
||||
@@ -14,29 +13,24 @@ class XboxSeriesXController:
|
||||
self.numbuttons: int = self.device.get_numbuttons()
|
||||
self.buttons: list = [self.device.get_button(b) for b in range(self.numbuttons)]
|
||||
self.mapping = {
|
||||
"left stick x": self.axis[0],
|
||||
"left stick y": self.axis[1],
|
||||
"right stick x": self.axis[2],
|
||||
"right stick y": self.axis[3],
|
||||
"right trigger": self.axis[4],
|
||||
"left trigger": self.axis[5],
|
||||
"dhat x": self.hats[0][0],
|
||||
"dhat y": self.hats[0][1],
|
||||
"left button": self.buttons[6],
|
||||
"right button": self.buttons[7],
|
||||
"X button": self.buttons[3],
|
||||
"Y button": self.buttons[4],
|
||||
"A button": self.buttons[0],
|
||||
"B button": self.buttons[1],
|
||||
"left stick button": self.buttons[13],
|
||||
"right stick button": self.buttons[14],
|
||||
"logo button": self.buttons[12],
|
||||
"share button": self.buttons[15],
|
||||
"list button": self.buttons[11],
|
||||
"copy button": self.buttons[10]
|
||||
"l1 button": 6,
|
||||
"r1 button": 7,
|
||||
"X button": 3,
|
||||
"Y button": 4,
|
||||
"A button": 0,
|
||||
"B button": 1,
|
||||
"left stick button": 13,
|
||||
"right stick button": 14,
|
||||
"logo button": 12,
|
||||
"share button": 15,
|
||||
"list button": 11,
|
||||
"copy button": 10
|
||||
}
|
||||
print(f"{self.name} connected.")
|
||||
|
||||
def close(self):
|
||||
self.device.quit()
|
||||
|
||||
def handle_input(self, event):
|
||||
pass
|
||||
|
||||
@@ -55,13 +49,13 @@ class XboxSeriesXController:
|
||||
def pause(self):
|
||||
pass
|
||||
|
||||
def rumble(self, left, right):
|
||||
def rumble(self, left, right, duration=0):
|
||||
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)
|
||||
self.device.rumble(left / 255, right / 255, duration)
|
||||
|
||||
def stop_rumble(self):
|
||||
self.joy.rumble(0, 0)
|
||||
self.device.stop_rumble()
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
|
Reference in New Issue
Block a user