Я пишу программу pyqt5 для управления ромами и запуска их из соответствующего эмулятора, и у меня возникают проблемы с использованием контроллера для выхода из эмуляции после его запуска.
Я использую ds4windows сdinput выключен, поэтому он отображается только как контроллер Xbox.Я использовал модуль джойстика pygame, чтобы контролировать выбор меню, созданного из папок, в которых я храню свои диски.Я назначил макросу alt-f4 кнопку ps в ds4windows, и когда я открываю эмулятор и нажимаю кнопку ps, он выходит так же, как если бы я нажал alt-f4.Когда я запускаю игру из моей программы, используя модуль подпроцесса, или если я вызываю путь к его .exe в командной строке, я все равно могу выйти из нее, нажав alt-f4 на клавиатуре, и сразу же возвращаюсь обратно в свою программу, какЯ хотел, но кнопка ps ничего не делает.
Я пытался использовать pygame.quit (), когда я запускаю эмулятор, чтобы отключить цикл while, который у меня есть для обнаружения ввода с геймпада, запуска эмуляторов.с subprocess.run (), subprocess.Popen () и subprocess.Popen () с shell = True, но это все тот же результат: клавиатура работает, кнопка 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, он работал нормально.