#include <hal.h> #include "usb_main.h" #include "phoenix.h" void bootmagic_lite(void) { matrix_scan(); wait_ms(5); matrix_scan(); if ((matrix_get_row(0) & 1) || (matrix_get_row(6) & 1)) { palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOB, 5, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOB, 6, PAL_MODE_OUTPUT_PUSHPULL); led1_off(); led2_off(); led3_off(); led3_on(); wait_ms(50); led2_on(); wait_ms(50); led1_on(); wait_ms(50); led3_off(); wait_ms(50); led2_off(); wait_ms(50); led1_off(); wait_ms(50); bootloader_jump(); } } void keyboard_pre_init_kb(void) { palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOB, 5, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOB, 6, PAL_MODE_OUTPUT_PUSHPULL); led1_off(); led2_off(); led3_off(); keyboard_pre_init_user(); } void keyboard_post_init_kb(void) { led1_on(); wait_ms(50); led2_on(); wait_ms(50); led3_on(); wait_ms(50); led1_off(); wait_ms(50); led2_off(); wait_ms(50); led3_off(); wait_ms(50); keyboard_post_init_user(); } void manipulate_led(uint32_t led, bool on) { switch (led) { case 1: on ? led1_on() : led1_off(); case 2: on ? led2_on() : led2_off(); case 3: on ? led3_on() : led3_off(); } } layer_state_t layer_state_set_kb(uint32_t state) { state = layer_state_set_user(state); uint8_t layer = get_highest_layer(state); manipulate_led(1, layer & 1); manipulate_led(2, layer >> 1 & 1); manipulate_led(3, layer >> 2 & 1); return state; }