]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboard/ergodox_ez/keymaps/keymap_dave.c
Added comments to LED stuff and included .hex file
[qmk_firmware.git] / keyboard / ergodox_ez / keymaps / keymap_dave.c
index b53aed92226d8d92339b785d3129719c70c8410e..a0c74ad8054bf6c18b5eb42517d1fe998a6c8889 100644 (file)
@@ -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]);