-
Notifications
You must be signed in to change notification settings - Fork 0
/
joystick_input.py
44 lines (37 loc) · 1.43 KB
/
joystick_input.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import pygame
class JoystickInput:
def __init__(self):
self.aileron = 0.0
self.pitch = 0.0
self.throttle = 0.0
self.rudder = 0.0
self.tside = 0.0
self.hat_state = (0, 0)
self.button_state = []
pygame.joystick.init()
self.joystick = pygame.joystick.Joystick(0)
self.joystick.init()
pygame.event.set_allowed([pygame.JOYHATMOTION, pygame.KEYDOWN])
def update(self):
self.aileron = self.joystick.get_axis(0)
self.pitch = self.joystick.get_axis(1)
self.throttle = -self.joystick.get_axis(2)
self.rudder = self.joystick.get_axis(3)
self.tside = self.joystick.get_axis(4)
self.hat_state = self.joystick.get_hat(0)
self.button_state = [self.joystick.get_button(b) for b in xrange(self.joystick.get_numbuttons())]
if not pygame.event.peek():
return
pygame.event.pump()
for event in pygame.event.get():
if event.type == pygame.JOYHATMOTION:
print event.value
self.hat_state = event.value
elif event.type == pygame.QUIT:
raise Exception('Shutdown')
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
raise Exception('Shutdown')
else:
# print 'Unexpected event {} {}'.format(event.type, event)
pass