]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - users/konstantin/konstantin.c
[Keyboard] leds in default keymap (#6357)
[qmk_firmware.git] / users / konstantin / konstantin.c
index 753742fa781006b554d38cf15b6024f81f8d0594..9e3caca414783cd944139882a78d61df849b0518 100644 (file)
@@ -4,107 +4,99 @@ __attribute__((weak))
 void keyboard_pre_init_keymap(void) {}
 
 void keyboard_pre_init_user(void) {
-  keyboard_pre_init_keymap();
+    keyboard_pre_init_keymap();
 }
 
 __attribute__((weak))
 void eeconfig_init_keymap(void) {}
 
 void eeconfig_init_user(void) {
-  eeconfig_init_keymap();
+    eeconfig_init_keymap();
 }
 
 __attribute__((weak))
 void keyboard_post_init_keymap(void) {}
 
 void keyboard_post_init_user(void) {
-  keyboard_post_init_keymap();
+    keyboard_post_init_keymap();
 }
 
 __attribute__((weak))
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  return true;
+    return true;
 }
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  if (!process_record_keymap(keycode, record)) {
-    return false;
-  }
-
-#ifdef LAYER_NUMPAD
-  void toggle_numpad(void) {
-    layer_invert(L_NUMPAD);
-    bool numpad = IS_LAYER_ON(L_NUMPAD), num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
-    if (num_lock != numpad) {
-      tap_code(KC_NLCK);  // Toggle Num Lock to match layer state
+    if (!process_record_keymap(keycode, record)) {
+        return false;
     }
-  }
-#endif
 
-  switch (keycode) {
-  case CLEAR:
-    if (record->event.pressed) {
-      SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
-    }
-    return false;
+    switch (keycode) {
+    case CLEAR:
+        if (record->event.pressed) {
+            SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
+        }
+        return false;
 
-  case DST_P_R:
-    (record->event.pressed ? register_code16 : unregister_code16)(
-      (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
-    );
-    return false;
+    case DST_P_R:
+        (record->event.pressed ? register_code16 : unregister_code16)(
+            (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
+        );
+        return false;
 
-  case DST_N_A:
-    (record->event.pressed ? register_code16 : unregister_code16)(
-      (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
-    );
-    return false;
+    case DST_N_A:
+        (record->event.pressed ? register_code16 : unregister_code16)(
+            (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
+        );
+        return false;
 
 #ifdef LAYER_FN
-    static bool fn_lock;
-
-  case FN_FNLK:
-    if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
-      fn_lock = !IS_LAYER_ON(L_FN);  // Fn layer will be toggled after this
-    }
-    return true;
-#endif
+        static bool fn_lock;
 
-#ifdef LAYER_NUMPAD
-  case NUMPAD:
-    if (record->event.pressed) {
-      toggle_numpad();
-    }
-    return false;
+    case FN_FNLK:
+        if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+            fn_lock = !IS_LAYER_ON(L_FN);  // Fn layer will be toggled after this
+        }
+        return true;
 #endif
 
-  case KC_ESC:
-    if (record->event.pressed) {
-#ifdef LAYER_NUMPAD
-      if (IS_LAYER_ON(L_NUMPAD)) {
-        toggle_numpad();
-        return false;
-      }
+    case KC_ESC:
+        if (record->event.pressed) {
+#ifdef LAYER_NUMPAD  // Disable Numpad layer before Fn layer
+            if (IS_LAYER_ON(L_NUMPAD)) {
+                layer_off(L_NUMPAD);
+                return false;
+            }
 #endif
 #ifdef LAYER_FN
-      if (IS_LAYER_ON(L_FN) && fn_lock) {
-        layer_off(L_FN);
-        return fn_lock = false;
-      }
+            if (IS_LAYER_ON(L_FN) && fn_lock) {
+                layer_off(L_FN);
+                return fn_lock = false;
+            }
 #endif
-    }
-    return true;
+        }
+        return true;
 
-  default:
-    return true;
-  }
+    default:
+        return true;
+    }
 }
 
 __attribute__((weak))
 uint32_t layer_state_set_keymap(uint32_t state) {
-  return state;
+    return state;
 }
 
 uint32_t layer_state_set_user(uint32_t state) {
-  return layer_state_set_keymap(state);
+    state = layer_state_set_keymap(state);
+
+#ifdef LAYER_NUMPAD
+    bool numpad = state & 1UL<<L_NUMPAD;
+    bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
+    if (numpad != num_lock) {
+        tap_code(KC_NLCK);  // Toggle Num Lock to match Numpad layer state
+    }
+#endif
+
+    return state;
 }