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 <fauxpark@gmail.com> * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update docs/custom_quantum_functions.md Co-Authored-By: fauxpark <fauxpark@gmail.com>
This commit is contained in:
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user