]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/planck/keymaps/callum/keymap.c
[Keymap] use lowercase send_string for non-literals (#6193)
[qmk_firmware.git] / keyboards / planck / keymaps / callum / keymap.c
index a1254d975589f2574b5ef40db83ef9dc5fd7f24f..2a7a53d38df757f716e3ea43f4b0c79c509aff13 100644 (file)
 #include "planck.h"
 #include "action_layer.h"
-#ifdef AUDIO_ENABLE
-  #include "audio.h"
-#endif
-#include "eeconfig.h"
 
-extern keymap_config_t keymap_config;
+#define a KC_A
+#define b KC_B
+#define c KC_C
+#define d KC_D
+#define e KC_E
+#define f KC_F
+#define g KC_G
+#define h KC_H
+#define i KC_I
+#define j KC_J
+#define k KC_K
+#define l KC_L
+#define m KC_M
+#define n KC_N
+#define o KC_O
+#define p KC_P
+#define q KC_Q
+#define r KC_R
+#define s KC_S
+#define t KC_T
+#define u KC_U
+#define v KC_V
+#define w KC_W
+#define x KC_X
+#define y KC_Y
+#define z KC_Z
 
-#define _BASE 0
-#define _MOVE 1
-#define _SYMB 2
-#define _MOUSE 3
-#define _FUNC 4
-#define CMDLEFT LGUI(KC_LEFT)
-#define CMDRGHT LGUI(KC_RGHT)
-#define ENDASH LALT(KC_MINS)
-#define POUND LALT(KC_3)
+#define lalt KC_LALT
+#define lctl KC_LCTL
+#define lsft KC_LSFT
+#define ralt KC_RALT
+#define rctl KC_RCTL
+#define rsft KC_RSFT
 
+#define n0 KC_0
+#define n1 KC_1
+#define n2 KC_2
+#define n3 KC_3
+#define n4 KC_4
+#define n5 KC_5
+#define n6 KC_6
+#define n7 KC_7
+#define n8 KC_8
+#define n9 KC_9
 
-enum planck_keycodes {
-  MOVE = SAFE_RANGE,
-  SYMB,
-  FUNC
+#define bspc KC_BSPC
+#define caps KC_CAPS
+#define comm KC_COMM
+#define dash A(KC_MINS)
+#define scln KC_SCLN
+#define slsh KC_SLSH
+#define spc KC_SPC
+#define tab KC_TAB
+#define del KC_DEL
+#define dot KC_DOT
+#define ent KC_ENT
+#define mins KC_MINS
+#define quot KC_QUOT
+#define esc KC_ESC
+#define gbp A(KC_3)
+
+#define down KC_DOWN
+#define home KC_HOME
+#define end KC_END
+#define up KC_UP
+#define pgdn KC_PGDN
+#define pgup KC_PGUP
+#define left KC_LEFT
+#define rght KC_RGHT
+
+#define tabl S(C(KC_TAB))
+#define tabr C(KC_TAB)
+#define fwd G(KC_RBRC)
+#define back G(KC_LBRC)
+#define dtl C(KC_LEFT)
+#define dtr C(KC_RGHT)
+#define slup S(A(KC_UP))
+#define sldn S(A(KC_DOWN))
+
+#define f1 KC_F1
+#define f2 KC_F2
+#define f3 KC_F3
+#define f4 KC_F4
+#define f5 KC_F5
+#define f6 KC_F6
+#define f7 KC_F7
+#define f8 KC_F8
+#define f9 KC_F9
+#define f10 KC_F10
+#define f11 KC_F11
+#define f12 KC_F12
+#define f13 KC_F13
+#define f14 KC_F14
+#define f15 KC_F15
+#define f16 KC_F16
+#define f17 KC_F17
+#define f18 KC_F18
+#define f19 KC_F19
+#define f20 KC_F20
+
+#define mute KC_MUTE
+#define next KC_MNXT
+#define play KC_MPLY
+#define prev KC_MPRV
+#define vold KC_F11
+#define volu KC_F12
+
+#define symb MO(SYMB)
+#define move MO(MOVE)
+#define func MO(FUNC)
+
+#define rset RESET
+#define powr KC_POWER
+
+#define ____ KC_TRNS
+#define xxxx KC_NO
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+    BASE,
+    SYMB,
+    MOVE,
+    FUNC,
 };
 
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
+enum planck_keycodes {
+    ampr = SAFE_RANGE,
+    astr,
+    at,
+    bsls,
+    circ,
+    dlr,
+    eql,
+    exlm,
+    grv,
+    hash,
+    lbrc,
+    lcbr,
+    lprn,
+    perc,
+    pipe,
+    plus,
+    rbrc,
+    rcbr,
+    rprn,
+    tild,
+
+    cmd,
+};
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [BASE] = LAYOUT_planck_grid(
+         tab,    q,    w,    f,    p,    g,    j,    l,    u,    y, scln, mins,
+        bspc,    a,    r,    s,    t,    d,    h,    n,    e,    i,    o, quot,
+        lsft,    z,    x,    c,    v,    b,    k,    m, comm,  dot, slsh, rsft,
+        func, lctl, lalt,  cmd, move,  ent,  spc, symb,  cmd, ralt, rctl, func
+    ),
 
-/* BASE
- * ,-----------------------------------------------------------------------------------.
- * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  |  -   |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Bksp |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  | Shift|
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Func | Ctrl |  Alt |  Cmd | Symb | Enter| Space| Move |  Cmd |  Alt | Ctrl | Func |
- * `-----------------------------------------------------------------------------------'
- */
-[_BASE] = {
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_MINS},
-  {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
-  {FUNC,    KC_LCTL, KC_LALT, KC_LGUI, SYMB,    KC_ENT,  KC_SPC,  MOVE,    KC_RGUI, KC_RALT, KC_RCTL, FUNC   }
-},
-
-/* MOVE
- * ,-----------------------------------------------------------------------------------.
- * |  Esc |      | Cmd-L|  Up  | Cmd-R|      |      | Cmd-L|  Up  | Cmd-R|      |  Esc |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |  Del | Caps | Left | Down | Right|      |      | Left | Down | Right| Caps |  Del |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      | Pg Up| Pg Dn|      |      | Pg Dn| Pg Up|      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |      |      |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
- */
-[_MOVE] = {
-  {KC_ESC,  XXXXXXX, CMDLEFT, KC_UP,   CMDRGHT, XXXXXXX, XXXXXXX, CMDLEFT, KC_UP,   CMDRGHT, XXXXXXX, KC_ESC },
-  {KC_DEL,  KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
-  {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______},
-  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
-},
-
-/* SYMB
- * ,-----------------------------------------------------------------------------------.
- * |  Esc |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   –  |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |  Del |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   £  |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |   ~  |   `  |   +  |   =  |   |  |   \  |   [  |   ]  |   {  |   }  |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |      |      |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
- */
-[_SYMB] = {
-  {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    ENDASH },
-  {KC_DEL,  KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, POUND  },
-  {_______, KC_TILD, KC_GRV,  KC_PLUS, KC_EQL,  KC_PIPE, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______},
-  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
-},
-
-/* MOUSE
- * ,-----------------------------------------------------------------------------------.
- * |      |      | ACC-2| ACC-1| ACC-0|      |      | SW-L |  M-U | SW-R |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      | MB-3 | MB-2 | MB-1 |      |      |  M-L |  M-D |  M-R |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |      |      | SW-D | SW-U |      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |      |      |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
- */
-[_MOUSE] = {
-  {XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL1, KC_ACL0, XXXXXXX, XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX},
-  {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, XXXXXXX, _______},
-  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
-},
-
-/* FUNC
- * ,-----------------------------------------------------------------------------------.
- * | Reset|  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 | Vol+ |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |  F11 |  F12 |  F13 |  F14 |  F15 |  F16 |  F17 |  F18 |  F19 |  F20 | Vol- |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |  F21 |  F22 |  F23 |  F24 |      |      | Power|      |      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      | Prev | Mute | Play | Next |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
- */
-[_FUNC] = {
-  {RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_VOLU},
-  {XXXXXXX, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_VOLD},
-  {_______, KC_F21,  KC_F22,  KC_F23,  KC_F24,  XXXXXXX, XXXXXXX, KC_POWER, XXXXXXX, XXXXXXX, XXXXXXX, _______},
-  {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______}
-}
+    [SYMB] = LAYOUT_planck_grid(
+         esc,   n7,   n5,   n3,   n1,   n9,   n8,   n0,   n2,   n4,   n6, dash,
+         del, bsls, hash, astr,  eql, pipe,   at, rprn, lprn,  dlr, ampr,  gbp,
+        caps,  grv, exlm, lbrc, rbrc, circ, tild, rcbr, lcbr, plus, perc, caps,
+        ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
+    ),
 
+    [MOVE] = LAYOUT_planck_grid(
+         esc, xxxx, slup,  dtl,  dtr, xxxx, xxxx, home,   up,  end, xxxx, xxxx,
+         del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, xxxx,
+        ____, xxxx, xxxx, back,  fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____,
+        ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
+    ),
+
+    [FUNC] = LAYOUT_planck_grid(
+        rset,   f1,   f2,   f3,   f4,   f5,   f6,   f7,   f8,   f9,  f10, volu,
+        powr,  f11,  f12,  f13,  f14,  f15,  f16,  f17,  f18,  f19,  f20, vold,
+        ____, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, ____,
+        ____, ____, ____, ____, prev, mute, play, next, ____, ____, ____, ____
+    ),
 };
 
+bool send_string_if_keydown(keyrecord_t *record, const char *s) {
+    if (record->event.pressed) {
+        send_string(s);
+    }
+    return true;
+}
+
+int cmd_keys_down = 0;
+
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    case MOVE:
-      if (record->event.pressed) {
-        layer_on(_MOVE);
-        update_tri_layer(_MOVE, _SYMB, _MOUSE);
-      } else {
-        layer_off(_MOVE);
-        update_tri_layer(_MOVE, _SYMB, _MOUSE);
-      }
-      return false;
-      break;
-    case SYMB:
-      if (record->event.pressed) {
-        layer_on(_SYMB);
-        update_tri_layer(_MOVE, _SYMB, _MOUSE);
-      } else {
-        layer_off(_SYMB);
-        update_tri_layer(_MOVE, _SYMB, _MOUSE);
-      }
-      return false;
-      break;
-    case FUNC:
-      if (record->event.pressed) {
-        layer_on(_FUNC);
-      } else {
-        layer_off(_FUNC);
-      }
-      return false;
-      break;
-  }
-  return true;
+    switch (keycode) {
+        // Override the defualt auto shifted symbols to use SEND_STRING See
+        // https://github.com/qmk/qmk_firmware/issues/4072
+        case ampr:
+            return send_string_if_keydown(record, "&");
+        case astr:
+            return send_string_if_keydown(record, "*");
+        case at:
+            return send_string_if_keydown(record, "@");
+        case bsls:
+            return send_string_if_keydown(record, "\\");
+        case circ:
+            return send_string_if_keydown(record, "^");
+        case dlr:
+            return send_string_if_keydown(record, "$");
+        case eql:
+            return send_string_if_keydown(record, "=");
+        case exlm:
+            return send_string_if_keydown(record, "!");
+        case grv:
+            return send_string_if_keydown(record, "`");
+        case hash:
+            return send_string_if_keydown(record, "#");
+        case lbrc:
+            return send_string_if_keydown(record, "[");
+        case lcbr:
+            return send_string_if_keydown(record, "{");
+        case lprn:
+            return send_string_if_keydown(record, "(");
+        case perc:
+            return send_string_if_keydown(record, "%");
+        case pipe:
+            return send_string_if_keydown(record, "|");
+        case plus:
+            return send_string_if_keydown(record, "+");
+        case rbrc:
+            return send_string_if_keydown(record, "]");
+        case rcbr:
+            return send_string_if_keydown(record, "}");
+        case rprn:
+            return send_string_if_keydown(record, ")");
+        case tild:
+            return send_string_if_keydown(record, "~");
+
+        // cmd + cmd -> cmd + ctl
+        case cmd:
+            if (record->event.pressed) {
+                if (cmd_keys_down == 0) {
+                    register_code(KC_LCMD);
+                } else {
+                    register_code(KC_LCTL);
+                }
+                cmd_keys_down++;
+            } else {
+                if (cmd_keys_down == 1) {
+                    unregister_code(KC_LCMD);
+                } else {
+                    unregister_code(KC_LCTL);
+                }
+                cmd_keys_down--;
+            }
+            return true;
+    }
+    return true;
 }