]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/planck/keymaps/cbbrowne/keymap.c
Update template config.h with `#pragma once` (#3415)
[qmk_firmware.git] / keyboards / planck / keymaps / cbbrowne / keymap.c
index 2be4dab4b1f2b4e35260028fd75ec950cc8ebd5a..eb8d422f2d3bddab9049ffb05e4ff6ad1b16e955 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 {
@@ -110,15 +127,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 },
 [_RAISE] = { /* RAISE */
   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  QWERTY,  KEYPAD,  KEYPAD,  ALTSLASH,_______},
-  {_______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_PGUP}
+  {_______, KC_4,    KC_5,    KC_6,    _______, _______, _______,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {_______, KC_7,    KC_8,    KC_9,    _______, _______, _______,  QWERTY,  KEYPAD,  KEYPAD,  ALTSLASH,_______},
+  {_______, KC_0, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_HOME, KC_END,  KC_PGUP}
 },
 [_LOWER] = { /* LOWER */
   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
   {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  QWERTY,  KEYPAD,  KEYPAD, ALTSLASH,   _______},
-  {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_PGUP}
+  {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_HOME,  KC_END, KC_PGUP}
     },
 [_KEYPAD] = { /* Key Pad */
   {KC_ESC,  USERNAME,    MVERSION,   KC_F10,   KC_F11,  KC_F12,   KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC},
@@ -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[] = {
 };
@@ -201,8 +219,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
     if (record->event.pressed)
       {
        layer_on(_RAISE);
-#ifdef BACKLIGHT_ENABLE
-       breathing_speed_set(2);
+#ifdef BACKLIGHT_BREATHING
+       breathing_period_set(2);
        breathing_pulse();
 #endif
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -217,8 +235,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
     if (record->event.pressed)
       {
        layer_on(_LOWER);
-#ifdef BACKLIGHT_ENABLE
-       breathing_speed_set(2);
+#ifdef BACKLIGHT_BREATHING
+       breathing_period_set(2);
        breathing_pulse();
 #endif
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -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;
+}
+