]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Implement Capslock LED
authorPriyadi Iman Nurcahyo <priyadi@priyadi.net>
Sat, 11 Feb 2017 12:03:18 +0000 (19:03 +0700)
committerPriyadi Iman Nurcahyo <priyadi@priyadi.net>
Sat, 11 Feb 2017 12:03:18 +0000 (19:03 +0700)
keyboards/handwired/promethium/keymaps/priyadi/keymap.c
keyboards/handwired/promethium/promethium.c

index 992a03a417d3adeb77cd56cb12713ee9b8d2835c..2a21b4ba7723632abc5b9c60139d282d6ee50299 100644 (file)
@@ -10,6 +10,7 @@
 #include "ps2_mouse.h"
 #include "ps2.h"
 #include "outputselect.h"
+#include "led.h"
 #define COUNT(x) (sizeof (x) / sizeof (*(x)))
 
 // Fillers to make layering clearer
@@ -23,6 +24,8 @@
 #undef KC_RALT
 #define KC_RALT MT(MOD_RALT, KC_SLCK)
 
+bool capslock = false;
+
 // glow
 enum glow_modes {
   GLOW_NONE,
@@ -417,7 +420,7 @@ void led_set_layer_indicator(void) {
   static uint8_t oldlayer = 255;
 
   rgbsps_set(LED_IND_FUNC, 0, 0, 0);
-  rgbsps_set(LED_IND_NUM, 0, 0, 0);
+  // rgbsps_set(LED_IND_NUM, 0, 0, 0);
   rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
 
   led_reset();
@@ -438,9 +441,9 @@ void led_set_layer_indicator(void) {
     case _FUNC:
       rgbsps_set(LED_IND_FUNC, 15, 0, 0);
       break;
-    case _NUM:
-      rgbsps_set(LED_IND_NUM, 0, 0, 15);
-      break;
+    // case _NUM:
+    //   rgbsps_set(LED_IND_NUM, 0, 0, 15);
+    //   break;
     case _EMOJI:
       rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
       break;
@@ -992,6 +995,18 @@ void battery_poll(uint8_t level) {
   rgbsps_send();
 }
 
+void led_set_user(uint8_t usb_led) {
+  bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
+  if (new_capslock ^ capslock) { // capslock state is different
+    if (capslock = new_capslock) {
+      rgbsps_set(LED_IND_NUM, 15, 0, 0);
+    } else {
+      rgbsps_set(LED_IND_NUM, 0, 0, 0);
+    }
+    rgbsps_send();
+  }
+}
+
 void ps2_mouse_init_user() {
     uint8_t rcv;
 
index 3e369a6246c1beb357ee76ea4ec72892e8c8e8f6..62e2281facfa029c45096c31522778da55cb9321 100644 (file)
@@ -32,4 +32,7 @@ void matrix_scan_kb(void) {
     matrix_scan_user();
 }
 
+void led_set_kb(uint8_t usb_led) {
+    led_set_user(usb_led);
+}