Parcourir la source

slight tweak to gamepad input code

Thomas Buck il y a 8 mois
Parent
révision
c70d975e83
8 fichiers modifiés avec 47 ajouts et 115 suppressions
  1. 1
    14
      breakout.py
  2. 40
    17
      gamepad.py
  3. 1
    14
      mapper.py
  4. 1
    14
      pico.py
  5. 1
    14
      runner.py
  6. 1
    14
      snake.py
  7. 1
    14
      tetris.py
  8. 1
    14
      weather.py

+ 1
- 14
breakout.py Voir le fichier

81
 
81
 
82
         self.place()
82
         self.place()
83
 
83
 
84
-        self.old_keys = {
85
-            "left": False,
86
-            "right": False,
87
-            "up": False,
88
-            "down": False,
89
-            "a": False,
90
-            "b": False,
91
-            "x": False,
92
-            "y": False,
93
-            "l": False,
94
-            "r": False,
95
-            "start": False,
96
-            "select": False,
97
-        }
84
+        self.old_keys = self.input.empty() # TODO support missing input
98
 
85
 
99
     def finished(self):
86
     def finished(self):
100
         if self.input == None:
87
         if self.input == None:

+ 40
- 17
gamepad.py Voir le fichier

17
     def __init__(self):
17
     def __init__(self):
18
         self.devices = []
18
         self.devices = []
19
         self.selector = DefaultSelector()
19
         self.selector = DefaultSelector()
20
-        self.keys = {
21
-            "left": False,
22
-            "right": False,
23
-            "up": False,
24
-            "down": False,
25
-            "a": False,
26
-            "b": False,
27
-            "x": False,
28
-            "y": False,
29
-            "l": False,
30
-            "r": False,
31
-            "start": False,
32
-            "select": False,
33
-        }
20
+        self.keys = self.empty()
34
 
21
 
35
         devices = [InputDevice(path) for path in list_devices()]
22
         devices = [InputDevice(path) for path in list_devices()]
36
         for device in devices:
23
         for device in devices:
58
             self.devices.append(d)
45
             self.devices.append(d)
59
             self.selector.register(d, EVENT_READ)
46
             self.selector.register(d, EVENT_READ)
60
 
47
 
48
+    def empty(self):
49
+        return {
50
+            "left": False,
51
+            "right": False,
52
+            "up": False,
53
+            "down": False,
54
+            "a": False,
55
+            "b": False,
56
+            "x": False,
57
+            "y": False,
58
+            "l": False,
59
+            "r": False,
60
+            "start": False,
61
+            "select": False,
62
+            "l2": False,
63
+            "r2": False,
64
+        }
65
+
61
     def get(self, verbose = False):
66
     def get(self, verbose = False):
62
         for key, mask in self.selector.select(0):
67
         for key, mask in self.selector.select(0):
63
             device = key.fileobj
68
             device = key.fileobj
87
                         self.keys["r"] = v
92
                         self.keys["r"] = v
88
                     elif (event.code == ecodes.BTN_TOP2) or (event.code == ecodes.KEY_A):
93
                     elif (event.code == ecodes.BTN_TOP2) or (event.code == ecodes.KEY_A):
89
                         self.keys["l"] = v
94
                         self.keys["l"] = v
95
+                    elif event.code == ecodes.BTN_BASE:
96
+                        self.keys["r2"] = v
97
+                    elif event.code == ecodes.BTN_BASE2:
98
+                        self.keys["l2"] = v
90
                     elif (event.code == ecodes.BTN_BASE4) or (event.code == ecodes.KEY_BACKSPACE):
99
                     elif (event.code == ecodes.BTN_BASE4) or (event.code == ecodes.KEY_BACKSPACE):
91
                         self.keys["start"] = v
100
                         self.keys["start"] = v
92
                     elif event.code == ecodes.BTN_BASE3:
101
                     elif event.code == ecodes.BTN_BASE3:
113
                         else:
122
                         else:
114
                             self.keys["down"] = False
123
                             self.keys["down"] = False
115
                             self.keys["up"] = False
124
                             self.keys["up"] = False
125
+                elif event.type == ecodes.EV_SYN:
126
+                    continue # don't print sync events
116
 
127
 
117
                 if verbose:
128
                 if verbose:
118
-                    print(categorize(event), event)
129
+                    print(categorize(event))
130
+                    print(event)
131
+                    print()
119
 
132
 
120
         return self.keys
133
         return self.keys
121
 
134
 
123
     from pprint import pprint
136
     from pprint import pprint
124
     import sys
137
     import sys
125
 
138
 
126
-    if len(sys.argv) > 1:
139
+    if (len(sys.argv) > 1) and (sys.argv[1] == "list"):
127
         devices = [InputDevice(path) for path in list_devices()]
140
         devices = [InputDevice(path) for path in list_devices()]
128
         for device in devices:
141
         for device in devices:
129
             print(device.path, device.name, device.phys)
142
             print(device.path, device.name, device.phys)
130
             pprint(device.capabilities(verbose=True))
143
             pprint(device.capabilities(verbose=True))
131
             print()
144
             print()
132
-    else:
145
+    elif (len(sys.argv) > 1) and (sys.argv[1] == "events"):
133
         i = InputWrapper()
