]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/handwired/promethium/keymaps/priyadi/keymap.c
Add ifdefs for keyboard layouts
[qmk_firmware.git] / keyboards / handwired / promethium / keymaps / priyadi / keymap.c
index eee859e316cab75a4ade9a625a70047f32c9c3c6..1e5e497dfd1b4708c4f1e4263d2878c2c29e5ea3 100644 (file)
 #define COUNT(x) (sizeof (x) / sizeof (*(x)))
 
 // Fillers to make layering clearer
-
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
 #define G(x) LGUI(x)
 #define KC_WWWB KC_WWW_BACK
 #define KC_WWWF KC_WWW_FORWARD
 
+// hybrid right-alt & scroll lock (mapped to Compose in OS)
+#undef KC_RALT
+#define KC_RALT MT(MOD_RALT, KC_SLCK)
+
+// glow
+enum glow_modes {
+  GLOW_NONE,
+  GLOW_MIN,
+  GLOW_FULL
+};
+uint8_t glow_mode = GLOW_MIN;
+
 extern keymap_config_t keymap_config;
 
 enum layers {
@@ -61,6 +72,10 @@ enum planck_keycodes {
   LINUX,
   WIN,
   OSX,
+
+  // others
+  GLOW,
+  AUDIO
 };
 
 // unicode map
@@ -269,17 +284,6 @@ const uint32_t PROGMEM unicode_map[] = {
   [FSIGM] = 0x03C2,
 };
 
-
-// hybrid shift - =
-// #undef KC_LSFT
-// #define KC_LSFT MT(MOD_LSFT, KC_MINS)
-// #undef KC_RSFT
-// #define KC_RSFT MT(MOD_LSFT, KC_EQL)
-
-// hybrid right-alt & scroll lock (mapped to Compose in OS)
-#undef KC_RALT
-#define KC_RALT MT(MOD_RALT, KC_SLCK)
-
 // RGBSPS
 
 const uint8_t PROGMEM LED_ALNUM[] = {
@@ -317,6 +321,17 @@ const uint8_t PROGMEM LED_ALNUM[] = {
   LED_RSPC
 };
 
+const uint8_t PROGMEM LED_HOMING[] = {
+  LED_A,
+  LED_S,
+  LED_D,
+  LED_F,
+  LED_J,
+  LED_K,
+  LED_L,
+  LED_SCLN
+};
+
 const uint8_t PROGMEM LED_MODS[] = {
   LED_TAB,
   LED_ESC,
@@ -354,20 +369,50 @@ const uint8_t PROGMEM LED_TRACKPOINT[] = {
   LED_TRACKPOINT3,
 };
 
-void led_reset(void) {
+void led_turnoff_keys(void) {
   for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
     rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);
   }
-
   for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
     rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 0, 0);
   }
-
   for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
     rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 0);
   }
 }
 
