|
@@ -1,331 +1,259 @@
|
|
|
#include "planck.h"
|
|
#include "planck.h"
|
|
|
#include "action_layer.h"
|
|
#include "action_layer.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 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
|
|
|
|
|
+
|
|
|
|
|
+#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
|
|
|
|
|
|
|
|
-#define AC(X) A(C(X))
|
|
|
|
|
-#define SC(X) S(C(X))
|
|
|
|
|
|
|
+extern keymap_config_t keymap_config;
|
|
|
|
|
|
|
|
enum planck_layers {
|
|
enum planck_layers {
|
|
|
- _COLEMAK,
|
|
|
|
|
- _QWERTY,
|
|
|
|
|
- _SYMB,
|
|
|
|
|
- _MOVE,
|
|
|
|
|
- _FUNC,
|
|
|
|
|
- _MOUSE,
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-enum planck_keycodes {
|
|
|
|
|
- COLEMAK = SAFE_RANGE,
|
|
|
|
|
- QWERTY,
|
|
|
|
|
|
|
+ BASE,
|
|
|
SYMB,
|
|
SYMB,
|
|
|
MOVE,
|
|
MOVE,
|
|
|
FUNC,
|
|
FUNC,
|
|
|
- MOUSE,
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
|
|
-
|
|
|
|
|
- /* COLEMAK
|
|
|
|
|
- * ,-----------------------------------------------------------------------.
|
|
|
|
|
- * |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 |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
|
|
|
|
|
- * `-----------------------------------------------------------------------'
|
|
|
|
|
- */
|
|
|
|
|
- [_COLEMAK] = LAYOUT_planck_grid(
|
|
|
|
|
- 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,
|
|
|
|
|
|
|
+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,
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
- FUNC, KC_LCTL, KC_LALT, KC_LGUI,
|
|
|
|
|
- SYMB, KC_ENT, KC_SPC, MOVE,
|
|
|
|
|
- KC_RGUI, KC_RALT, KC_RCTL, FUNC
|
|
|
|
|
|
|
+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
|
|
|
),
|
|
),
|
|
|
|
|
|
|
|
- /* QWERTY
|
|
|
|
|
- * ,-----------------------------------------------------------------------.
|
|
|
|
|
- * |Tab | Q | W | E | R | T | Y | U | I | O | P | - |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * |Bksp | A | S | D | F | G | H | J | K | L | ; | ' |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * |Shift| Z | X | C | V | B | N | M | , | . | / |Shift|
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
|
|
|
|
|
- * `-----------------------------------------------------------------------'
|
|
|
|
|
- */
|
|
|
|
|
- [_QWERTY] = LAYOUT_planck_grid(
|
|
|
|
|
- KC_TAB, KC_Q, KC_W, KC_E,
|
|
|
|
|
- KC_R, KC_T, KC_Y, KC_U,
|
|
|
|
|
- KC_I, KC_O, KC_P, KC_MINS,
|
|
|
|
|
-
|
|
|
|
|
- KC_BSPC, KC_A, KC_S, KC_D,
|
|
|
|
|
- KC_F, KC_G, KC_H, KC_J,
|
|
|
|
|
- KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
|
|
|
-
|
|
|
|
|
- KC_LSFT, KC_Z, KC_X, KC_C,
|
|
|
|
|
- KC_V, KC_B, KC_N, 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
|
|
|
|
|
|
|
+ [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,
|
|
|
|
|
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
|
|
),
|
|
),
|
|
|
|
|
|
|
|
- /* SYMB
|
|
|
|
|
- * ,-----------------------------------------------------------------------.
|
|
|
|
|
- * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |ndash|
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | | | | | | | | | |
|
|
|
|
|
- * `-----------------------------------------------------------------------'
|
|
|
|
|
- */
|
|
|
|
|
- [_SYMB] = LAYOUT_planck_grid(
|
|
|
|
|
- KC_ESC, KC_1, KC_2, KC_3,
|
|
|
|
|
- KC_4, KC_5, KC_6, KC_7,
|
|
|
|
|
- KC_8, KC_9, KC_0, A(KC_MINS),
|
|
|
|
|
-
|
|
|
|
|
- KC_DEL, KC_EXLM, KC_AT, KC_HASH,
|
|
|
|
|
- KC_DLR, KC_PERC, KC_CIRC, KC_AMPR,
|
|
|
|
|
- KC_ASTR, KC_LPRN, KC_RPRN, A(KC_3),
|
|
|
|
|
-
|
|
|
|
|
- _______, KC_TILD, KC_GRV, KC_PLUS,
|
|
|
|
|
- KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC,
|
|
|
|
|
- KC_RBRC, KC_LCBR, KC_RCBR, _______,
|
|
|
|
|
-
|
|
|
|
|
- _______, _______, _______, _______,
|
|
|
|
|
- _______, _______, _______, _______,
|
|
|
|
|
- _______, _______, _______, _______
|
|
|
|
|
|
|
+ [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, ____,
|
|
|
|
|
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
|
|
),
|
|
),
|
|
|
|
|
|
|
|
- /* MOVE
|
|
|
|
|
- * ,-----------------------------------------------------------------------.
|
|
|
|
|
- * | | | | | | |CtrUp|Home | Up | End |Caps |Mouse|
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | | | |CtrL |Left |Down |Right|CtrR | |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | | | |CtrDn|PgDn |PgUp |TabL |TabR | |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | | | | | | | | | |
|
|
|
|
|
- * `-----------------------------------------------------------------------'
|
|
|
|
|
- */
|
|
|
|
|
- [_MOVE] = LAYOUT_planck_grid(
|
|
|
|
|
- AC(KC_A), AC(KC_B), AC(KC_C), AC(KC_D),
|
|
|
|
|
- AC(KC_E), AC(KC_F), C(KC_UP), KC_HOME,
|
|
|
|
|
- KC_UP, KC_END, KC_CAPS, MOUSE,
|
|
|
|
|
-
|
|
|
|
|
- AC(KC_G), AC(KC_H), AC(KC_I), AC(KC_J),
|
|
|
|
|
- AC(KC_K), AC(KC_L), C(KC_LEFT), KC_LEFT,
|
|
|
|
|
- KC_DOWN, KC_RGHT, C(KC_RIGHT), XXXXXXX,
|
|
|
|
|
-
|
|
|
|
|
- _______, AC(KC_M), AC(KC_N), AC(KC_O),
|
|
|
|
|
- AC(KC_P), AC(KC_Q), C(KC_DOWN), KC_PGDN,
|
|
|
|
|
- KC_PGUP, SC(KC_TAB), C(KC_TAB), _______,
|
|
|
|
|
-
|
|
|
|
|
- _______, _______, _______, _______,
|
|
|
|
|
- _______, _______, _______, _______,
|
|
|
|
|
- _______, _______, _______, _______
|
|
|
|
|
|
|
+ [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, ____, ____, ____, ____
|
|
|
),
|
|
),
|
|
|
-
|
|
|
|
|
- /* FUNC
|
|
|
|
|
- * ,-----------------------------------------------------------------------.
|
|
|
|
|
- * |Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |VolUp|
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | | | | | | |Clmak|Qwrty| |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | |Prev |Mute |Play |Next | | | | |
|
|
|
|
|
- * `-----------------------------------------------------------------------'
|
|
|
|
|
- */
|
|
|
|
|
- [_FUNC] = LAYOUT_planck_grid(
|
|
|
|
|
- RESET, KC_F1, KC_F2, KC_F3,
|
|
|
|
|
- KC_F4, KC_F5, KC_F6, KC_F7,
|
|
|
|
|
- KC_F8, KC_F9, KC_F10, KC_VOLU,
|
|
|
|
|
-
|
|
|
|
|
- KC_POWER, KC_F11, KC_F12, KC_F13,
|
|
|
|
|
- KC_F14, KC_F15, KC_F16, KC_F17,
|
|
|
|
|
- KC_F18, KC_F19, KC_F20, KC_VOLD,
|
|
|
|
|
-
|
|
|
|
|
- _______, XXXXXXX, KC_HOME, SC(KC_TAB),
|
|
|
|
|
- C(KC_TAB), KC_END, XXXXXXX, XXXXXXX,
|
|
|
|
|
- XXXXXXX, COLEMAK, QWERTY, _______,
|
|
|
|
|
-
|
|
|
|
|
- _______, _______, _______, _______,
|
|
|
|
|
- KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT,
|
|
|
|
|
- _______, _______, _______, _______
|
|
|
|
|
- ),
|
|
|
|
|
-
|
|
|
|
|
- /* MOUSE
|
|
|
|
|
- * ,-----------------------------------------------------------------------.
|
|
|
|
|
- * | | |CtrL |CtrU |CtrR | B5 |CtrU | ScL |Up | ScR | | |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | Ac0 | Ac1 | Ac2 | B4 |CtrL |Left |Down |Right|CtrR | |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | |Home | End | B3 |CtrD | ScD | ScU |TabL |TabR | |
|
|
|
|
|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
|
|
|
- * | | | | | | B2 | B1 | | | | | |
|
|
|
|
|
- * `-----------------------------------------------------------------------'
|
|
|
|
|
- */
|
|
|
|
|
- [_MOUSE] = LAYOUT_planck_grid(
|
|
|
|
|
- _______, XXXXXXX, C(KC_LEFT), C(KC_UP),
|
|
|
|
|
- C(KC_RIGHT), KC_BTN5, C(KC_UP), KC_WH_R,
|
|
|
|
|
- KC_MS_U, KC_WH_L, XXXXXXX, XXXXXXX,
|
|
|
|
|
-
|
|
|
|
|
- _______, XXXXXXX, KC_ACL0, KC_ACL1,
|
|
|
|
|
- KC_ACL2, KC_BTN4, C(KC_LEFT), KC_MS_L,
|
|
|
|
|
- KC_MS_D, KC_MS_R, C(KC_RIGHT), XXXXXXX,
|
|
|
|
|
-
|
|
|
|
|
- _______, XXXXXXX, XXXXXXX, KC_HOME,
|
|
|
|
|
- KC_END, KC_BTN3, C(KC_DOWN), KC_WH_U,
|
|
|
|
|
- KC_WH_D, SC(KC_TAB), C(KC_TAB), _______,
|
|
|
|
|
-
|
|
|
|
|
- _______, _______, _______, _______,
|
|
|
|
|
- _______, KC_BTN2, KC_BTN1, _______,
|
|
|
|
|
- _______, _______, _______, _______
|
|
|
|
|
- )
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-#ifdef AUDIO_ENABLE
|
|
|
|
|
-float colemak_song[][2] = SONG(COLEMAK_SOUND);
|
|
|
|
|
-float qwerty_song[][2] = SONG(QWERTY_SOUND);
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
-void set_colemak(void) {
|
|
|
|
|
-#ifdef AUDIO_ENABLE
|
|
|
|
|
- stop_all_notes();
|
|
|
|
|
- PLAY_SONG(colemak_song);
|
|
|
|
|
-#endif
|
|
|
|
|
- set_single_persistent_default_layer(_COLEMAK);
|
|
|
|
|
|
|
+bool send_string_if_keydown(keyrecord_t *record, const char *s) {
|
|
|
|
|
+ if (record->event.pressed) {
|
|
|
|
|
+ SEND_STRING(s);
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void set_qwerty(void) {
|
|
|
|
|
-#ifdef AUDIO_ENABLE
|
|
|
|
|
- stop_all_notes();
|
|
|
|
|
- PLAY_SONG(qwerty_song);
|
|
|
|
|
-#endif
|
|
|
|
|
- set_single_persistent_default_layer(_QWERTY);
|
|
|
|
|
-}
|
|
|
|
|
|
|
+int cmd_keys_down = 0;
|
|
|
|
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
|
switch (keycode) {
|
|
switch (keycode) {
|
|
|
- case COLEMAK:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- set_colemak();
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- case QWERTY:
|
|
|
|
|
|
|
+ // 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 (record->event.pressed) {
|
|
|
- set_qwerty();
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- case SYMB:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- layer_off(_MOUSE);
|
|
|
|
|
- layer_on(_SYMB);
|
|
|
|
|
- } else {
|
|
|
|
|
- layer_off(_SYMB);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- case MOVE:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- layer_off(_MOUSE);
|
|
|
|
|
- layer_on(_MOVE);
|
|
|
|
|
|
|
+ if (cmd_keys_down == 0) {
|
|
|
|
|
+ register_code(KC_LCMD);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ register_code(KC_LCTL);
|
|
|
|
|
+ }
|
|
|
|
|
+ cmd_keys_down++;
|
|
|
} else {
|
|
} else {
|
|
|
- layer_off(_MOVE);
|
|
|
|
|
|
|
+ if (cmd_keys_down == 1) {
|
|
|
|
|
+ unregister_code(KC_LCMD);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ unregister_code(KC_LCTL);
|
|
|
|
|
+ }
|
|
|
|
|
+ cmd_keys_down--;
|
|
|
}
|
|
}
|
|
|
- return false;
|
|
|
|
|
- case FUNC:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- layer_off(_MOUSE);
|
|
|
|
|
- layer_on(_FUNC);
|
|
|
|
|
- } else {
|
|
|
|
|
- layer_off(_FUNC);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- case MOUSE:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- layer_on(_MOUSE);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
-
|
|
|
|
|
- // Override the defualt auto shifted symbols to use SEND_STRING
|
|
|
|
|
- // See https://github.com/qmk/qmk_firmware/issues/4072
|
|
|
|
|
- case KC_EXLM:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("!"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_AT:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("@"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_HASH:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("#"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_DLR:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("$"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_PERC:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("%"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_CIRC:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("^"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_AMPR:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("&"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_ASTR:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("*"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_LPRN:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("("); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_RPRN:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING(")"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_TILD:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("~"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_GRV:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("`"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_PLUS:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("+"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_EQL:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("="); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_PIPE:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("|"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_BSLS:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("\\"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_LBRC:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("["); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_RBRC:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("]"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_LCBR:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("{"); }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_RCBR:
|
|
|
|
|
- if (record->event.pressed) { SEND_STRING("}"); }
|
|
|
|
|
- return false;
|
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|