Adafruit_Learning_System_Gu.../PyRuler_Video_Panic/code.py

97 lines
2.8 KiB
Python

import os
import board
from digitalio import DigitalInOut, Direction
import time
import touchio
# Set this to True to turn the touchpads into a keyboard
ENABLE_KEYBOARD = True
# Used if we do HID output, see below
if ENABLE_KEYBOARD:
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
import usb_hid
kbd = Keyboard(usb_hid.devices)
layout = KeyboardLayoutUS(kbd)
#print(dir(board), os.uname()) # Print a little about ourselves
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
touches = [DigitalInOut(board.CAP0)]
for p in (board.CAP1, board.CAP2, board.CAP3):
touches.append(touchio.TouchIn(p))
leds = []
for p in (board.LED4, board.LED5, board.LED6, board.LED7):
led = DigitalInOut(p)
led.direction = Direction.OUTPUT
led.value = True
time.sleep(0.25)
leds.append(led)
for led in leds:
led.value = False
cap_touches = [False, False, False, False]
def read_caps():
t0_count = 0
t0 = touches[0]
t0.direction = Direction.OUTPUT
t0.value = True
t0.direction = Direction.INPUT
# funky idea but we can 'diy' the one non-hardware captouch device by hand
# by reading the drooping voltage on a tri-state pin.
t0_count = t0.value + t0.value + t0.value + t0.value + t0.value + \
t0.value + t0.value + t0.value + t0.value + t0.value + \
t0.value + t0.value + t0.value + t0.value + t0.value
cap_touches[0] = t0_count > 2
cap_touches[1] = touches[1].raw_value > 3000
cap_touches[2] = touches[2].raw_value > 3000
cap_touches[3] = touches[3].raw_value > 3000
return cap_touches
while True:
caps = read_caps()
print(caps)
# light up the matching LED
for i,c in enumerate(caps):
leds[i].value = c
if caps[0]:
if ENABLE_KEYBOARD:
# Zoom
kbd.press(Keycode.ALT, Keycode.V)
kbd.release(Keycode.V)
time.sleep(0.25)
kbd.press(Keycode.A)
kbd.release_all()
if caps[1]:
if ENABLE_KEYBOARD:
# Teams
# Note that video toggle doesn't work in the web app
kbd.press(Keycode.CONTROL, Keycode.SHIFT, Keycode.M)
kbd.release(Keycode.M)
time.sleep(0.5)
kbd.press(Keycode.O)
kbd.release_all()
if caps[2]:
if ENABLE_KEYBOARD:
# Skype
kbd.press(Keycode.CONTROL, Keycode.M)
kbd.release(Keycode.M)
time.sleep(0.5)
kbd.press(Keycode.SHIFT, Keycode.K)
kbd.release_all()
if caps[3]:
if ENABLE_KEYBOARD:
# Jitsi
kbd.press(Keycode.M)
kbd.release(Keycode.M)
time.sleep(0.5)
kbd.press(Keycode.V)
kbd.release_all()
time.sleep(.2)