]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/planck/keymaps/cbbrowne/keymap.c
Some revisions to cbbrowne Planck keymap, and a preliminary xd75 keymap (#1715)
[qmk_firmware.git] / keyboards / planck / keymaps / cbbrowne / keymap.c
index 0448a8d11c12beba78ffdac70b8a2ef1858b764d..d1214dda128ae26a0bbe920d9d1858a87aa9c5d6 100644 (file)
 
 /* Some interesting things implemented
 
-   - There is a macro that writes out "cbbrowne" to show that I could
+   - There is a macro that writes out "cbbrowne" just to show that I
+     could
    - There is a (somewhat cruddy) linear congruential random number
      generator.
-     - I would like to be seeding it with clock info to make it look
-       more random
+     - I seed it somewhat with clock info to make it look more random
    - There are two macros that use the random number generators
      - one, M_RANDDIGIT, generates a random digit based on state
        of the random number generator
 
    - Need to think about what zsh and readline actions I use lots
    - Ought to ensure that Control-Alt-Delete is convenient enough
-   - How about Alt-F1 thru Alt-F8?
+   - How about Alt-F1 thru Alt-F8?  Not yet...
    - What's the keystroke to get from X to console these days?
    - A layer for doing console switching would not be a bad idea
-   - I haven't got page-up/page-down, let's have that...
+
+   - I'm messing with jeremy-dev's keymap that shifts everything
+     outwards.  Gotta figure out how to make it sensible...
 */
 
 enum layers {
@@ -71,6 +73,21 @@ enum layers {
   _RAISE, /* Raised layer, where top line has digits 1234567890 */
   _KEYPAD, /* Key pad */
   _ADJUST, /* Special Adjust layer coming via tri-placement */
+
+};
+
+enum my_keycodes {
+  MY_ABVE = SAFE_RANGE,
+  MY_BELW,
+  MY_TERM,
+  MY_DEQL, // /=
+  MY_MEQL, // *=
+  MY_SEQL, // -=
+  MY_PEQL, // +=
+  MY_NEQL, // !=
+  MY_LTGT, // <>
+  MY_DPIP, // ||
+  MY_DAMP, // &&
 };
 
 enum macro_id {
@@ -132,9 +149,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {_______, RANDDIG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
   {_______, RANDALP, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ },
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
-}  
+}
 };
 
+
 /* What is fn_actions actually used for??? */
 const uint16_t PROGMEM fn_actions[] = {
 };
@@ -233,3 +251,119 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
   }
   return MACRO_NONE;
 };
+
+void press_key(uint16_t key) {
+  register_code(key);
+  unregister_code(key);
+}
+
+void press_two_keys(uint16_t key1, uint16_t key2) {
+  register_code(key1);
+  register_code(key2);
+  unregister_code(key2);
+  unregister_code(key1);
+}
+
+void press_three_keys(uint16_t key1, uint16_t key2, uint16_t key3) {
+  register_code(key1);
+  register_code(key2);
+  register_code(key3);
+  unregister_code(key3);
+  unregister_code(key2);
+  unregister_code(key1);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case MY_BELW:
+      if (record->event.pressed) {
+        press_two_keys(KC_LGUI, KC_RGHT);
+        press_key(KC_ENT);
+      }
+
+      return false;
+
+    case MY_ABVE:
+      if (record->event.pressed) {
+        press_two_keys(KC_LGUI, KC_LEFT);
+        press_key(KC_ENT);
+        press_key(KC_UP);
+      }
+
+      return false;
+
+    case MY_TERM:
+      if (record->event.pressed) {
+        press_three_keys(KC_LGUI, KC_LSFT, KC_ENT);
+      }
+
+      return false;
+
+    case MY_DEQL: // /=
+      if (record->event.pressed) {
+        press_key(KC_SLSH);
+        press_key(KC_EQL);
+      }
+
+      return false;
+
+    case MY_MEQL: // *=
+      if (record->event.pressed) {
+        press_two_keys(KC_LSFT, KC_ASTR);
+        press_key(KC_EQL);
+      }
+
+      return false;
+
+    case MY_SEQL: // -=
+      if (record->event.pressed) {
+        press_key(KC_MINS);
+        press_key(KC_EQL);
+      }
+
+      return false;
+
+    case MY_PEQL: // +=
+      if (record->event.pressed) {
+        press_two_keys(KC_LSFT, KC_PLUS);
+        press_key(KC_EQL);
+      }
+
+      return false;
+
+    case MY_NEQL: // !=
+      if (record->event.pressed) {
+        press_two_keys(KC_LSFT, KC_EXLM);
+        press_key(KC_EQL);
+      }
+
+      return false;
+
+    case MY_LTGT: // <>
+      if (record->event.pressed) {
+        press_two_keys(KC_LSFT, KC_LABK);
+        press_two_keys(KC_LSFT, KC_RABK);
+      }
+
+      return false;
+
+    case MY_DPIP: // ||
+      if (record->event.pressed) {
+        press_two_keys(KC_LSFT, KC_PIPE);
+        press_two_keys(KC_LSFT, KC_PIPE);
+      }
+
+      return false;
+
+    case MY_DAMP: // &&
+      if (record->event.pressed) {
+        press_two_keys(KC_LSFT, KC_AMPR);
+        press_two_keys(KC_LSFT, KC_AMPR);
+      }
+
+      return false;
+  }
+
+  return true;
+}
+