mirror of
https://github.com/marcriera/ddgo-converter.git
synced 2025-04-19 18:39:29 +02:00
Test gamepad name
This commit is contained in:
parent
0c9428fdd8
commit
139875808a
6 changed files with 110 additions and 24 deletions
16
.vscode/launch.json
vendored
Normal file
16
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Run main program",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "ddgo-converter.py",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"justMyCode": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -3,11 +3,12 @@
|
||||||
import sys
|
import sys
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
from gui.main import MainWindow
|
from gui.main import MainWindow
|
||||||
|
from handlers.gamepad import GamepadHandler
|
||||||
|
|
||||||
class App(QApplication):
|
class App(QApplication):
|
||||||
def __init__(self, sys_argv):
|
def __init__(self, sys_argv):
|
||||||
super(App, self).__init__(sys_argv)
|
super(App, self).__init__(sys_argv)
|
||||||
self.main_view = MainWindow(None)
|
self.main_view = MainWindow(GamepadHandler)
|
||||||
self.main_view.show()
|
self.main_view.show()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
17
gui/main.py
17
gui/main.py
|
@ -1,17 +1,22 @@
|
||||||
import sys
|
import sys
|
||||||
from PyQt5 import uic
|
from PyQt5 import uic
|
||||||
from PyQt5.QtWidgets import QMainWindow
|
from PyQt5.QtWidgets import QMainWindow, QTableWidgetItem
|
||||||
from gui.main_ui import Ui_MainWindow
|
from gui.main_ui import Ui_MainWindow
|
||||||
|
from handlers.gamepad import Gamepad
|
||||||
|
|
||||||
class MainWindow(QMainWindow):
|
class MainWindow(QMainWindow):
|
||||||
def __init__(self, main_controller):
|
def __init__(self, gamepad_handler):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self._main_controller = main_controller
|
self._gamepad_handler = gamepad_handler
|
||||||
self._gui = Ui_MainWindow()
|
self._gui = Ui_MainWindow()
|
||||||
self._gui.setupUi(self)
|
self._gui.setupUi(self)
|
||||||
|
|
||||||
self._gui.pushButton_emulatedControllerStart.clicked.connect(self.startPressed)
|
self._gui.pushButton_physicalControllerRefresh.clicked.connect(self.controller_list_refresh)
|
||||||
|
|
||||||
def startPressed(self):
|
def controller_list_refresh(self):
|
||||||
self._gui.statusbar.showMessage("Hello!")
|
self._gui.tableWidget_physicalControllerList.setRowCount(0)
|
||||||
|
for gamepad in self._gamepad_handler.find_gamepads():
|
||||||
|
rowCount = self._gui.tableWidget_physicalControllerList.rowCount()
|
||||||
|
self._gui.tableWidget_physicalControllerList.insertRow(rowCount)
|
||||||
|
self._gui.tableWidget_physicalControllerList.setItem(rowCount , 1, QTableWidgetItem(gamepad.name))
|
|
@ -1,6 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'ui/main_ui.ui'
|
# Form implementation generated from reading ui file 'gui/main_ui.ui'
|
||||||
#
|
#
|
||||||
# Created by: PyQt5 UI code generator 5.15.7
|
# Created by: PyQt5 UI code generator 5.15.7
|
||||||
#
|
#
|
||||||
|
@ -27,8 +27,8 @@ class Ui_MainWindow(object):
|
||||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||||
self.gridLayout.setContentsMargins(9, 9, 9, 9)
|
self.gridLayout.setContentsMargins(9, 9, 9, 9)
|
||||||
self.gridLayout.setObjectName("gridLayout")
|
self.gridLayout.setObjectName("gridLayout")
|
||||||
self.verticalLayout = QtWidgets.QVBoxLayout()
|
self.verticalLayout_main = QtWidgets.QVBoxLayout()
|
||||||
self.verticalLayout.setObjectName("verticalLayout")
|
self.verticalLayout_main.setObjectName("verticalLayout_main")
|
||||||
self.groupBox_physicalControllers = QtWidgets.QGroupBox(self.centralwidget)
|
self.groupBox_physicalControllers = QtWidgets.QGroupBox(self.centralwidget)
|
||||||
self.groupBox_physicalControllers.setObjectName("groupBox_physicalControllers")
|
self.groupBox_physicalControllers.setObjectName("groupBox_physicalControllers")
|
||||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_physicalControllers)
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_physicalControllers)
|
||||||
|
@ -47,7 +47,18 @@ class Ui_MainWindow(object):
|
||||||
self.tableWidget_physicalControllerList.setHorizontalHeaderItem(2, item)
|
self.tableWidget_physicalControllerList.setHorizontalHeaderItem(2, item)
|
||||||
self.tableWidget_physicalControllerList.horizontalHeader().setStretchLastSection(True)
|
self.tableWidget_physicalControllerList.horizontalHeader().setStretchLastSection(True)
|
||||||
self.verticalLayout_2.addWidget(self.tableWidget_physicalControllerList)
|
self.verticalLayout_2.addWidget(self.tableWidget_physicalControllerList)
|
||||||
self.verticalLayout.addWidget(self.groupBox_physicalControllers)
|
self.horizontalLayout_physicalControllerActions = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_physicalControllerActions.setObjectName("horizontalLayout_physicalControllerActions")
|
||||||
|
self.pushButton_physicalControllerRefresh = QtWidgets.QPushButton(self.groupBox_physicalControllers)
|
||||||
|
self.pushButton_physicalControllerRefresh.setObjectName("pushButton_physicalControllerRefresh")
|
||||||
|
self.horizontalLayout_physicalControllerActions.addWidget(self.pushButton_physicalControllerRefresh)
|
||||||
|
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_physicalControllerActions.addItem(spacerItem)
|
||||||
|
self.pushButton_physicalControllerConfig = QtWidgets.QPushButton(self.groupBox_physicalControllers)
|
||||||
|
self.pushButton_physicalControllerConfig.setObjectName("pushButton_physicalControllerConfig")
|
||||||
|
self.horizontalLayout_physicalControllerActions.addWidget(self.pushButton_physicalControllerConfig)
|
||||||
|
self.verticalLayout_2.addLayout(self.horizontalLayout_physicalControllerActions)
|
||||||
|
self.verticalLayout_main.addWidget(self.groupBox_physicalControllers)
|
||||||
self.groupBox_emulatedController = QtWidgets.QGroupBox(self.centralwidget)
|
self.groupBox_emulatedController = QtWidgets.QGroupBox(self.centralwidget)
|
||||||
self.groupBox_emulatedController.setObjectName("groupBox_emulatedController")
|
self.groupBox_emulatedController.setObjectName("groupBox_emulatedController")
|
||||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox_emulatedController)
|
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox_emulatedController)
|
||||||
|
@ -69,13 +80,13 @@ class Ui_MainWindow(object):
|
||||||
self.comboBox_emulatedControllerModel.setObjectName("comboBox_emulatedControllerModel")
|
self.comboBox_emulatedControllerModel.setObjectName("comboBox_emulatedControllerModel")
|
||||||
self.comboBox_emulatedControllerModel.addItem("")
|
self.comboBox_emulatedControllerModel.addItem("")
|
||||||
self.horizontalLayout.addWidget(self.comboBox_emulatedControllerModel)
|
self.horizontalLayout.addWidget(self.comboBox_emulatedControllerModel)
|
||||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
self.horizontalLayout.addItem(spacerItem)
|
self.horizontalLayout.addItem(spacerItem1)
|
||||||
self.pushButton_emulatedControllerStart = QtWidgets.QPushButton(self.groupBox_emulatedController)
|
self.pushButton_emulatedControllerStart = QtWidgets.QPushButton(self.groupBox_emulatedController)
|
||||||
self.pushButton_emulatedControllerStart.setObjectName("pushButton_emulatedControllerStart")
|
self.pushButton_emulatedControllerStart.setObjectName("pushButton_emulatedControllerStart")
|
||||||
self.horizontalLayout.addWidget(self.pushButton_emulatedControllerStart)
|
self.horizontalLayout.addWidget(self.pushButton_emulatedControllerStart)
|
||||||
self.verticalLayout.addWidget(self.groupBox_emulatedController)
|
self.verticalLayout_main.addWidget(self.groupBox_emulatedController)
|
||||||
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
|
self.gridLayout.addLayout(self.verticalLayout_main, 0, 0, 1, 1)
|
||||||
MainWindow.setCentralWidget(self.centralwidget)
|
MainWindow.setCentralWidget(self.centralwidget)
|
||||||
self.statusbar = QtWidgets.QStatusBar(MainWindow)
|
self.statusbar = QtWidgets.QStatusBar(MainWindow)
|
||||||
self.statusbar.setObjectName("statusbar")
|
self.statusbar.setObjectName("statusbar")
|
||||||
|
@ -89,11 +100,13 @@ class Ui_MainWindow(object):
|
||||||
MainWindow.setWindowTitle(_translate("MainWindow", "Densha de GO! Controller Converter"))
|
MainWindow.setWindowTitle(_translate("MainWindow", "Densha de GO! Controller Converter"))
|
||||||
self.groupBox_physicalControllers.setTitle(_translate("MainWindow", "Physical controllers"))
|
self.groupBox_physicalControllers.setTitle(_translate("MainWindow", "Physical controllers"))
|
||||||
item = self.tableWidget_physicalControllerList.horizontalHeaderItem(0)
|
item = self.tableWidget_physicalControllerList.horizontalHeaderItem(0)
|
||||||
item.setText(_translate("MainWindow", "Name"))
|
|
||||||
item = self.tableWidget_physicalControllerList.horizontalHeaderItem(1)
|
|
||||||
item.setText(_translate("MainWindow", "ID"))
|
item.setText(_translate("MainWindow", "ID"))
|
||||||
|
item = self.tableWidget_physicalControllerList.horizontalHeaderItem(1)
|
||||||
|
item.setText(_translate("MainWindow", "Name"))
|
||||||
item = self.tableWidget_physicalControllerList.horizontalHeaderItem(2)
|
item = self.tableWidget_physicalControllerList.horizontalHeaderItem(2)
|
||||||
item.setText(_translate("MainWindow", "Status"))
|
item.setText(_translate("MainWindow", "Status"))
|
||||||
|
self.pushButton_physicalControllerRefresh.setText(_translate("MainWindow", "Refresh"))
|
||||||
|
self.pushButton_physicalControllerConfig.setText(_translate("MainWindow", "Configuration"))
|
||||||
self.groupBox_emulatedController.setTitle(_translate("MainWindow", "Emulated controller"))
|
self.groupBox_emulatedController.setTitle(_translate("MainWindow", "Emulated controller"))
|
||||||
self.label_emulatedControllerModel.setText(_translate("MainWindow", "Model"))
|
self.label_emulatedControllerModel.setText(_translate("MainWindow", "Model"))
|
||||||
self.comboBox_emulatedControllerModel.setItemText(0, _translate("MainWindow", "Two-handle controller for PC (DGOC-44U)"))
|
self.comboBox_emulatedControllerModel.setItemText(0, _translate("MainWindow", "Two-handle controller for PC (DGOC-44U)"))
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_main">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_physicalControllers">
|
<widget class="QGroupBox" name="groupBox_physicalControllers">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
|
@ -66,12 +66,12 @@
|
||||||
</attribute>
|
</attribute>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Name</string>
|
<string>ID</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>ID</string>
|
<string>Name</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
<column>
|
<column>
|
||||||
|
@ -81,6 +81,37 @@
|
||||||
</column>
|
</column>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_physicalControllerActions">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_physicalControllerRefresh">
|
||||||
|
<property name="text">
|
||||||
|
<string>Refresh</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_physicalControllerActions">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_physicalControllerConfig">
|
||||||
|
<property name="text">
|
||||||
|
<string>Configuration</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -119,7 +150,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer_emulatedController">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -1,8 +1,27 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
from evdev import InputDevice, list_devices, ecodes as e, UInput, AbsInfo
|
from evdev import InputDevice, list_devices, ecodes as e, UInput, AbsInfo
|
||||||
|
|
||||||
cap = {
|
class GamepadHandler:
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
def find_gamepads():
|
||||||
|
gamepads = []
|
||||||
|
devices = [InputDevice(path) for path in list_devices()]
|
||||||
|
for device in devices:
|
||||||
|
gamepads.append(Gamepad(device.info.vendor, device.info.product, device.name))
|
||||||
|
return gamepads
|
||||||
|
|
||||||
|
class Gamepad:
|
||||||
|
|
||||||
|
def __init__(self, vid, pid, name):
|
||||||
|
super().__init__()
|
||||||
|
self.vid = vid
|
||||||
|
self.pid = pid
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
""" cap = {
|
||||||
e.EV_KEY : [e.BTN_NORTH, e.BTN_SOUTH, e.BTN_EAST, e.BTN_WEST, e.BTN_SELECT, e.BTN_START],
|
e.EV_KEY : [e.BTN_NORTH, e.BTN_SOUTH, e.BTN_EAST, e.BTN_WEST, e.BTN_SELECT, e.BTN_START],
|
||||||
e.EV_ABS : [(e.ABS_X, AbsInfo(0, 0, 255, 0, 0, 0)), (e.ABS_Y, AbsInfo(0, 0, 255, 0, 0, 0))]
|
e.EV_ABS : [(e.ABS_X, AbsInfo(0, 0, 255, 0, 0, 0)), (e.ABS_Y, AbsInfo(0, 0, 255, 0, 0, 0))]
|
||||||
}
|
}
|
||||||
|
@ -149,3 +168,4 @@ for event in mascon_switch.read_loop():
|
||||||
ui.write(e.EV_ABS, e.ABS_X, 0x79)
|
ui.write(e.EV_ABS, e.ABS_X, 0x79)
|
||||||
ui.write(e.EV_ABS, e.ABS_Y, 0x00)
|
ui.write(e.EV_ABS, e.ABS_Y, 0x00)
|
||||||
ui.syn()
|
ui.syn()
|
||||||
|
"""
|
Loading…
Add table
Reference in a new issue