diff options
Diffstat (limited to 'keyboards/duck/lightsaver/lightsaver.c')
-rw-r--r-- | keyboards/duck/lightsaver/lightsaver.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/keyboards/duck/lightsaver/lightsaver.c b/keyboards/duck/lightsaver/lightsaver.c new file mode 100644 index 000000000..e0fe918e7 --- /dev/null +++ b/keyboards/duck/lightsaver/lightsaver.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* Copyright 2017 Rasmus Schults <[email protected]> | ||
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 "lightsaver.h" | ||
17 | #include "indicator_leds.h" | ||
18 | |||
19 | enum BACKLIGHT_AREAS { | ||
20 | BACKLIGHT_ALPHAS = 0b00000010, // Alpha keys | ||
21 | BACKLIGHT_FKEYS = 0b00000100, // Function row keys | ||
22 | BACKLIGHT_MODNUM = 0b00001000, // Modifiers and number row | ||
23 | BACKLIGHT_NUMPAD = 0b01000000 // Numpad area | ||
24 | }; | ||
25 | |||
26 | void backlight_set(uint8_t level) { | ||
27 | if (level > 0) { | ||
28 | // Turn on leds | ||
29 | PORTB &= ~BACKLIGHT_ALPHAS; | ||
30 | PORTB &= ~BACKLIGHT_FKEYS; | ||
31 | PORTB &= ~BACKLIGHT_MODNUM; | ||
32 | PORTE &= ~BACKLIGHT_NUMPAD; | ||
33 | } else { | ||
34 | // Turn off leds | ||
35 | PORTB |= BACKLIGHT_ALPHAS; | ||
36 | PORTB |= BACKLIGHT_FKEYS; | ||
37 | PORTB |= BACKLIGHT_MODNUM; | ||
38 | PORTE |= BACKLIGHT_NUMPAD; | ||
39 | } | ||
40 | } | ||
41 | |||
42 | void led_set_kb(uint8_t usb_led) { | ||
43 | bool leds[8] = { | ||
44 | usb_led & (1<<USB_LED_CAPS_LOCK), | ||
45 | usb_led & (1<<USB_LED_SCROLL_LOCK), | ||
46 | usb_led & (1<<USB_LED_NUM_LOCK), | ||
47 | layer_state & (1<<1), | ||
48 | layer_state & (1<<2), | ||
49 | layer_state & (1<<3), | ||
50 | layer_state & (1<<4), | ||
51 | layer_state & (1<<5) | ||
52 | }; | ||
53 | indicator_leds_set(leds); | ||
54 | |||
55 | led_set_user(usb_led); | ||
56 | } | ||