]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Generalize layer indicators
authorPriyadi Iman Nurcahyo <priyadi@priyadi.net>
Fri, 10 Feb 2017 17:07:10 +0000 (00:07 +0700)
committerPriyadi Iman Nurcahyo <priyadi@priyadi.net>
Fri, 10 Feb 2017 17:07:10 +0000 (00:07 +0700)
keyboards/handwired/promethium/keymaps/priyadi/keymap.c
keyboards/handwired/promethium/promethium.c

index 1e5e497dfd1b4708c4f1e4263d2878c2c29e5ea3..72b6253570f60dd08943ea143090613481eeecdb 100644 (file)
@@ -413,61 +413,43 @@ void led_reset(void) {
   }
 }
 
-void led_layer_normal(void) {
-  rgbsps_set(LED_IND_FUNC, 0, 0, 0);
-  rgbsps_set(LED_IND_NUM, 0, 0, 0);
-  rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
-
-  led_reset();
-
-  rgbsps_send();
-}
+void led_set_layer_indicator(void) {
+  static uint8_t oldlayer = 255;
 
-void led_layer_func(void) {
-  rgbsps_set(LED_IND_FUNC, 0, 15, 0);
+  rgbsps_set(LED_IND_FUNC, 0, 0, 0);
   rgbsps_set(LED_IND_NUM, 0, 0, 0);
   rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
 
   led_reset();
 
-  rgbsps_send();
-}
-
-void led_layer_punc(void) {
-  rgbsps_set(LED_IND_FUNC, 0, 15, 0);
-  rgbsps_set(LED_IND_NUM, 0, 0, 15);
-  rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
-
-  led_reset();
-
-  rgbsps_send();
-}
-
-void led_layer_num(void) {
-  rgbsps_set(LED_IND_FUNC, 0, 0, 0);
-  rgbsps_set(LED_IND_NUM, 0, 0, 15);
-  rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
-
-  led_reset();
+  uint8_t layer = biton32(layer_state);
+  if (oldlayer == layer) {
+    return;
+  }
 
-  rgbsps_send();
-}
+  oldlayer = layer;
 
-void led_layer_emoji(void) {
-  rgbsps_set(LED_IND_FUNC, 0, 0, 0);
-  rgbsps_set(LED_IND_NUM, 0, 0, 0);
-  rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
-
-  rgbsps_set(LED_PUNC, 15, 15, 15);
-  rgbsps_set(LED_EMOJI, 15, 15, 15);
+  if (layer <= _NORMAN) {
+    rgbsps_send();
+    return;
+  }
 
-  rgbsps_send();
-}
+  switch(layer) {
+    case _FUNC:
+      rgbsps_set(LED_IND_FUNC, 15, 0, 0);
+      break;
+    case _NUM:
+      rgbsps_set(LED_IND_NUM, 0, 0, 15);
+      break;
+    case _EMOJI:
+      rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
+      break;
+    default:
+      rgbsps_set(LED_IND_FUNC, 3, 3, 3);
+      rgbsps_set(LED_IND_NUM, 3, 3, 3);
+      rgbsps_set(LED_IND_EMOJI, 3, 3, 3);
+  }
 
-void led_layer_gui(void) {
-  rgbsps_set(LED_IND_FUNC, 15, 10, 15);
-  rgbsps_set(LED_IND_NUM, 15, 10, 15);
-  rgbsps_set(LED_IND_EMOJI, 15, 10, 15);
   rgbsps_send();
 }
 
@@ -497,8 +479,6 @@ void led_init(void) {
   rgbsps_set(LED_TRACKPOINT1, 15, 0, 0);
   rgbsps_set(LED_TRACKPOINT2, 0, 0, 15);
   rgbsps_set(LED_TRACKPOINT3, 15, 0, 0);
-
-  led_layer_normal();
 }
 
 
@@ -798,6 +778,22 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       return true;
       break;
 
+    // press both Supers to activate EMOJI layer
+    case KC_LGUI:
+    case KC_RGUI:
+      ;
+      bool lgui = keyboard_report->mods & MOD_BIT(KC_LGUI);
+      bool rgui = keyboard_report->mods & MOD_BIT(KC_RGUI);
+      if (record->event.pressed) {
+        if (lgui ^ rgui) { // if only one super was pressed
+          layer_on(_EMOJI);
+        }
+      } else {
+        layer_off(_EMOJI);
+      }
+      return true;
+      break;
+
     // QWERTZ style comma and dot: semicolon and colon when shifted
     case KC_COMM:
       if (record->event.pressed) {
@@ -873,19 +869,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       if (record->event.pressed) {
         layer_on(_PUNC);
         update_tri_layer(_PUNC, _GREEKL, _GUI);
-        if (IS_LAYER_ON(_GUI)) {
-          led_layer_normal();
-        } else {
-          led_layer_punc();
-        }
       } else {
         layer_off(_PUNC);
         update_tri_layer(_PUNC, _GREEKL, _GUI);
-        if (IS_LAYER_ON(_GREEKL)) {
-          led_layer_normal();
-        } else {
-          led_layer_normal();
-        }
       }
       return false;
       break;
@@ -899,21 +885,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
           layer_on(_GREEKL);
           layer_off(_GREEKU);
           update_tri_layer(_PUNC, _GREEKL, _GUI);
-          if (IS_LAYER_ON(_GUI)) {
-            led_layer_normal();
-          } else {
-            led_layer_normal();
-          }
         }
       } else {
         layer_off(_GREEKU);
         layer_off(_GREEKL);
         update_tri_layer(_PUNC, _GREEKL, _GUI);
-        if (IS_LAYER_ON(_PUNC)) {
-          led_layer_normal();
-        } else {
-          led_layer_normal();
-        }
       }
       return false;
       break;
