summaryrefslogtreecommitdiff
path: root/keyboard/ergodox_ez/keymaps/keymap_dave.c
diff options
context:
space:
mode:
authorDave Jones <dave@waveform.org.uk>2016-01-02 18:23:49 +0000
committerDave Jones <dave@waveform.org.uk>2016-01-02 18:23:49 +0000
commitdcc9948fae588daa0649a94ae342a4b13e631eba (patch)
tree08542cc99ea7c52ef49e3687a10f5b654e113e78 /keyboard/ergodox_ez/keymaps/keymap_dave.c
parent5259f36d03acec1a67d4e8fb63ad05d039ff753b (diff)
Added comments to LED stuff and included .hex file
Diffstat (limited to 'keyboard/ergodox_ez/keymaps/keymap_dave.c')
-rw-r--r--keyboard/ergodox_ez/keymaps/keymap_dave.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/keyboard/ergodox_ez/keymaps/keymap_dave.c b/keyboard/ergodox_ez/keymaps/keymap_dave.c
index b53aed9222..a0c74ad805 100644
--- a/keyboard/ergodox_ez/keymaps/keymap_dave.c
+++ b/keyboard/ergodox_ez/keymaps/keymap_dave.c
@@ -160,16 +160,28 @@ void * matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void * matrix_scan_user(void) {
- static uint8_t leds[4]; // Yes, I'm wasting a byte. Sue me.
+ /* leds is a static array holding the current brightness of each of the
+ * three keyboard LEDs. It's 4 long simply to avoid the ugliness of +1s and
+ * -1s in the code below, and because wasting a byte really doesn't matter
+ * that much (no, it *doesn't*, stop whinging!). Note that because it's
+ * static it'll maintain state across invocations of this routine.
+ */
+ static uint8_t leds[4];
uint8_t led;
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
+ /* Loop over each LED/layer */
for (led = 1; led <= 3; ++led) {
+ /* If the current layer matches the current LED, increment its
+ * brightness by 1 up to a maximum of 255. If the current layer doesn't
+ * match, decrement its brightness by 1 down to a minimum of zero.
+ */
leds[led] += (layer == led) ?
(leds[led] < 255 ? 1 : 0):
(leds[led] > 0 ? -1 : 0);
+ /* Set LED state according to the new brightness */
if (leds[led]) {
ergodox_right_led_on(led);
ergodox_right_led_set(led, leds[led]);