]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
adds led control functions to XD75 layout
authorColin T.A. Gray <colinta@gmail.com>
Sun, 3 Dec 2017 15:21:10 +0000 (08:21 -0700)
committerJack Humbert <jack.humb@gmail.com>
Mon, 4 Dec 2017 23:16:07 +0000 (18:16 -0500)
keyboards/xd75/readme.md
keyboards/xd75/xd75.c
keyboards/xd75/xd75.h

index 5f4d2e85ffe46686bcabea771162dda5fc00162b..e11ce7dca9a4fa2bf7348d76857be90cbcf803e1 100644 (file)
@@ -26,6 +26,46 @@ firmware likely requires a command line like:
 $ sudo make xd75:default:dfu
 ```
 
+### LED control
+
+There 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.
+
+TODO: it would be nice to have PWM support on these LEDs for fade-in/fade-out effects.
+
+```c
+capslock_led_on();
+gp100_led_on();
+gp103_led_on();
+keycaps_led_on();
+
+
+// led_set_user example - you could also turn these on/off in response
+// to events in process_record_user or matrix_scan_user
+void led_set_user(uint8_t usb_led) {
+    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+        capslock_led_on();
+    } else {
+        capslock_led_off();
+    }
+
+    if (some_custom_state) {
+      gp100_led_on();
+    }
+    else {
+      gp100_led_off();
+    }
+}
+```
+
+For the curious:
+
+```
+CAPSLOCK_LED    B2
+GP103_LED       F4
+KEYCAPS_LED     F5
+GP100_LED       F7
+```
+
 ### Other Keymaps
 
 The "default" keymap included is basically the OLKB Atomic keymap with
index 9b35b6cfa022cc256c31d1f096c5ad24bafbe566..dd0ec8a433047013f0fed2aab92eab3ed75c49bc 100644 (file)
  */
 #include "xd75.h"
 
+#define XD75_CAPSLOCK_LED 2  // B2
+#define XD75_GP103_LED 4  // F4
+#define XD75_KEYCAPS_LED 5  // F5
+#define XD75_GP100_LED 7  // F7
+
 void matrix_init_kb(void) {
        // put your keyboard start-up code here
        // runs once when the firmware starts up
 
+       capslock_led_init();
+       gp100_led_init();
+       gp103_led_init();
+       keycaps_led_init();
+
        matrix_init_user();
 }
 
@@ -41,3 +51,55 @@ void led_set_kb(uint8_t usb_led) {
 
        led_set_user(usb_led);
 }
+
+void capslock_led_init(void) {
+       DDRB |= (1 << XD75_CAPSLOCK_LED);
+       capslock_led_off();
+}
+
+void capslock_led_off(void) {
+       PORTB |= (1 << XD75_CAPSLOCK_LED);
+}
+
+void capslock_led_on(void) {
+       PORTB &= ~(1 << XD75_CAPSLOCK_LED);
+}
+
+void gp100_led_init(void) {
+       DDRF |= (1 << XD75_GP100_LED);
+       gp100_led_off();
+}
+
+void gp100_led_off(void) {
+       PORTF |= (1 << XD75_GP100_LED);
+}
+
+void gp100_led_on(void) {
+       PORTF &= ~(1 << XD75_GP100_LED);
+}
+
+void gp103_led_init(void) {
+       DDRF |= (1 << XD75_GP103_LED);
+       gp103_led_off();
+}
+
+void gp103_led_off(void) {
+       PORTF &= ~(1 << XD75_GP103_LED);
+}
+
+void gp103_led_on(void) {
+       PORTF |= (1 << XD75_GP103_LED);
+}
+
+void keycaps_led_init(void) {
+       DDRF |= (1 << XD75_KEYCAPS_LED);
+       keycaps_led_off();
+}
+
+void keycaps_led_off(void) {
+       PORTF |= (1 << XD75_KEYCAPS_LED);
+}
+
+void keycaps_led_on(void) {
+       PORTF &= ~(1 << XD75_KEYCAPS_LED);
+}
index b2030d4a6e298bf3878421a5f610377e32f3890b..e278066900c90c6cf8687e0322eeb0fa09b18838 100644 (file)
 
 #define LAYOUT_ortho_5x15 KEYMAP
 
+void capslock_led_init(void);
+void capslock_led_off(void);
+void capslock_led_on(void);
+
+void gp100_led_init(void);
+void gp100_led_off(void);
+void gp100_led_on(void);
+
+void gp103_led_init(void);
+void gp103_led_off(void);
+void gp103_led_on(void);
+
+void keycaps_led_init(void);
+void keycaps_led_off(void);
+void keycaps_led_on(void);
+
 #endif