133 lines
4.1 KiB
Python
133 lines
4.1 KiB
Python
|
import board
|
||
|
import time
|
||
|
from keybow2040 import Keybow2040
|
||
|
|
||
|
import usb_hid
|
||
|
from adafruit_hid.keyboard import Keyboard
|
||
|
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
|
||
|
from adafruit_hid.keycode import Keycode
|
||
|
|
||
|
from adafruit_hid.consumer_control import ConsumerControl
|
||
|
from adafruit_hid.consumer_control_code import ConsumerControlCode
|
||
|
|
||
|
# Set up Keybow
|
||
|
i2c = board.I2C()
|
||
|
keybow = Keybow2040(i2c)
|
||
|
keys = keybow.keys
|
||
|
|
||
|
# Set up the keyboard and layout
|
||
|
keyboard = Keyboard(usb_hid.devices)
|
||
|
layout = KeyboardLayoutUS(keyboard)
|
||
|
|
||
|
# Set up consumer control (used to send media key presses)
|
||
|
consumer_control = ConsumerControl(usb_hid.devices)
|
||
|
|
||
|
# Our layers. The key of item in the layer dictionary is the key number on
|
||
|
# Keybow to map to, and the value is the key press to send.
|
||
|
|
||
|
# Note that keys 0-3 are reserved as the modifier and layer selector keys
|
||
|
# respectively.
|
||
|
|
||
|
layer_0 = {}
|
||
|
|
||
|
layer_1 = {4: Keycode.PERIOD,
|
||
|
5: Keycode.ONE,
|
||
|
6: Keycode.FOUR,
|
||
|
7: Keycode.SEVEN,
|
||
|
8: Keycode.ZERO,
|
||
|
9: Keycode.TWO,
|
||
|
10: Keycode.FIVE,
|
||
|
11: Keycode.EIGHT,
|
||
|
12: Keycode.ENTER,
|
||
|
13: Keycode.THREE,
|
||
|
14: Keycode.SIX,
|
||
|
15: Keycode.NINE}
|
||
|
|
||
|
layer_2 = {4: "Mit freundlichen Gruessen\nMichael Grote "
|
||
|
}
|
||
|
|
||
|
layer_3 = {6: ConsumerControlCode.VOLUME_DECREMENT,
|
||
|
7: ConsumerControlCode.SCAN_PREVIOUS_TRACK,
|
||
|
10: ConsumerControlCode.MUTE,
|
||
|
11: ConsumerControlCode.PLAY_PAUSE,
|
||
|
14: ConsumerControlCode.VOLUME_INCREMENT,
|
||
|
15: ConsumerControlCode.SCAN_NEXT_TRACK}
|
||
|
|
||
|
layers = {0: layer_0,
|
||
|
1: layer_1,
|
||
|
2: layer_2,
|
||
|
3: layer_3}
|
||
|
|
||
|
current_layer = 1
|
||
|
nutzbare_tasten = range(4,16) #zählt von 1-16; nicht 0-15
|
||
|
|
||
|
# The colours for each layer
|
||
|
# https://gist.github.com/ninrod/b0f86d77ebadaccf7d9d4431dd8e2983
|
||
|
# https://colorhunt.co/palette/f7fd04f9b208f98404fc5404
|
||
|
|
||
|
# setze farben auf layer keys
|
||
|
keybow.keys[0].set_led(247, 253, 4)
|
||
|
keybow.keys[1].set_led(249, 178, 8)
|
||
|
keybow.keys[2].set_led(249, 132, 4)
|
||
|
keybow.keys[3].set_led(252, 84, 4)
|
||
|
for n in nutzbare_tasten:
|
||
|
keybow.keys[n].set_led(255,155,255)
|
||
|
|
||
|
while True:
|
||
|
# Always remember to call keybow.update()!
|
||
|
keybow.update()
|
||
|
|
||
|
|
||
|
if keys[0].pressed:
|
||
|
current_layer = 0
|
||
|
for n in nutzbare_tasten:
|
||
|
keybow.keys[n].set_led(247, 253, 4)
|
||
|
keybow.keys[0].set_led(247, 253, 4)
|
||
|
keybow.keys[1].set_led(255, 255, 255)
|
||
|
keybow.keys[2].set_led(255, 255, 255)
|
||
|
keybow.keys[3].set_led(255, 255, 255)
|
||
|
elif keys[1].pressed:
|
||
|
current_layer = 1
|
||
|
for n in nutzbare_tasten:
|
||
|
keybow.keys[n].set_led(249, 178, 8)
|
||
|
keybow.keys[0].set_led(255, 255, 255)
|
||
|
keybow.keys[1].set_led(249, 178, 8)
|
||
|
keybow.keys[2].set_led(255, 255, 255)
|
||
|
keybow.keys[3].set_led(255, 255, 255)
|
||
|
elif keys[2].pressed:
|
||
|
current_layer = 2
|
||
|
for n in nutzbare_tasten:
|
||
|
keybow.keys[n].set_led(249, 132, 4)
|
||
|
keybow.keys[0].set_led(255, 255, 255)
|
||
|
keybow.keys[1].set_led(255, 255, 255)
|
||
|
keybow.keys[2].set_led(249, 132, 4)
|
||
|
keybow.keys[3].set_led(255, 255, 255)
|
||
|
elif keys[3].pressed:
|
||
|
current_layer = 3
|
||
|
for n in nutzbare_tasten:
|
||
|
keybow.keys[n].set_led(252, 84, 4)
|
||
|
keybow.keys[0].set_led(255, 255, 255)
|
||
|
keybow.keys[1].set_led(255, 255, 255)
|
||
|
keybow.keys[2].set_led(255, 255, 255)
|
||
|
keybow.keys[3].set_led(252, 84, 4)
|
||
|
|
||
|
for taste in layers[current_layer].keys():
|
||
|
if keys[taste].pressed:
|
||
|
key_press = layers[current_layer][taste]
|
||
|
if current_layer == 0:
|
||
|
keyboard.send(key_press)
|
||
|
elif current_layer == 1:
|
||
|
keyboard.send(key_press)
|
||
|
elif current_layer == 2:
|
||
|
layout.write(key_press)
|
||
|
elif current_layer == 3:
|
||
|
consumer_control.send(key_press)
|
||
|
|
||
|
|
||
|
# keycode = current_layer[key.number]
|
||
|
# if keys[taste].pressed:
|
||
|
# keyboard.send(keycode)
|
||
|
|
||
|
|
||
|
# farben als vars
|