Apoya solo a Python 3, porque de TypeHintings y algunas otras cosas geniales de Python 3.
* 3.4+ En realidad, de todos modos, 3.10 está fuera, literalmente no hay razón para usar las versiones antiguas:
Dado que necesitaba usar esto en mi proyecto con una interfaz de usuario y ... cosas, lo he diseñado con soporte de múltiples lecturas (en realidad, esta es la única opción jajaja), así que no es necesario preocuparse por esto, solo importar el gamepad, el método listen de fuego y que está listo.
Aquí hay un ejemplo:
# 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 ()Se pueden encontrar más ejemplos en la carpeta de ejemplos
Ok, ¿cómo sé sin abrir el script de módulo completo qué botones de gamepad puedo usar?
Dado que el módulo usa typehinting literalmente en todas partes donde puede escribir gamepad.buttons Buttons y Autocomplete le mostrará todos los botones existentes. Alternativamente, puede abrir la clase GamePad y ver todo el botón en su subclase de Buttons .
¿Qué gamepads admite? Defender X7 y Xbox 360 seguro. Bueno, solo soy dueño de GamePad de Defender X7, así que lo probé en el modo de entrada X, por lo que no hay giroscopio y capacidades táctiles, pero puedes contribuir con tus cambios :)
Dado que las personas pueden usar como cualquier tipo de gamepads (especialmente chino), puede no funcionar fuera de la caja o se pueden cambiar algunos botones, etc., en ese caso puede heredar de la clase de gamepad predeterminada ( pygamepad.gamepads.default.Gamepad ) y alterar algunas cosas para su caso. Tuve que hacerlo para mi Gamepad de defensores x7 porque los botones de inicio y selección se intercambiaron por alguna razón (utiliza el módulo inputs debajo del capó y, por alguna razón, los botones 0x13a y 0x13b se intercambian o IDK), por lo que cambié Start to Select y seleccione para comenzar a usar Subclass especiales ButtonOverrides donde puede.
# 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" )