aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin T.A. Gray <colinta@gmail.com>2017-12-03 08:21:10 -0700
committerJack Humbert <jack.humb@gmail.com>2017-12-04 18:16:07 -0500
commitd299d0e72dd96b73b745cad12977a719a0d71cd4 (patch)
treea3114c78a70d01315380d3f7c0b7fd91e639e1ca
parent6fddb31c4c7dd96203e76ec9ba204c02bb86f060 (diff)
downloadqmk_firmware-d299d0e72dd96b73b745cad12977a719a0d71cd4.tar.gz
qmk_firmware-d299d0e72dd96b73b745cad12977a719a0d71cd4.zip
adds led control functions to XD75 layout
-rw-r--r--keyboards/xd75/readme.md40
-rw-r--r--keyboards/xd75/xd75.c62
-rw-r--r--keyboards/xd75/xd75.h16
3 files changed, 118 insertions, 0 deletions
diff --git a/keyboards/xd75/readme.md b/keyboards/xd75/readme.md
index 5f4d2e85f..e11ce7dca 100644
--- a/keyboards/xd75/readme.md
+++ b/keyboards/xd75/readme.md
@@ -26,6 +26,46 @@ firmware likely requires a command line like:
26$ sudo make xd75:default:dfu 26$ sudo make xd75:default:dfu
27``` 27```
28 28
29### LED control
30
31There are 3 individual LEDs that can be turned on and off, plus the keycap LEDs (which are all wired into the same pin). The functions are named according to how they're labeled on the PCB.
32
33TODO: it would be nice to have PWM support on these LEDs for fade-in/fade-out effects.
34
35```c
36capslock_led_on();
37gp100_led_on();
38gp103_led_on();
39keycaps_led_on();
40
41
42// led_set_user example - you could also turn these on/off in response
43// to events in process_record_user or matrix_scan_user
44void led_set_user(uint8_t usb_led) {
45 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
46 capslock_led_on();
47 } else {
48 capslock_led_off();
49 }
50
51 if (some_custom_state) {
52 gp100_led_on();
53 }
54 else {
55 gp100_led_off();
56 }
57}
58```
59
60For the curious:
61
62```
63CAPSLOCK_LED B2
64GP103_LED F4
65KEYCAPS_LED F5
66GP100_LED F7
67```
68
29### Other Keymaps 69### Other Keymaps
30 70
31The "default" keymap included is basically the OLKB Atomic keymap with 71The "default" keymap included is basically the OLKB Atomic keymap with
diff --git a/keyboards/xd75/xd75.c b/keyboards/xd75/xd75.c
index 9b35b6cfa..dd0ec8a43 100644
--- a/keyboards/xd75/xd75.c
+++ b/keyboards/xd75/xd75.c
@@ -15,10 +15,20 @@
15 */ 15 */
16#include "xd75.h" 16#include "xd75.h"
17 17
18#define XD75_CAPSLOCK_LED 2 // B2
19#define XD75_GP103_LED 4 // F4
20#define XD75_KEYCAPS_LED 5 // F5
21#define XD75_GP100_LED 7 // F7
22
18void matrix_init_kb(void) { 23void matrix_init_kb(void) {
19 // put your keyboard start-up code here 24 // put your keyboard start-up code here
20 // runs once when the firmware starts up 25 // runs once when the firmware starts up
21 26
27 capslock_led_init();
28 gp100_led_init();
29 gp103_led_init();
30 keycaps_led_init();
31
22 matrix_init_user(); 32 matrix_init_user();
23} 33}
24 34
@@ -41,3 +51,55 @@ void led_set_kb(uint8_t usb_led) {
41 51
42 led_set_user(usb_led); 52 led_set_user(usb_led);
43} 53}
54
55void capslock_led_init(void) {
56 DDRB |= (1 << XD75_CAPSLOCK_LED);
57 capslock_led_off();
58}
59
60void capslock_led_off(void) {
61 PORTB |= (1 << XD75_CAPSLOCK_LED);
62}
63
64void capslock_led_on(void) {
65 PORTB &= ~(1 << XD75_CAPSLOCK_LED);
66}
67
68void gp100_led_init(void) {
69 DDRF |= (1 << XD75_GP100_LED);
70 gp100_led_off();
71}
72
73void gp100_led_off(void) {
74 PORTF |= (1 << XD75_GP100_LED);
75}
76
77void gp100_led_on(void) {
78 PORTF &= ~(1 << XD75_GP100_LED);
79}
80
81void gp103_led_init(void) {
82 DDRF |= (1 << XD75_GP103_LED);
83 gp103_led_off();
84}
85
86void gp103_led_off(void) {
87 PORTF &= ~(1 << XD75_GP103_LED);
88}
89
90void gp103_led_on(void) {
91 PORTF |= (1 << XD75_GP103_LED);
92}
93
94void keycaps_led_init(void) {
95 DDRF |= (1 << XD75_KEYCAPS_LED);
96 keycaps_led_off();
97}
98
99void keycaps_led_off(void) {
100 PORTF |= (1 << XD75_KEYCAPS_LED);
101}
102
103void keycaps_led_on(void) {
104 PORTF &= ~(1 << XD75_KEYCAPS_LED);
105}
diff --git a/keyboards/xd75/xd75.h b/keyboards/xd75/xd75.h
index b2030d4a6..e27806690 100644
--- a/keyboards/xd75/xd75.h
+++ b/keyboards/xd75/xd75.h
@@ -52,4 +52,20 @@
52 52
53#define LAYOUT_ortho_5x15 KEYMAP 53#define LAYOUT_ortho_5x15 KEYMAP
54 54
55void capslock_led_init(void);
56void capslock_led_off(void);
57void capslock_led_on(void);
58
59void gp100_led_init(void);
60void gp100_led_off(void);
61void gp100_led_on(void);
62
63void gp103_led_init(void);
64void gp103_led_off(void);
65void gp103_led_on(void);
66
67void keycaps_led_init(void);
68void keycaps_led_off(void);
69void keycaps_led_on(void);
70
55#endif 71#endif