+void led_reset(void) {
+  switch (glow_mode) {
+    case GLOW_NONE:
+      led_turnoff_keys();
+      break;
+    case GLOW_MIN:
+      led_turnoff_keys();
+      for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
+        rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 8, 8, 8);
+      }
+      rgbsps_set(LED_F, 15, 0, 0);
+      rgbsps_set(LED_J, 15, 0, 0);
+      break;
+    case GLOW_FULL:
+      for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
+        rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 8, 8, 8);
+      }
+      for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
+        rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 15, 0);
+      }
+      for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
+        rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 15);
+      }
+      for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
+        rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 15, 0, 0);
+      }
+      rgbsps_set(LED_F, 15, 15, 0);
+      rgbsps_set(LED_J, 15, 15, 0);
+      break;
+  }
+}
+
 void led_layer_normal(void) {
   rgbsps_set(LED_IND_FUNC, 0, 0, 0);
   rgbsps_set(LED_IND_NUM, 0, 0, 0);
@@ -385,35 +430,6 @@ void led_layer_func(void) {
 
   led_reset();
 
-  for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
-    rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);
-  }
-
-  // rgbsps_set(LED_I, 15, 0, 15);
-  // rgbsps_set(LED_J, 15, 0, 15);
-  // rgbsps_set(LED_K, 15, 0, 15);
-  // rgbsps_set(LED_L, 15, 0, 15);
-
-  // rgbsps_set(LED_U, 15, 0, 0);
-  // rgbsps_set(LED_O, 15, 0, 0);
-  // rgbsps_set(LED_COMM, 15, 0, 0);
-  // rgbsps_set(LED_DOT, 15, 0, 0);
-  // rgbsps_set(LED_SCLN, 15, 0, 0);
-  // rgbsps_set(LED_P, 15, 0, 0);
-
-  // rgbsps_set(LED_Q, 0, 15, 0);
-  // rgbsps_set(LED_W, 0, 15, 0);
-  // rgbsps_set(LED_E, 0, 15, 0);
-  // rgbsps_set(LED_R, 0, 15, 0);
-  // rgbsps_set(LED_A, 0, 15, 0);
-  // rgbsps_set(LED_S, 0, 15, 0);
-  // rgbsps_set(LED_D, 0, 15, 0);
-  // rgbsps_set(LED_F, 0, 15, 0);
-  // rgbsps_set(LED_Z, 0, 15, 0);
-  // rgbsps_set(LED_X, 0, 15, 0);
-  // rgbsps_set(LED_C, 0, 15, 0);
-  // rgbsps_set(LED_V, 0, 15, 0);
-
   rgbsps_send();
 }
 
@@ -434,55 +450,10 @@ void led_layer_num(void) {
 
   led_reset();
 
-  // for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
-  //   rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);
-  // }
-
-  // rgbsps_set(LED_U, 0, 5, 15);
-  // rgbsps_set(LED_I, 0, 5, 15);
-  // rgbsps_set(LED_O, 0, 5, 15);
-  // rgbsps_set(LED_J, 0, 5, 15);
-  // rgbsps_set(LED_K, 0, 5, 15);
-  // rgbsps_set(LED_L, 0, 5, 15);
-  // rgbsps_set(LED_M, 0, 5, 15);
-  // rgbsps_set(LED_COMM, 0, 5, 15);
-  // rgbsps_set(LED_DOT, 0, 5, 15);
-  // rgbsps_set(LED_FUNC, 0, 5, 15);
-
-  // rgbsps_set(LED_EMOJI, 0, 10, 15);
-  // rgbsps_set(LED_RALT, 0, 10, 15);
-
-  // rgbsps_set(LED_Q, 0, 10, 15);
-  // rgbsps_set(LED_W, 0, 10, 15);
-  // rgbsps_set(LED_E, 0, 10, 15);
-  // rgbsps_set(LED_R, 0, 10, 15);
-  // rgbsps_set(LED_T, 0, 10, 15);
-  // rgbsps_set(LED_Y, 0, 10, 15);
-  // rgbsps_set(LED_P, 0, 10, 15);
-
-  // rgbsps_set(LED_A, 0, 15, 15);
-  // rgbsps_set(LED_S, 0, 15, 15);
-  // rgbsps_set(LED_D, 0, 15, 15);
-  // rgbsps_set(LED_F, 0, 15, 15);
-  // rgbsps_set(LED_Z, 0, 15, 15);
-  // rgbsps_set(LED_X, 0, 15, 15);
-  // rgbsps_set(LED_C, 0, 15, 15);
-  // rgbsps_set(LED_V, 0, 15, 15);
-
   rgbsps_send();
 }
 
 void led_layer_emoji(void) {
-  // for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
-  //   rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 15, 0);
-  // }
-  // for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
-  //   rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 15, 0);
-  // }
-  // for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
-  //   rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 0);
-  // }
-
   rgbsps_set(LED_IND_FUNC, 0, 0, 0);
   rgbsps_set(LED_IND_NUM, 0, 0, 0);
   rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
@@ -527,11 +498,6 @@ void led_init(void) {
   rgbsps_set(LED_TRACKPOINT2, 0, 0, 15);
   rgbsps_set(LED_TRACKPOINT3, 15, 0, 0);
 
-  // // hardcode indicator for now
-  rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15);
-  rgbsps_set(LED_IND_USB, 15, 15, 15);
-  rgbsps_set(LED_IND_BATTERY, 0, 15, 0);
-
   led_layer_normal();
 }
 
