From e62ab7e259d4f33c639a9433264c1cbfb6381cb5 Mon Sep 17 00:00:00 2001 From: Yan-Fa Li Date: Fri, 22 Nov 2019 12:55:45 -0800 Subject: Allow overriding of all functions in wonderland.c (#7198) * f * Allow overriding of all functions in wonderland.c - needed for custom LED functions in keymap.c * Example of layer indication via LEDs optimize * Use newer led_update_kb and led_update_user hooks - these allow overriding without use of __attribute((weak))__ * Update led documentation a bit - clarify some of the wording around how to use led_update_user * Update led_update_user example * Update audio example to be complete * trailing spaces smh * spaces * spaces * smh * Less code is good * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark --- .../maartenwut/wonderland/keymaps/default/keymap.c | 30 ++++++++++++++++++++++ keyboards/maartenwut/wonderland/wonderland.c | 28 ++++++++------------ 2 files changed, 40 insertions(+), 18 deletions(-) (limited to 'keyboards/maartenwut') diff --git a/keyboards/maartenwut/wonderland/keymaps/default/keymap.c b/keyboards/maartenwut/wonderland/keymaps/default/keymap.c index ccb022f68..da03d7615 100755 --- a/keyboards/maartenwut/wonderland/keymaps/default/keymap.c +++ b/keyboards/maartenwut/wonderland/keymaps/default/keymap.c @@ -22,3 +22,33 @@ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX _______, KC_LALT, _______, _______, _______, KC_RALT, _______ \ ) }; + +#ifdef USE_LEDS_FOR_LAYERS +// example of how to use LEDs as layer indicators +static uint8_t top = 1; +static uint8_t middle = 0; +static uint8_t bottom = 0; + +layer_state_t layer_state_set_user(layer_state_t state) { + top = middle = bottom = 0; + switch (get_highest_layer(state)) { + case _BASE: + top = 1; + break; + case _FUNC: + middle = 1; + break; + default: // for any other layers, or the default layer + break; + } + return state; +} + +// override kb level function +bool led_update_user(led_t usb_led) { + writePin(B1, !top); + writePin(B2, !middle); + writePin(B3, !bottom); + return false; // we are using LEDs for something else override kb +} +#endif diff --git a/keyboards/maartenwut/wonderland/wonderland.c b/keyboards/maartenwut/wonderland/wonderland.c index 9f3233e0f..441544381 100755 --- a/keyboards/maartenwut/wonderland/wonderland.c +++ b/keyboards/maartenwut/wonderland/wonderland.c @@ -1,5 +1,6 @@ #include "wonderland.h" +__attribute__ ((weak)) void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up @@ -7,12 +8,14 @@ void matrix_init_kb(void) { led_init_ports(); }; +__attribute__ ((weak)) void matrix_scan_kb(void) { // put your looping keyboard code here // runs every cycle (a lot) matrix_scan_user(); }; +__attribute__ ((weak)) void led_init_ports(void) { // * Set our LED pins as output setPinOutput(B1); @@ -20,23 +23,12 @@ void led_init_ports(void) { setPinOutput(B3); } -void led_set_kb(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { - writePinLow(B1); - } else { - writePinHigh(B1); +bool led_update_kb(led_t led_state) { + bool runDefault = led_update_user(led_state); + if (runDefault) { + writePin(B1, !led_state.num_lock); + writePin(B2, !led_state.caps_lock); + writePin(B3, !led_state.scroll_lock); } - - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(B2); - } else { - writePinHigh(B2); - } - - if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) { - writePinLow(B3); - } else { - writePinHigh(B3); - } - led_set_user(usb_led); + return runDefault; } -- cgit v1.2.3