]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/handwired/promethium/keymaps/priyadi/keymap.c
move GRV to ESC position
[qmk_firmware.git] / keyboards / handwired / promethium / keymaps / priyadi / keymap.c
index 9fa038724a8caa85fc0536c1f713b5c1f78c8b48..68f79f5f76ee830da6b9764819ba1801af15d1a5 100644 (file)
@@ -41,6 +41,7 @@ enum glow_modes {
 };
 uint8_t glow_mode = GLOW_MIN;
 
+void turn_off_capslock(void);
 extern keymap_config_t keymap_config;
 
 enum layers {
@@ -49,6 +50,7 @@ enum layers {
   _COLEMAK,
   _WORKMAN,
   _NORMAN,
+  _DEFAULT_LAYER_MAX = _NORMAN,
 
   _PUNC,
   _NUM,
@@ -444,7 +446,7 @@ void led_set_layer_indicator(void) {
 
   oldlayer = layer;
 
-  if (layer <= _NORMAN) {
+  if (layer <= _DEFAULT_LAYER_MAX) {
     rgbsps_send();
     return;
   }
@@ -461,7 +463,7 @@ void led_set_layer_indicator(void) {
       break;
     default:
       rgbsps_set(LED_IND_FUNC, 3, 3, 3);
-      rgbsps_set(LED_IND_NUM, 3, 3, 3);
+      // rgbsps_set(LED_IND_NUM, 3, 3, 3);
       rgbsps_set(LED_IND_EMOJI, 3, 3, 3);
   }
 
@@ -614,8 +616,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_PUNC] = KEYMAP(
-  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV ,
-  XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, XXXXXXX,
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+  KC_GRV,  KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
   KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
@@ -632,10 +634,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_NUM] = KEYMAP(
-  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, S(KC_A),    KC_7,    KC_8,    KC_9, S(KC_D), KC_GRV,
-  XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, S(KC_B),    KC_4,    KC_5,    KC_6, S(KC_E), _______,
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, S(KC_A),    KC_7,    KC_8,    KC_9, S(KC_D), _______,
+  KC_GRV,  KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, S(KC_B),    KC_4,    KC_5,    KC_6, S(KC_E), _______,
   KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C),    KC_1,    KC_2,    KC_3, S(KC_F), KC_COLN,
-  _______, _______, _______, _______, _______, _______,    KC_X,    KC_0, KC_COMM,  KC_DOT, _______, _______
+  _______, _______, _______, _______, _______, _______, _______,    KC_0, KC_COMM,  KC_DOT, KC_X,    _______
 ),
 
 /* Func
@@ -724,7 +726,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_GUI] = KEYMAP(
   XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
   XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
-  XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+  XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC,  KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
   XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
 ),
 
@@ -753,6 +755,32 @@ void persistant_default_layer_set(uint16_t default_layer) {
   default_layer_set(default_layer);
 }
 
+#ifdef DOUBLESPACE_LAYER_ENABLE
+void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *isemitted) {
+  if (pressed) {
+    *isactive = true;
+    if (*otheractive) {
+      layer_on(_SPACE);
+      space_layer_entered = true;
+    }
+  } else {
+    *isactive = false;
+    if (space_layer_entered) {
+      layer_off(_SPACE);
+      if (!*otheractive) {
+        space_layer_entered = false;
+      }
+    } else {
+      if (!*isemitted) {
+        register_code(KC_SPC);
+        unregister_code(KC_SPC);
+      }
+      *isemitted = false;
+    }
+  }
+}
+#endif
+
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
   bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
@@ -786,51 +814,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 #ifdef DOUBLESPACE_LAYER_ENABLE
     // double-space enter space layer
     case LSPACE:
-      if (record->event.pressed) {
-        lspace_active = true;
-        if (rspace_active) {
-          layer_on(_SPACE);
-          space_layer_entered = true;
-        }
-      } else {
-        lspace_active = false;
-        if (space_layer_entered) {
-          layer_off(_SPACE);
-          if (!rspace_active) {
-            space_layer_entered = false;
-          }
-        } else {
-          if (!lspace_emitted) {
-            register_code(KC_SPC);
-            unregister_code(KC_SPC);
-          }
-          lspace_emitted = false;
-        }
-      }
+      process_doublespace(record->event.pressed, &lspace_active, &rspace_active, &lspace_emitted);
       return false;
       break;
     case RSPACE:
-      if (record->event.pressed) {
-        rspace_active = true;
-        if (lspace_active) {
-          layer_on(_SPACE);
-          space_layer_entered = true;
-        }
-      } else {
-        rspace_active = false;
-        if (space_layer_entered) {
-          layer_off(_SPACE);
-          if (!lspace_active) {
-            space_layer_entered = false;
-          }
-        } else {
-          if (!rspace_emitted) {
-            register_code(KC_SPC);
-            unregister_code(KC_SPC);
-          }
-          rspace_emitted = false;
-        }
-      }
+      process_doublespace(record->event.pressed, &rspace_active, &lspace_active, &rspace_emitted);
       return false;
       break;
 #endif
@@ -878,22 +866,6 @@ 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) {
@@ -968,10 +940,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     case PUNC:
       if (record->event.pressed) {
         layer_on(_PUNC);
-        update_tri_layer(_PUNC, _GREEKL, _GUI);
+        update_tri_layer(_PUNC, _GREEKL, _EMOJI);
       } else {
         layer_off(_PUNC);
-        update_tri_layer(_PUNC, _GREEKL, _GUI);
+        update_tri_layer(_PUNC, _GREEKL, _EMOJI);
       }
       return false;
       break;
@@ -984,18 +956,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         } else {
           layer_on(_GREEKL);
           layer_off(_GREEKU);
-          update_tri_layer(_PUNC, _GREEKL, _GUI);
+          update_tri_layer(_PUNC, _GREEKL, _EMOJI);
         }
       } else {
         layer_off(_GREEKU);
         layer_off(_GREEKL);
-        update_tri_layer(_PUNC, _GREEKL, _GUI);
+        update_tri_layer(_PUNC, _GREEKL, _EMOJI);
       }
       return false;
       break;
 
     case NUM:
       if (record->event.pressed) {
+        turn_off_capslock();
         layer_on(_NUM);
       } else {
         layer_off(_NUM);
@@ -1087,7 +1060,7 @@ void battery_poll(uint8_t level) {
 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) {
+    if ((capslock = new_capslock)) {
       rgbsps_set(LED_IND_NUM, 15, 0, 0);
     } else {
       rgbsps_set(LED_IND_NUM, 0, 0, 0);
@@ -1096,6 +1069,13 @@ void led_set_user(uint8_t usb_led) {
   }
 }
 
+void turn_off_capslock() {
+  if (capslock) {
+    register_code(KC_CAPS);
+    unregister_code(KC_CAPS);
+  }
+}
+
 void ps2_mouse_init_user() {
     uint8_t rcv;