]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - users/jarred/jarred.c
Keymap / userspace update (#5358)
[qmk_firmware.git] / users / jarred / jarred.c
index 33162b6891a4913197d13d1f47dc5b25be73761d..b37c4cfbb7591bade677e8152d970860229a4353 100644 (file)
 #include "jarred.h"
 #include "version.h"
 
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+bool lowerPressed, raisePressed;
+
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
   switch (keycode) {
+    case LOWER:
+    case RAISE:
+      // Both lower and raise activate the same layer
+      if (record->event.pressed) {
+        layer_on(_LW);
+      } else {
+        layer_off(_LW);
+      }
+      
+      // But keep track of each to active adjust layer
+      if (keycode == LOWER) {
+        lowerPressed = record->event.pressed;
+      } else {
+        raisePressed = record->event.pressed;
+      }
+      
+      // When both are pressed, activate adjust
+      if (lowerPressed && raisePressed) {
+        layer_on(_NP);
+      } else {
+        layer_off(_NP);
+      }
+      
+      break;
+    
+    case NUMPAD:
+        if (record->event.pressed) {
+          layer_on(_NP);
+        } else {
+          layer_off(_NP);
+        }
+        break;
+    
+    case NAVI:
+      if (record->event.pressed) {
+        layer_on(_NV);
+      } else {
+        layer_off(_NV);
+        
+        // Release mods set by ALT_TAB and CTL_TAB
+        unregister_code(KC_LALT);
+        unregister_code(KC_LCTL);
+      }
+      break;
+    
     case VRSN: // Prints firmware version
       if (record->event.pressed) {
         send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER);
       }
-      return false;
+      break;
+      
+    case ALT_TAB:
+      if (record->event.pressed) {
+        register_code(KC_LALT);
+        tap_code(KC_TAB);
+      }
+      break;
+      
+    case CTL_TAB:
+      if (record->event.pressed) {
+        register_code(KC_LCTL);
+        tap_code(KC_TAB);
+      }
       break;
   }
 
-  return true;
+  return process_record_keymap(keycode, record);
 }