mirror of
https://github.com/marcriera/ddgo-converter.git
synced 2025-04-19 18:39:29 +02:00
Add support for PS1 and SAT
This commit is contained in:
parent
dd6d1e0723
commit
b9d8ffde84
6 changed files with 245 additions and 2 deletions
|
@ -6,7 +6,9 @@ class EmulatedGamepad:
|
||||||
|
|
||||||
class GamepadType(IntEnum):
|
class GamepadType(IntEnum):
|
||||||
PC2HANDLE = 0
|
PC2HANDLE = 0
|
||||||
N64 = 1
|
PS1 = 1
|
||||||
|
N64 = 2
|
||||||
|
SAT = 3
|
||||||
|
|
||||||
class PC2HandleGamepad(EmulatedGamepad):
|
class PC2HandleGamepad(EmulatedGamepad):
|
||||||
|
|
||||||
|
@ -69,6 +71,122 @@ class PC2HandleGamepad(EmulatedGamepad):
|
||||||
self.ui.write(ecodes.EV_ABS, ecodes.ABS_Y, self.power_notches[event.data])
|
self.ui.write(ecodes.EV_ABS, ecodes.ABS_Y, self.power_notches[event.data])
|
||||||
self.ui.syn()
|
self.ui.syn()
|
||||||
|
|
||||||
|
class PS1Gamepad(EmulatedGamepad):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.type = self.GamepadType.PS1
|
||||||
|
self.capabilities = {
|
||||||
|
ecodes.EV_KEY : [ecodes.BTN_NORTH, ecodes.BTN_SOUTH, ecodes.BTN_EAST, ecodes.BTN_WEST, ecodes.BTN_TL, ecodes.BTN_TR,
|
||||||
|
ecodes.BTN_TL2, ecodes.BTN_TR2, ecodes.BTN_SELECT, ecodes.BTN_START, ecodes.BTN_THUMBL, ecodes.BTN_THUMBR,
|
||||||
|
ecodes.BTN_MODE, ecodes.BTN_DPAD_UP, ecodes.BTN_DPAD_DOWN, ecodes.BTN_DPAD_LEFT, ecodes.BTN_DPAD_RIGHT],
|
||||||
|
ecodes.EV_ABS : [(ecodes.ABS_X, AbsInfo(128, 0, 255, 0, 0, 0)), (ecodes.ABS_Y, AbsInfo(128, 0, 255, 0, 0, 0)),
|
||||||
|
(ecodes.ABS_RX, AbsInfo(128, 0, 255, 0, 0, 0)), (ecodes.ABS_RY, AbsInfo(128, 0, 255, 0, 0, 0))]
|
||||||
|
}
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
self.ui = UInput(self.capabilities, vendor=0x54C, product=0x268, name='Sony PLAYSTATION(R)3 Controller')
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
self.ui.close()
|
||||||
|
|
||||||
|
def write_input(self, event):
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_UP, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_UP, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 1)
|
||||||
|
match event.type:
|
||||||
|
case (InputEvent.EventType.RELEASE_BUTTON | InputEvent.EventType.PRESS_BUTTON):
|
||||||
|
match event.data:
|
||||||
|
case InputEvent.Button.BUTTON_A:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_B:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_SOUTH, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_C:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_EAST, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_SELECT:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_SELECT, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_START:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_START, event.type)
|
||||||
|
case InputEvent.EventType.BRAKE_NOTCH:
|
||||||
|
match event.data:
|
||||||
|
case 0:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 1:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 2:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 3:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 4:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 5:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 6:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
case 7:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
case 8:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
case 9:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
case InputEvent.EventType.POWER_NOTCH:
|
||||||
|
match event.data:
|
||||||
|
case 0:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_RIGHT, 1)
|
||||||
|
case 1:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_RIGHT, 1)
|
||||||
|
case 2:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_RIGHT, 1)
|
||||||
|
case 3:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_RIGHT, 0)
|
||||||
|
case 4:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_RIGHT, 0)
|
||||||
|
case 5:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_RIGHT, 0)
|
||||||
|
self.ui.syn()
|
||||||
|
|
||||||
class N64Gamepad(EmulatedGamepad):
|
class N64Gamepad(EmulatedGamepad):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -180,3 +298,113 @@ class N64Gamepad(EmulatedGamepad):
|
||||||
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_UP, 0)
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_UP, 0)
|
||||||
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
self.ui.syn()
|
self.ui.syn()
|
||||||
|
|
||||||
|
class SATGamepad(EmulatedGamepad):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.type = self.GamepadType.SAT
|
||||||
|
self.capabilities = {
|
||||||
|
ecodes.EV_KEY : [ecodes.BTN_NORTH, ecodes.BTN_SOUTH, ecodes.BTN_EAST, ecodes.BTN_WEST, ecodes.BTN_TL, ecodes.BTN_TR,
|
||||||
|
ecodes.BTN_TL2, ecodes.BTN_TR2, ecodes.BTN_SELECT, ecodes.BTN_START, ecodes.BTN_THUMBL, ecodes.BTN_THUMBR,
|
||||||
|
ecodes.BTN_MODE, ecodes.BTN_DPAD_UP, ecodes.BTN_DPAD_DOWN, ecodes.BTN_DPAD_LEFT, ecodes.BTN_DPAD_RIGHT],
|
||||||
|
ecodes.EV_ABS : [(ecodes.ABS_X, AbsInfo(128, 0, 255, 0, 0, 0)), (ecodes.ABS_Y, AbsInfo(128, 0, 255, 0, 0, 0)),
|
||||||
|
(ecodes.ABS_RX, AbsInfo(128, 0, 255, 0, 0, 0)), (ecodes.ABS_RY, AbsInfo(128, 0, 255, 0, 0, 0))]
|
||||||
|
}
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
self.ui = UInput(self.capabilities, vendor=0x54C, product=0x268, name='Sony PLAYSTATION(R)3 Controller')
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
self.ui.close()
|
||||||
|
|
||||||
|
def write_input(self, event):
|
||||||
|
match event.type:
|
||||||
|
case (InputEvent.EventType.RELEASE_BUTTON | InputEvent.EventType.PRESS_BUTTON):
|
||||||
|
match event.data:
|
||||||
|
case InputEvent.Button.BUTTON_A:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_SOUTH, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_B:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_EAST, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_C:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR, event.type)
|
||||||
|
case InputEvent.Button.BUTTON_START:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_START, event.type)
|
||||||
|
case InputEvent.EventType.BRAKE_NOTCH:
|
||||||
|
match event.data:
|
||||||
|
case 0:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 1:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 2:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 3:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 4:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 5:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 6:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 1)
|
||||||
|
case 7:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 0)
|
||||||
|
case 8:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 0)
|
||||||
|
case 9:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TR2, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_DOWN, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_DPAD_LEFT, 0)
|
||||||
|
case InputEvent.EventType.POWER_NOTCH:
|
||||||
|
match event.data:
|
||||||
|
case 0:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
case 1:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
case 2:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 1)
|
||||||
|
case 3:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
case 4:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
case 5:
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_WEST, 1)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_NORTH, 0)
|
||||||
|
self.ui.write(ecodes.EV_KEY, ecodes.BTN_TL, 0)
|
||||||
|
self.ui.syn()
|
|
@ -51,6 +51,12 @@ class SwitchGamepad(PhysicalGamepad):
|
||||||
self.config = []
|
self.config = []
|
||||||
self.device = self._get_device()
|
self.device = self._get_device()
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
self.device.grab()
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
self.device.ungrab()
|
||||||
|
|
||||||
def read_input(self):
|
def read_input(self):
|
||||||
# time.sleep(5)
|
# time.sleep(5)
|
||||||
# print("Read from ZKNS-001 correct")
|
# print("Read from ZKNS-001 correct")
|
||||||
|
|
|
@ -37,8 +37,11 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
def populate_controller_combobox(self):
|
def populate_controller_combobox(self):
|
||||||
self._gui.comboBox_emulatedControllerModel.addItem("PC two-handle controller (DGOC-44U)", gamepad_emulated.PC2HandleGamepad())
|
self._gui.comboBox_emulatedControllerModel.addItem("PC two-handle controller (DGOC-44U)", gamepad_emulated.PC2HandleGamepad())
|
||||||
self._gui.comboBox_emulatedControllerModel.addItem("N64 two-handle controller (TCPP-20003)", gamepad_emulated.N64Gamepad())
|
|
||||||
self._gui.comboBox_emulatedControllerModel.setCurrentIndex(0)
|
self._gui.comboBox_emulatedControllerModel.setCurrentIndex(0)
|
||||||
|
self._gui.comboBox_emulatedControllerModel.addItem("Sony PlayStation two-handle controller (SLPH-00051)", gamepad_emulated.PS1Gamepad())
|
||||||
|
self._gui.comboBox_emulatedControllerModel.addItem("Nintendo 64 two-handle controller (TCPP-20003)", gamepad_emulated.N64Gamepad())
|
||||||
|
self._gui.comboBox_emulatedControllerModel.addItem("SEGA Saturn two-handle controller (TC-5175290)", gamepad_emulated.SATGamepad())
|
||||||
|
self._gui.comboBox_emulatedControllerModel.model().sort(0)
|
||||||
|
|
||||||
def controller_list_refresh(self):
|
def controller_list_refresh(self):
|
||||||
self.gamepad_model.beginResetModel()
|
self.gamepad_model.beginResetModel()
|
||||||
|
|
|
@ -71,6 +71,7 @@ class Ui_MainWindow(object):
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.comboBox_emulatedControllerModel.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.comboBox_emulatedControllerModel.sizePolicy().hasHeightForWidth())
|
||||||
self.comboBox_emulatedControllerModel.setSizePolicy(sizePolicy)
|
self.comboBox_emulatedControllerModel.setSizePolicy(sizePolicy)
|
||||||
|
self.comboBox_emulatedControllerModel.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically)
|
||||||
self.comboBox_emulatedControllerModel.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents)
|
self.comboBox_emulatedControllerModel.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents)
|
||||||
self.comboBox_emulatedControllerModel.setObjectName("comboBox_emulatedControllerModel")
|
self.comboBox_emulatedControllerModel.setObjectName("comboBox_emulatedControllerModel")
|
||||||
self.horizontalLayout.addWidget(self.comboBox_emulatedControllerModel)
|
self.horizontalLayout.addWidget(self.comboBox_emulatedControllerModel)
|
||||||
|
|
|
@ -133,6 +133,9 @@
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="insertPolicy">
|
||||||
|
<enum>QComboBox::InsertAlphabetically</enum>
|
||||||
|
</property>
|
||||||
<property name="sizeAdjustPolicy">
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QComboBox::AdjustToContents</enum>
|
<enum>QComboBox::AdjustToContents</enum>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -16,6 +16,7 @@ class GamepadHandler:
|
||||||
return gamepads
|
return gamepads
|
||||||
|
|
||||||
def run_gamepad_emulator(gamepad, emulated_gamepad, stop_event):
|
def run_gamepad_emulator(gamepad, emulated_gamepad, stop_event):
|
||||||
|
gamepad.start()
|
||||||
emulated_gamepad.start()
|
emulated_gamepad.start()
|
||||||
while not stop_event.is_set():
|
while not stop_event.is_set():
|
||||||
events = gamepad.read_input()
|
events = gamepad.read_input()
|
||||||
|
@ -25,3 +26,4 @@ class GamepadHandler:
|
||||||
break
|
break
|
||||||
emulated_gamepad.write_input(event)
|
emulated_gamepad.write_input(event)
|
||||||
emulated_gamepad.stop()
|
emulated_gamepad.stop()
|
||||||
|
gamepad.stop()
|
||||||
|
|
Loading…
Add table
Reference in a new issue