织梦CMS - 轻松建站从此开始!

abg欧博官网|登陆|游戏|

How can I get input from an Xbox One controller in

时间:2025-08-22 12:28来源: 作者:admin 点击: 3 次
The inputs library can be used as an alternative to PyGame. from inputs import get_gamepad import math import threading class XboxController(object):

The inputs library can be used as an alternative to PyGame.

from inputs import get_gamepad import math import threading class XboxController(object): MAX_TRIG_VAL = math.pow(2, 8) MAX_JOY_VAL = math.pow(2, 15) def __init__(self): self.LeftJoystickY = 0 self.LeftJoystickX = 0 self.RightJoystickY = 0 self.RightJoystickX = 0 self.LeftTrigger = 0 self.RightTrigger = 0 self.LeftBumper = 0 self.RightBumper = 0 self.A = 0 self.X = 0 self.Y = 0 self.B = 0 self.LeftThumb = 0 self.RightThumb = 0 self.Back = 0 self.Start = 0 self.LeftDPad = 0 self.RightDPad = 0 self.UpDPad = 0 self.DownDPad = 0 self._monitor_thread = threading.Thread(target=self._monitor_controller, args=()) self._monitor_thread.daemon = True self._monitor_thread.start() def read(self): # return the buttons/triggers that you care about in this methode x = self.LeftJoystickX y = self.LeftJoystickY a = self.A b = self.X # b=1, x=2 rb = self.RightBumper return [x, y, a, b, rb] def _monitor_controller(self): while True: events = get_gamepad() for event in events: if event.code == 'ABS_Y': self.LeftJoystickY = event.state / XboxController.MAX_JOY_VAL # normalize between -1 and 1 elif event.code == 'ABS_X': self.LeftJoystickX = event.state / XboxController.MAX_JOY_VAL # normalize between -1 and 1 elif event.code == 'ABS_RY': self.RightJoystickY = event.state / XboxController.MAX_JOY_VAL # normalize between -1 and 1 elif event.code == 'ABS_RX': self.RightJoystickX = event.state / XboxController.MAX_JOY_VAL # normalize between -1 and 1 elif event.code == 'ABS_Z': self.LeftTrigger = event.state / XboxController.MAX_TRIG_VAL # normalize between 0 and 1 elif event.code == 'ABS_RZ': self.RightTrigger = event.state / XboxController.MAX_TRIG_VAL # normalize between 0 and 1 elif event.code == 'BTN_TL': self.LeftBumper = event.state elif event.code == 'BTN_TR': self.RightBumper = event.state elif event.code == 'BTN_SOUTH': self.A = event.state elif event.code == 'BTN_NORTH': self.Y = event.state #previously switched with X elif event.code == 'BTN_WEST': self.X = event.state #previously switched with Y elif event.code == 'BTN_EAST': self.B = event.state elif event.code == 'BTN_THUMBL': self.LeftThumb = event.state elif event.code == 'BTN_THUMBR': self.RightThumb = event.state elif event.code == 'BTN_SELECT': self.Back = event.state elif event.code == 'BTN_START': self.Start = event.state elif event.code == 'BTN_TRIGGER_HAPPY1': self.LeftDPad = event.state elif event.code == 'BTN_TRIGGER_HAPPY2': self.RightDPad = event.state elif event.code == 'BTN_TRIGGER_HAPPY3': self.UpDPad = event.state elif event.code == 'BTN_TRIGGER_HAPPY4': self.DownDPad = event.state if __name__ == '__main__': joy = XboxController() while True: print(joy.read())

The buttons and triggers are returned as a list in the read methode. So put in there what you need to be returned.

This is part of a script of the Tensorkart project by bzier. I just removed everything that was not related to capturing the controller inputs.

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2025-08-23 15:08 最后登录:2025-08-23 15:08
栏目列表
推荐内容