Поддерживает только Python 3, из -за того, что Typehintings и некоторые другие прохладные вещи Python 3.
* 3.4+ на самом деле, в любом случае, 3.10 отсутствует, буквально нет причин использовать старые версии-
Поскольку мне нужно было использовать эту вещь в моем проекте с каким -то пользовательским интерфейсом и ... вещами, я разработал ее с поддержкой многопоточной поддержки (на самом деле, это единственный вариант LOL), так что не нужно беспокоиться об этом, просто импортируйте необходимый геймпад, метод listen , и все готово.
Вот пример:
# main.py
from time import sleep
from pygamepad . gamepads import Gamepad
def main ():
gamepad = Gamepad ()
gamepad . listen () # And that's it
# Now you can read gamepad values in the main thread
try :
while True :
print ( "START button value:" , gamepad . buttons . BTN_START . value )
sleep ( 0.01 )
except ( KeyboardInterrupt , SystemExit ):
# Kill gamepad's listening thread
gamepad . stop_listening ()
# And exit from the program
exit ()
if __name__ == "__main__" :
main ()В папке примеров можно найти больше примеров
Хорошо, как я узнаю, не открывая целый сценарий модуля, какие кнопки геймпада я могу использовать?
Поскольку модуль использует типов буквально везде, где бы вы просто могли писать gamepad.buttons и AutoCoplete покажут вам все существующие кнопки. В качестве альтернативы вы можете просто открыть класс GamePad и увидеть все кнопки в подклассе Buttons .
Какие геймпады поддерживает? Защитник X7 и Xbox 360 наверняка. Что ж, я владею только GamePad Defender X7, поэтому я проверил его в режиме X-Input, так что нет гироскопа и возможностей, но вы можете внести свои изменения :)
Поскольку люди могут использовать как любые геймпады (особенно китайцы), это может не работать из коробки, или некоторые кнопки могут быть заменены и т. Д., В этом случае вы можете унаследовать от класса по умолчанию Gamepad ( pygamepad.gamepads.default.Gamepad ) и изменить некоторые вещи для вашего случая. Я должен был сделать это для моего GamePad Defender X7, потому что кнопки «Запуск и выбор» были заменены по какой -то причине (он использует модуль inputs под капотом, и по какой -то причине кнопки 0x13a и 0x13b заменяют или идентифицируют), поэтому я изменил начало, чтобы выбрать, чтобы начать, используя подкласс специальных ButtonOverrides , где вы можете ... Ну, вы овсяны.
# pygamepad/gamepads/defenderx7.py
from .. buttons import PressButton
from . default import Gamepad as DefaultGamepad
class Gamepad ( DefaultGamepad ):
class ButtonOverrides :
BTN_START = PressButton ( "BTN_SELECT" )
BTN_SELECT = PressButton ( "BTN_START" )