2 #include QMK_KEYBOARD_H
4 extern keymap_config_t keymap_config
;
6 // Symbolic names for macro IDs.
7 #define _QWERTY 0 // QUERTY layer
8 #define _LOWER 1 // Lower layer
9 #define _RAISE 2 // Raise layer
10 #define _CUSTOM 3 // Custom layer (LOWER + RAISE)
11 #define _BL 4 // Backlight
12 #define _MOB 5 // Mobile#
13 #define _CUS1 6 // Custom macro 1
14 #define _CUS2 7 // Custom macro 2
17 #define QWERTY M(_LOWER)
18 #define LOWER M(_LOWER)
19 #define RAISE M(_RAISE)
20 #define CUSTOM M(_CUSTOM)
26 // Func macro definitions.
27 #define LWR_PGDN LT(_LOWER, KC_PGDN) // Tap for PgDn, hold for LOWER
28 #define RSE_PGUP LT(_RAISE, KC_PGUP) // Tap for PgUp, hold for RAISE
29 #define CTL_CAPS FUNC(2) // Tap for Caps, hold for Ctrl (DOESN'T SEEM TO WORK)
30 #define SFT_ENT FUNC(3) // Tap for Enter, hold for Shift
31 #define ZM_NRM FUNC(4) // Zoom normal
32 #define ZM_IN FUNC(5) // Zoom out
33 #define ZM_OUT FUNC(6) // Zoom in
34 #define EM_UNDO FUNC(7) // Emacs Undo
36 // Enable these functions using FUNC(n) macro.
37 const uint16_t PROGMEM fn_actions
[] = {
38 [2] = ACTION_MODS_TAP_KEY(MOD_LCTL
, KC_CAPS
),
39 [3] = ACTION_MODS_TAP_KEY(MOD_RSFT
, KC_ENT
),
40 [4] = ACTION_MODS_KEY(MOD_LCTL
, KC_0
),
41 [5] = ACTION_MODS_KEY(MOD_LCTL
, KC_MINS
),
42 [6] = ACTION_MODS_KEY(MOD_LCTL
, KC_PLUS
),
43 [7] = ACTION_MODS_KEY(MOD_LCTL
, KC_UNDS
),
46 // This config can be found at Keyboard layout editor site: http://goo.gl/zjXL2l
47 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
48 [_QWERTY
] = LAYOUT_planck_grid( /* QWERTY */
49 KC_TAB
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSPC
,
50 KC_LCTL
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
,
51 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, SFT_ENT
,
52 KC_LCTL
, KC_ESC
, KC_LGUI
, KC_LALT
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
54 [_LOWER
] = LAYOUT_planck_grid( /* LOWER */
55 KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
, KC_EQL
,
56 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_LPRN
, KC_RPRN
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
57 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_LBRC
, KC_RBRC
, KC_LCBR
, KC_RCBR
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
58 BL
, ZM_NRM
, ZM_IN
, ZM_OUT
, KC_TRNS
, KC_PGDN
, KC_PGDN
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
60 [_RAISE
] = LAYOUT_planck_grid( /* RAISE */
61 KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_F12
,
62 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_BSLS
, KC_PIPE
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
63 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_GRV
, KC_TILD
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
64 RESET
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_PGUP
, KC_PGUP
, KC_TRNS
, EM_UNDO
, KC_VOLD
, KC_VOLU
, KC_MUTE
66 [_CUSTOM
] = LAYOUT_planck_grid( /* CUSTOM */
67 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
68 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
69 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, MOB
, KC_TRNS
, CUS1
, CUS2
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
70 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
74 // Set a layer persistently.
75 void persistent_default_layer_set(uint16_t default_layer
) {
76 eeconfig_update_default_layer(default_layer
);
77 default_layer_set(default_layer
);
80 // Macro actions for each corresponding ID.
81 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
)
84 case _RAISE
: // Raised layer.
85 if (record
->event
.pressed
) {
87 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
90 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
93 case _LOWER
: // Lowered layer.
94 if (record
->event
.pressed
) {
96 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
99 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
102 case _BL
: // Backlight
103 if (record
->event
.pressed
) {
104 register_code(KC_RSFT
);
105 #ifdef BACKLIGHT_ENABLE
109 unregister_code(KC_RSFT
);
112 case _MOB
: // Your mobile# here.
113 return MACRODOWN(T(1), T(2), T(3), T(MINS
),
114 T(1), T(2), T(3), T(MINS
),
115 T(1), T(2), T(3), T(4),
117 case _CUS1
: // Your custom macro 1
118 return MACRODOWN(T(E
), T(M
), T(A
), T(C
), T(S
), T(SPC
), END
);
119 case _CUS2
: // Your custom macro 2
120 return MACRODOWN(T(L
), T(S
), T(SPC
), T(MINS
), T(L
), T(ENT
), END
);