146
         i = InputWrapper()
147
+        last_keys = None
134
         while True:
148
         while True:
135
             i.get(True)
149
             i.get(True)
150
+    else:
151
+        i = InputWrapper()
152
+        last_keys = None
153
+        while True:
154
+            keys = i.get()
155
+            if (last_keys == None) or (keys != last_keys):
156
+                pprint(keys)
157
+                print()
158
+                last_keys = keys.copy()

+ 1
- 14
mapper.py Voir le fichier

109
         self.refresh = 60 * 60 * 6
109
         self.refresh = 60 * 60 * 6
110
         self.factor = 1.0
110
         self.factor = 1.0
111
         self.user_mod = None
111
         self.user_mod = None
112
-        self.old_keys = {
113
-            "left": False,
114
-            "right": False,
115
-            "up": False,
116
-            "down": False,
117
-            "a": False,
118
-            "b": False,
119
-            "x": False,
120
-            "y": False,
121
-            "l": False,
122
-            "r": False,
123
-            "start": False,
124
-            "select": False,
125
-        }
112
+        self.old_keys = self.input.empty() # TODO support missing input
126
 
113
 
127
     def fetch(self):
114
     def fetch(self):
128
         if useNTP:
115
         if useNTP:

+ 1
- 14
pico.py Voir le fichier

291
 class PicoInput:
291
 class PicoInput:
292
     def __init__(self):
292
     def __init__(self):
293
         self.gui = None
293
         self.gui = None
294
-        self.keys = {
295
-            "left": False,
296
-            "right": False,
297
-            "up": False,
298
-            "down": False,
299
-            "a": False,
300
-            "b": False,
301
-            "x": False,
302
-            "y": False,
303
-            "l": False,
304
-            "r": False,
305
-            "start": False,
306
-            "select": False,
307
-        }
294
+        self.keys = self.input.empty() # TODO support missing input
308
 
295
 
309
     def get(self):
296
     def get(self):
310
         if self.gui != None:
297
         if self.gui != None:

+ 1
- 14
runner.py Voir le fichier

40
 
40
 
41
         self.player = [ int(self.gui.width / 2), int(self.gui.height / 2) ]
41
         self.player = [ int(self.gui.width / 2), int(self.gui.height / 2) ]
42
 
42
 
43
-        self.old_keys = {
44
-            "left": False,
45
-            "right": False,
46
-            "up": False,
47
-            "down": False,
48
-            "a": False,
49
-            "b": False,
50
-            "x": False,
51
-            "y": False,
52
-            "l": False,
53
-            "r": False,
54
-            "start": False,
55
-            "select": False,
56
-        }
43
+        self.old_keys = self.input.empty() # TODO support missing input
57
 
44
 
58
     def finished(self):
45
     def finished(self):
59
         if self.input == None:
46
         if self.input == None:

+ 1
- 14
snake.py Voir le fichier

49
         DrawText = util.getTextDrawer()
49
         DrawText = util.getTextDrawer()
50
         self.text = DrawText(self.gui, self.text_c)
50
         self.text = DrawText(self.gui, self.text_c)
51
 
51
 
52
-        self.old_keys = {
53
-            "left": False,
54
-            "right": False,
55
-            "up": False,
56
-            "down": False,
57
-            "a": False,
58
-            "b": False,
59
-            "x": False,
60
-            "y": False,
61
-            "l": False,
62
-            "r": False,
63
-            "start": False,
64
-            "select": False,
65
-        }
52
+        self.old_keys = self.input.empty() # TODO support missing input
66
 
53
 
67
         self.placeDot()
54
         self.placeDot()
68
 
55
 

+ 1
- 14
tetris.py Voir le fichier

145
         self.data = [[self.bg for y in range(self.height)] for x in range(self.width)]
145
         self.data = [[self.bg for y in range(self.height)] for x in range(self.width)]
146
         self.piece = None
146
         self.piece = None
147
         self.next_piece = None
147
         self.next_piece = None
148
-        self.old_keys = {
149
-            "left": False,
150
-            "right": False,
151
-            "up": False,
152
-            "down": False,
153
-            "a": False,
154
-            "b": False,
155
-            "x": False,
156
-            "y": False,
157
-            "l": False,
158
-            "r": False,
159
-            "start": False,
160
-            "select": False,
161
-        }
148
+        self.old_keys = self.input.empty() # TODO support missing input
162
         self.pause = False
149
         self.pause = False
163
 
150
 
164
     def finished(self):
151
     def finished(self):

+ 1
- 14
weather.py Voir le fichier

85
 
85
 
86
     def restart(self):
86
     def restart(self):
87
         self.state = 0
87
         self.state = 0
88
-        self.old_keys = {
89
-            "left": False,
90
-            "right": False,
91
-            "up": False,
92
-            "down": False,
93
-            "a": False,
94
-            "b": False,
95
-            "x": False,
96
-            "y": False,
97
-            "l": False,
98
-            "r": False,
99
-            "start": False,
100
-            "select": False,
101
-        }
88
+        self.old_keys = self.input.empty() # TODO support missing input
102
         self.done = False
89
         self.done = False
103
         self.last = time.time()
90
         self.last = time.time()
104
 
91
 

Chargement…
Annuler
Enregistrer