]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/eagle_viper/v2/v2.c
Putting my ducks in a row: Octagon V1/V2 (#3765)
[qmk_firmware.git] / keyboards / eagle_viper / v2 / v2.c
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 "v2.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 // Port from backlight_update_state
46 void led_set_kb(uint8_t usb_led) {
47     bool status[8] = {
48     host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK), /* LED 3 */
49     host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK),   /* LED 2 */
50     host_keyboard_leds() & (1<<USB_LED_NUM_LOCK),    /* LED 1 */
51
52     layer_state & (1<<2),                            /* LED 6 */
53     layer_state & (1<<1),                            /* LED 5 */
54     layer_state & (1<<0) ? 0: 1,                     /* LED 4 */
55
56     layer_state & (1<<5),                            /* LED 8 */
57     layer_state & (1<<4)                             /* LED 7 */
58   };
59
60   indicator_leds_set(status);
61 }
62
63 bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
64   return process_record_user(keycode, record);
65 }