v2.c (1792B)
1 /* Copyright 2017 MechMerlin <mechmerlin@gmail.com> 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 #include "quantum.h" 17 #include "indicator_leds.h" 18 19 enum BACKLIGHT_AREAS { 20 BACKLIGHT_ALPHAS = 0b00000010, 21 BACKLIGHT_MODNUM = 0b00001000 22 }; 23 24 void backlight_set(uint8_t level) { 25 switch(level) { 26 case 0: 27 PORTB |= BACKLIGHT_ALPHAS; 28 PORTB |= BACKLIGHT_MODNUM; 29 break; 30 case 1: 31 PORTB &= ~BACKLIGHT_ALPHAS; 32 PORTB |= BACKLIGHT_MODNUM; 33 break; 34 case 2: 35 PORTB |= BACKLIGHT_ALPHAS; 36 PORTB &= ~BACKLIGHT_MODNUM; 37 break; 38 case 3: 39 PORTB &= ~BACKLIGHT_ALPHAS; 40 PORTB &= ~BACKLIGHT_MODNUM; 41 break; 42 } 43 } 44 45 bool led_update_kb(led_t led_state) { 46 bool res = led_update_user(led_state); 47 if(res) { 48 bool status[8] = { 49 led_state.scroll_lock, /* LED 3 */ 50 led_state.caps_lock, /* LED 2 */ 51 led_state.num_lock, /* LED 1 */ 52 53 layer_state & (1<<2), /* LED 6 */ 54 layer_state & (1<<1), /* LED 5 */ 55 layer_state & (1<<0) ? 0: 1, /* LED 4 */ 56 57 layer_state & (1<<5), /* LED 8 */ 58 layer_state & (1<<4) /* LED 7 */ 59 }; 60 61 indicator_leds_set(status); 62 } 63 return res; 64 }