@@ -569,12 +535,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |
  * `-----------------------------------------------------------------------------------'
  */
+#ifdef LAYOUT_DVORAK
 [_DVORAK] = KEYMAP(
   _______, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    _______,
   _______, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    _______,
   _______, KC_SLSH, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    _______,
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
+#endif
 
 /* Colemak
  * ,-----------------------------------------------------------------------------------.
@@ -587,12 +555,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |
  * `-----------------------------------------------------------------------------------'
  */
+
+#ifdef LAYOUT_COLEMAK
 [_COLEMAK] = KEYMAP(
   _______, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_QUOT, _______,
   _______, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    _______,
   _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
+#endif
 
 /* Norman
  * ,-----------------------------------------------------------------------------------.
@@ -605,12 +576,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |
  * `-----------------------------------------------------------------------------------'
  */
+
+#ifdef LAYOUT_NORMAN
 [_NORMAN] = KEYMAP(
   _______, KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    KC_J,    KC_U,    KC_R,    KC_L,    KC_QUOT, _______,
   _______, KC_A,    KC_S,    KC_E,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,    _______,
   _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
+#endif
 
 /* Workman
  * ,-----------------------------------------------------------------------------------.
@@ -623,12 +597,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |
  * `-----------------------------------------------------------------------------------'
  */
+
+#ifdef LAYOUT_WORKMAN
 [_WORKMAN] = KEYMAP(
   _______, KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_QUOT, _______,
   _______, KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    _______,
   _______, KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,    KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH, _______,
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
+#endif
 
 /* Punc
  * ,-----------------------------------------------------------------------------------.
@@ -769,7 +746,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_SYS] = KEYMAP(
   XXXXXXX, QWERTY,  WIN,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-  XXXXXXX, XXXXXXX, XXXXXXX, DVORAK,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, WORKMAN, LINUX,   XXXXXXX, XXXXXXX,
+  XXXXXXX, AUDIO,   XXXXXXX, DVORAK,  XXXXXXX, GLOW,    XXXXXXX, XXXXXXX, WORKMAN, LINUX,   XXXXXXX, XXXXXXX,
   XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BLE, NORMAN,  OSX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
 ),
@@ -858,30 +835,38 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       }
       return false;
       break;
+#ifdef LAYOUT_DVORAK
     case DVORAK:
       if (record->event.pressed) {
         persistant_default_layer_set(1UL<<_DVORAK);
       }
       return false;
       break;
+#endif
+#ifdef LAYOUT_COLEMAK
     case COLEMAK:
       if (record->event.pressed) {
         persistant_default_layer_set(1UL<<_COLEMAK);
       }
       return false;
       break;
+#endif
+#ifdef LAYOUT_WORKMAN
     case WORKMAN:
       if (record->event.pressed) {
         persistant_default_layer_set(1UL<<_WORKMAN);
       }
       return false;
       break;
+#endif
+#ifdef LAYOUT_NORMAN
     case NORMAN:
       if (record->event.pressed) {
         persistant_default_layer_set(1UL<<_NORMAN);
       }
       return false;
       break;
+#endif
 
     // layer switcher
     case PUNC:
@@ -968,6 +953,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       set_unicode_input_mode(UC_OSX);
       return false;
       break;
+
+    // glow mode changer
+    case GLOW:
+      if (record->event.pressed) {
+        glow_mode++;
+        if (glow_mode > GLOW_FULL) {
+          glow_mode = GLOW_NONE;
+        }
+        led_reset();
+        rgbsps_send();
+      }
+      return false;
+      break;
+
+    // faux clicky toggle, TBD
+    case AUDIO:
+      return false;
+      break;
   }
   return true;
 }
@@ -1000,6 +1003,11 @@ void matrix_init_user(void) {
   }
 }
 
+void battery_poll(float percentage) {
+  rgbsps_sethsv(LED_IND_BATTERY, percentage*120/100, 255, 15);
+  rgbsps_send();
+}
+
 void ps2_mouse_init_user() {
     uint8_t rcv;