kmk_firmware/docs/led.md
Josh Klar d34e8ce9d2 Re-add LED support
This reverts commit 5b069a0104.
2019-07-17 16:05:40 -07:00

4.8 KiB

LED (Mono color backlight)

Want your keyboard to shine? Add some lights!

[Keycodes]

Key Aliases Description
KC.LED_TOG Toggles LED's
KC.LED_INC Increase Brightness
KC.LED_DEC Decrease Brightness
KC.LED_ANI Increase animation speed
KC.LED_AND Decrease animation speed
KC.LED_MODE_PLAIN LED_M_P Static LED's
KC.LED_MODE_BREATHE LED_M_B Breathing animation

Configuration

Define Default Description
keyboard.led_config['brightness_step'] 5 The number of steps to change the brightness by
keyboard.led_config['brightness_limit'] 100 The maximum brightness level in percent

Built-in Animation Configuration

Define Default Description
keyboard.led_config['breath_center'] 1.5 Used to calculate the curve for the breathing animation. Anywhere from 1.0 - 2.7 is valid

Functions

If you want to create your own animations, or for example, change the lighting in a macro, or a layer switch, here are some functions that are available.

Function Description
keyboard.pixels.increase_brightness(step) Increases hue by a given step
keyboard.pixels.decrease_brightness(step) Decreases hue by a given step
keyboard.pixels.set_brightness(percent) Increases saturation by a given step

Direct variable access

Define Default Description
keyboard.led.brightness 0 Sets the brightness by percent 0-100
keyboard.led.brightness_limit 100 Sets the limit of brightness
keyboard.led.brightness_step 5 Sets the step value to change brightness by
keyboard.led.animation_mode static This can be changed to any modes included, or to something custom for user animations. Any string is valid
keyboard.led.animation_speed 1 Increases animation speed of most animations. Recommended 1-5, Maximum 10.

User animations

User animations can be created as well. An example of a light show would look like this

from kmk.keys import make_key

def start_flicker(*args, **kwargs):
    # Setting mode to user will use the user animation
    keyboard.led.animation_mode = 'user'


def flicker(self):
    # This is the code that is run every cycle that can serve as an animation
    # Refer to the kmk/rgb.py for actual examples of what has been done
    if self.brightness == 0:
        self.brightness = 100
    else:
        self.brightness = 0
    keyboard.led.set_brightness(self.brightness)
    return self


# This is what "gives" your function to KMK so it knows what your animation code is
keyboard.led_config['user_animation'] = flicker

# Makes a key that would start your animation
LS = make_key(on_press=start_flicker())

keymap = [...LS,...]

Troubleshooting

Make sure that your board supports LED backlight by checking for a line with "LED_PIN". If it does not, you can add it to your keymap.

Define Description
keyboard.led_pin The pin connected to the data pin of the LEDs