v3x.c (2413B)
1 /* Copyright 2022 imchipwood && deveth0 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 2 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 17 #include "quantum.h" 18 19 void keyboard_pre_init_kb(void) { 20 // Set LED IO as outputs 21 gpio_set_pin_output(LED_00); 22 gpio_set_pin_output(LED_01); 23 gpio_set_pin_output(LED_02); 24 keyboard_pre_init_user(); 25 } 26 27 bool shutdown_kb(bool jump_to_bootloader) { 28 if (!shutdown_user(jump_to_bootloader)) { 29 return false; 30 } 31 // Shutdown LEDs 32 gpio_write_pin_low(LED_00); 33 gpio_write_pin_low(LED_01); 34 gpio_write_pin_low(LED_02); 35 return true; 36 } 37 38 layer_state_t layer_state_set_kb(layer_state_t state) { 39 // Layer LEDs act as binary indication of current layer 40 uint8_t layer = get_highest_layer(state); 41 gpio_write_pin(LED_00, layer & 0b1); 42 gpio_write_pin(LED_01, (layer >> 1) & 0b1); 43 uprintf("%d string", layer); 44 return layer_state_set_user(state); 45 } 46 47 // Optional override functions below. 48 // You can leave any or all of these undefined. 49 // These are only required if you want to perform custom actions. 50 51 void matrix_init_kb(void) { 52 // put your keyboard start-up code here 53 // runs once when the firmware starts up 54 uint8_t led_delay_ms = 80; 55 for (int i = 0; i < 2; i++) { 56 gpio_write_pin_high(LED_00); 57 gpio_write_pin_high(LED_01); 58 gpio_write_pin_high(LED_02); 59 wait_ms(led_delay_ms); 60 gpio_write_pin_low(LED_00); 61 gpio_write_pin_low(LED_01); 62 gpio_write_pin_low(LED_02); 63 if (i < 1) { 64 wait_ms(led_delay_ms); 65 } 66 } 67 68 matrix_init_user(); 69 } 70 71 bool led_update_kb(led_t led_state) { 72 if (!led_update_user(led_state)) return false; 73 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here 74 gpio_write_pin(LED_02, !led_state.num_lock); 75 return true; 76 }