从python脚本启动的程序中的ds4windows按钮宏

时间:2019-01-29 01:04:26

标签: python windows pyqt5 emulation

我正在编写一个pyqt5程序来管理rom并从它们各自的仿真器中启动它们,但是在启动控制器后,我很难使用控制器退出仿真。

我正在使用dinput处于关闭状态的ds4windows,因此它仅显示为Xbox控制器。我使用pygame游戏杆模块来控制从保存我的rom的文件夹生成的菜单的选择。我在ds4windows中为ps按钮分配了一个alt-f4宏,当我打开模拟器并按ps按钮时,它退出,就像我按alt-f4一样。当我使用子进程模块从程序中启动游戏时,或者在命令行上调用其.exe的路径时,仍然可以通过按键盘上的alt-f4退出游戏,然后像这样直接回到程序中我想要,但是ps按钮没有任何作用。

当我启动模拟器时,我尝试使用pygame.quit()关闭用于检测游戏手柄输入的while循环,并使用subprocess.run(),subprocess.Popen()和subprocess启动模拟器。带有shell = True的Popen(),但结果完全相同:键盘工作,ps按钮不起作用。我已经在多个不同的仿真器上对其进行了测试,但是我认为这不是问题所在,因为,就像我说的那样,如果我从Program Files中的文件夹启动仿真器,那么它就可以工作,但是从我的应用程序启动仿真器时,我从命令行将其称为路径。

此外,当我从程序启动时,控制器仍可以按预期运行。只是分配给xbox控制器配置文件以外的其他任何按钮的按钮

从程序内部启动的代码示例(mpath是rom文件的路径):

    def launch(selection):
        global mpath
        ext = selection[-4:]
        emupath = 'C:\\Program Files\\emulators\\'
        if ext in launchtypes:
            if ext in  ['.exe', '.lnk']:
                Popen(mpath, shell=True)
            elif ext == '.smc':
            run([emupath + 'snes9x\\snes9x-x64.exe', mpath])

编辑:已解决

我正在从cmder控制台仿真器运行程序。当我从cmd.exe或powershell运行它时,它工作得很好。

0 个答案:

没有答案