1 #include QMK_KEYBOARD_H
4 extern keymap_config_t keymap_config
;
6 // Each layer gets a name for readability, which is then used in the keymap matrix below.
7 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
8 // Layer names don't all need to be of the same length, obviously, and you can also skip them
9 // entirely and just use numbers.
10 #define BASE 0 // default layer
11 #define FLOCK 1 // symbols arrows and F keys on F held down
12 #define JLOCK 2 // same as Flock but with fall thru J and mapped to J held down
14 #define FLOCK_F LT(FLOCK, KC_F)
15 #define FLOCK_J LT(JLOCK, KC_J)
17 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
20 * ,-----------------------------------------------------------------------------------.
21 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
22 * |------+------+------+------+------+-------------+------+------+------+------+------|
23 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
24 * |------+------+------+------+------+------|------+------+------+------+------+------|
25 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
26 * |------+------+------+------+------+------+------+------+------+------+------+------|
27 * | Brite| Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Left | Down | Up |Right |
28 * `-----------------------------------------------------------------------------------'
31 TD(1), KC_2
, KC_3
, KC_4
, KC_5
, KC_MINS
, KC_EQL
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, \
32 KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_TAB
, KC_TAB
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, \
33 SFT_T(KC_A
), ALT_T(KC_S
),CTL_T(KC_D
), FLOCK_F
, GUI_T(KC_G
), KC_BSPC
, KC_DELETE
, GUI_T(KC_H
), FLOCK_J
, CTL_T(KC_K
), ALT_T(KC_L
), SFT_T(KC_SCLN
), \
34 KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_SPC
, KC_ENT
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_QUOTE
37 KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F11
, KC_F12
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, \
38 KC_LBRC
, KC_GRV
, KC_TILDE
, S(KC_1
), XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_HOME
, KC_PGUP
, XXXXXXX
, KC_RBRC
, \
39 S(KC_LBRC
), _______
, _______
, _______
, _______
, XXXXXXX
, XXXXXXX
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RIGHT
, S(KC_RBRC
), \
40 KC_BSLS
, KC_PIPE
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_ESC
, KC_ESC
, XXXXXXX
, KC_END
, KC_PGDOWN
, KC_QUES
, KC_SLASH \
43 KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F11
, KC_F12
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, \
44 KC_LBRC
, KC_GRV
, KC_TILDE
, S(KC_1
), XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_HOME
, KC_PGUP
, XXXXXXX
, KC_RBRC
, \
45 S(KC_LBRC
), _______
, _______
, _______
, _______
, XXXXXXX
, XXXXXXX
, KC_LEFT
, _______
, KC_UP
, KC_RIGHT
, S(KC_RBRC
), \
46 KC_BSLS
, KC_PIPE
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_ESC
, KC_ESC
, XXXXXXX
, KC_END
, KC_PGDOWN
, KC_QUES
, KC_SLASH \
50 #ifdef TAP_DANCE_ENABLE
51 void tap_1(qk_tap_dance_state_t
*state
, void *user_data
) {
52 switch (state
->count
) {
55 unregister_code (KC_1
);
58 register_code (KC_ESC
);
59 unregister_code (KC_ESC
);
62 register_code (KC_LSFT
);
64 unregister_code (KC_1
);
65 unregister_code (KC_LSFT
);
69 qk_tap_dance_action_t tap_dance_actions
[] = {
70 [0] = ACTION_TAP_DANCE_DOUBLE(KC_1
, KC_ESC
),
71 [1] = ACTION_TAP_DANCE_FN(tap_1
)