@@ -921,10 +897,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     case NUM:
       if (record->event.pressed) {
         layer_on(_NUM);
-        led_layer_num();
       } else {
         layer_off(_NUM);
-        led_layer_normal();
       }
       return false;
       break;
@@ -932,10 +906,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     case FUNC:
       if (record->event.pressed) {
         layer_on(_FUNC);
-        led_layer_func();
       } else {
         layer_off(_FUNC);
-        led_layer_normal();
       }
       return false;
       break;
@@ -1003,6 +975,10 @@ void matrix_init_user(void) {
   }
 }
 
+void matrix_scan_user(void) {
+  led_set_layer_indicator();
+}
+
 void battery_poll(float percentage) {
   rgbsps_sethsv(LED_IND_BATTERY, percentage*120/100, 255, 15);
   rgbsps_send();
@@ -1012,23 +988,23 @@ void ps2_mouse_init_user() {
     uint8_t rcv;
 
     // set TrackPoint sensitivity
-    PS2_MOUSE_SEND(0xE2, "set trackpoint sensitivity: 0xE2");
-    PS2_MOUSE_SEND(0x81, "set trackpoint sensitivity: 0x81");
-    PS2_MOUSE_SEND(0x4A, "set trackpoint sensitivity: 0x4A");
-    PS2_MOUSE_SEND(0x49, "set trackpoint sensitivity: 0x59");
+    PS2_MOUSE_SEND(0xE2, "tpsens: 0xE2");
+    PS2_MOUSE_SEND(0x81, "tpsens: 0x81");
+    PS2_MOUSE_SEND(0x4A, "tpsens: 0x4A");
+    PS2_MOUSE_SEND(0x49, "tpsens: 0x59");
 
     // set TrackPoint Negative Inertia factor
-    PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2");
-    PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81");
-    PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D");
-    PS2_MOUSE_SEND(0x06, "set negative inertia factor: 0x06");
+    PS2_MOUSE_SEND(0xE2, "tpnegin: 0xE2");
+    PS2_MOUSE_SEND(0x81, "tpnegin: 0x81");
+    PS2_MOUSE_SEND(0x4D, "tpnegin: 0x4D");
+    PS2_MOUSE_SEND(0x06, "tpnegin: 0x06");
 
     // set TrackPoint speed
     // (transfer function upper plateau speed)
-    PS2_MOUSE_SEND(0xE2, "set trackpoint speed: 0xE2");
-    PS2_MOUSE_SEND(0x81, "set trackpoint speed: 0x81");
-    PS2_MOUSE_SEND(0x60, "set trackpoint speed: 0x60");
-    PS2_MOUSE_SEND(0x61, "set trackpoint speed: 0x61");
+    PS2_MOUSE_SEND(0xE2, "tpsp: 0xE2");
+    PS2_MOUSE_SEND(0x81, "tpsp: 0x81");
+    PS2_MOUSE_SEND(0x60, "tpsp: 0x60");
+    PS2_MOUSE_SEND(0x61, "tpsp: 0x61");
 
     // inquire pts status
     rcv = ps2_host_send(0xE2);
index 7f876c7562881b11f39efab8c5e36e1d005c99f9..adfc11e2aca9b2df2b43022f97cb319c8d41f5fb 100644 (file)
@@ -31,6 +31,8 @@ void matrix_scan_kb(void) {
         counter = 0;
         battery_poll(battery_percentage());
     }
+
+    matrix_scan_user();
 }