1- 429 : Too Many Requests
2- For more on scraping GitHub and how it may affect your rights , please review our Terms of Service (https :// docs .github .com / en / site - policy / github - terms / github - terms - of - service ).
1+ # SPDX-FileCopyrightText: 2022 john park & tod kurt for Adafruit Industries
2+ # SPDX-License-Identifier: MIT
3+ # Gemma IO demo - Keyboard emu
4+ # iCade Pinball Edition
5+
6+ import board
7+ from digitalio import DigitalInOut , Pull
8+ from adafruit_debouncer import Debouncer
9+ import usb_hid
10+ from adafruit_hid .keyboard import Keyboard
11+ from adafruit_hid .keycode import Keycode
12+
13+ # Allows three buttons on a Gemma M0 to control iCade standard Pinball Arcade
14+ # game on iOS using USB to Lightning "camera connector"
15+
16+ # iCade keyboard mappings
17+ # See developer doc at: http://www.ionaudio.com/products/details/icade
18+
19+ # WE YT UF IM OG
20+ # AQ< -->DC
21+ # XZ HR JN KP LV
22+
23+ #control key is triggered by a press, doesn't repeat, second control key is
24+ #triggered by a release
25+
26+ # define buttons
27+ num_keys = 3
28+ pins = (
29+ board .D0 , # D0
30+ board .D1 , # D1
31+ board .D2 # D2
32+ )
33+
34+ keys = []
35+
36+ # The keycode pair sent for each button:
37+ # D0 is left flipper - iCade key sequence (hold, release) is "hr"
38+ # D1 is right flipper - iCade key sequence (hold, release) is "lv"
39+ # D2 is plunger - iCade key sequence (hold, release) is "xz"
40+
41+ for pin in pins :
42+ tmp_pin = DigitalInOut (pin )
43+ tmp_pin .pull = Pull .UP
44+ keys .append (Debouncer (tmp_pin ))
45+
46+ keymap_pressed = {
47+ (0 ): ("Left Paddle" , [Keycode .H ]),
48+ (1 ): ("Right Paddle" , [Keycode .L ]),
49+ (2 ): ("Plunger" , [Keycode .X ])
50+ }
51+ keymap_released = {
52+ (0 ): ("Left Paddle" , [Keycode .R ]),
53+ (1 ): ("Right Paddle" , [Keycode .V ]),
54+ (2 ): ("Plunger" , [Keycode .Z ])
55+ }
56+
57+ # the keyboard object
58+ kbd = Keyboard (usb_hid .devices )
59+
60+ print ("\n Welcome to keypad" )
61+ print ("keymap:" )
62+ for k in range (num_keys ):
63+ print ("\t " , (keymap_pressed [k ][0 ]))
64+ print ("Waiting for button presses" )
65+
66+
67+ while True :
68+ for i in range (num_keys ):
69+ keys [i ].update ()
70+ if keys [i ].fell :
71+ print (keymap_pressed [i ][0 ])
72+ kbd .send (* keymap_pressed [i ][1 ])
73+ if keys [i ].rose :
74+ print (keymap_released [i ][0 ])
75+ kbd .send (* keymap_released [i ][1 ])
0 commit comments