Compare commits

..

No commits in common. "picamera" and "alt-mode" have entirely different histories.

1 changed files with 11 additions and 25 deletions

34
code.py
View File

@ -19,7 +19,6 @@
import time
import board
import digitalio
import rotaryio
import usb_hid
# Regular keys
@ -27,10 +26,6 @@ from adafruit_hid.keyboard import Keyboard
from keyboard_layout_win_fr import KeyboardLayout
from keycode_win_fr import Keycode
# Rotary encoder setup
enc = rotaryio.IncrementalEncoder(board.GP0, board.GP1)
last_pos = 0
# When in ALT mode, buttons use an alternative keycode.
ALT = False
@ -40,22 +35,22 @@ keyboard_layout = KeyboardLayout(keyboard)
# Buttons setup
buttons_gpio = {
# name GPIO Keycode_1 Keycode_2(ALT mode) State DigitalIO Pull (Switch)
"red" : dict(gpio=board.GP18, keycode_1=Keycode.DELETE, keycode_2=Keycode.E, state=False, DIO=None, pullr=digitalio.Pull.DOWN),
"green" : dict(gpio=board.GP19, keycode_1=Keycode.SPACEBAR, keycode_2=Keycode.RETURN, state=False, DIO=None, pullr=digitalio.Pull.DOWN),
"blue" : dict(gpio=board.GP16, keycode_1=Keycode.RIGHT_ARROW, keycode_2=Keycode.UP_ARROW, state=False, DIO=None, pullr=digitalio.Pull.DOWN),
"black" : dict(gpio=board.GP20, keycode_1=Keycode.O, keycode_2=Keycode.R, state=False, DIO=None, pullr=digitalio.Pull.DOWN),
"yellow": dict(gpio=board.GP17, keycode_1=Keycode.LEFT_ARROW, keycode_2=Keycode.DOWN_ARROW,state=False, DIO=None, pullr=digitalio.Pull.DOWN),
"switch": dict(gpio=board.GP21, keycode_1=None, keycode_2=None, state=False, DIO=None, pullr=digitalio.Pull.DOWN, switch_setup=dict(gpio=board.GP7, state=False, DIO=None)),
"fn_1": dict(gpio=board.GP15, keycode_1=Keycode.W, keycode_2=Keycode.X, state=False, DIO=None, pullr=digitalio.Pull.DOWN),
"fn_2": dict(gpio=board.GP14, keycode_1=Keycode.L, keycode_2=Keycode.F, state=False, DIO=None, pullr=digitalio.Pull.DOWN),
# name GPIO Keycode_1 Keycode_2(ALT mode) State DigitalIO (switch)
"red" : dict(gpio=board.GP18, keycode_1=Keycode.DELETE, keycode_2=Keycode.E, state=False, DIO=None),
"green" : dict(gpio=board.GP19, keycode_1=Keycode.SPACEBAR, keycode_2=Keycode.RETURN, state=False, DIO=None),
"blue" : dict(gpio=board.GP16, keycode_1=Keycode.RIGHT_ARROW, keycode_2=Keycode.UP_ARROW, state=False, DIO=None),
"black" : dict(gpio=board.GP20, keycode_1=Keycode.O, keycode_2=Keycode.R, state=False, DIO=None),
"yellow": dict(gpio=board.GP17, keycode_1=Keycode.LEFT_ARROW, keycode_2=Keycode.DOWN_ARROW,state=False, DIO=None),
"switch": dict(gpio=board.GP21, keycode_1=None, keycode_2=None, state=False, DIO=None, switch_setup=dict(gpio=board.GP7, state=False, DIO=None)),
"fn_1": dict(gpio=board.GP15, keycode_1=Keycode.W, keycode_2=Keycode.X, state=False, DIO=None),
"fn_2": dict(gpio=board.GP14, keycode_1=Keycode.L, keycode_2=Keycode.F, state=False, DIO=None),
}
# GPIO setup
for btn in buttons_gpio:
buttons_gpio[btn]['DIO'] = digitalio.DigitalInOut(buttons_gpio[btn]['gpio'])
buttons_gpio[btn]['DIO'].direction = digitalio.Direction.INPUT
buttons_gpio[btn]['DIO'].pull = buttons_gpio[btn]['pullr']
buttons_gpio[btn]['DIO'].pull = digitalio.Pull.DOWN
# Switch setup
if 'switch_setup' in buttons_gpio[btn]:
buttons_gpio[btn]['switch_setup']['DIO'] = digitalio.DigitalInOut(buttons_gpio[btn]['switch_setup']['gpio'])
@ -93,13 +88,4 @@ while True:
if buttons_gpio[btn]['switch_setup']['DIO'].value:
buttons_gpio[btn]['switch_setup']['DIO'].value = False
ALT = False
pos = enc.position
if pos > last_pos:
if ALT:
keyboard.send(Keycode.Q)
else:
keyboard.send(Keycode.A)
elif pos < last_pos:
keyboard.send(Keycode.Z)
last_pos = pos
time.sleep(btn_scan_delay)