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