diff --git a/code/code_eigenbau.py b/code/code_eigenbau.py new file mode 100644 index 0000000..33beeff --- /dev/null +++ b/code/code_eigenbau.py @@ -0,0 +1,132 @@ +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