]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/kmac/kmac.c
[Keyboard] Modernize KMAC (#6131)
[qmk_firmware.git] / keyboards / kmac / kmac.c
1 /* Copyright 2017-2019 Mathias Andersson <wraul@dbox.se>
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 "kmac.h"
17
18 #define CAPS_PIN B0
19 #define SCROLL_PIN E6
20 #define F_ROW_MASK 0b01
21 #define WASD_MASK 0b10
22
23 // Optional override functions below.
24 // You can leave any or all of these undefined.
25 // These are only required if you want to perform custom actions.
26
27 void matrix_init_kb(void) {
28     // put your keyboard start-up code here
29     // runs once when the firmware starts up
30     setPinOutput(CAPS_PIN);
31     setPinOutput(SCROLL_PIN);
32
33     matrix_init_user();
34 }
35
36 /*
37
38 void matrix_scan_kb(void) {
39   // put your looping keyboard code here
40   // runs every cycle (a lot)
41
42   matrix_scan_user();
43 }
44
45 bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
46   // put your per-action keyboard code here
47   // runs for every action, just before processing by the firmware
48
49   return process_record_user(keycode, record);
50 }
51
52 */
53
54 /* LED pin configuration
55  * Scroll Lock: Low PE6
56  * Caps Lock: Low PB0
57  */
58 void led_set_kb(uint8_t usb_led) {
59     if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
60         writePinLow(CAPS_PIN);
61     } else {
62         writePinHigh(CAPS_PIN);
63     }
64
65     if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
66         writePinLow(SCROLL_PIN);
67     } else {
68         writePinHigh(SCROLL_PIN);
69     }
70
71     led_set_user(usb_led);
72 }
73
74 void backlight_init_ports(void) {
75     setPinOutput(B1);
76     setPinOutput(B2);
77     setPinOutput(B3);
78     setPinOutput(B4);
79     setPinOutput(D7);
80 }
81
82 /* Backlight pin configuration
83  * F-row: High PB1
84  * W: Low PB4
85  * A: Low PB2
86  * S: Low PB3
87  * D: Low PD7
88  */
89 void backlight_set(uint8_t level) {
90     // F-row
91     if (level & F_ROW_MASK) {
92         writePinHigh(B1);
93     } else {
94         writePinLow(B1);
95     }
96
97     // WASD
98     if (level & WASD_MASK) {
99         writePinLow(B2);
100         writePinLow(B3);
101         writePinLow(B4);
102         writePinLow(D7);
103     } else {
104         writePinHigh(B2);
105         writePinHigh(B3);
106         writePinHigh(B4);
107         writePinHigh(D7);
108     }
109 }