1 #include QMK_KEYBOARD_H
2 extern keymap_config_t keymap_config
;
4 // Symbolic names for macro IDs.
5 #define _QWERTY 0 // QUERTY layer
6 #define _LOWER 1 // Lower layer
7 #define _RAISE 2 // Raise layer
8 #define _CUSTOM 3 // Custom layer (LOWER + RAISE)
9 #define _BL 4 // Backlight
10 #define _CUS0 5 // Mobile#
11 #define _CUS1 6 // signature
12 #define _CUS2 7 // macro 2
13 #define _CUS3 8 // macro 3
14 #define _CUS4 9 // macro 4
15 #define _CUS5 10 // email
16 #define _COPY 11 // copy
17 #define _PASTE 12 // paste
18 #define _CUT 13 // cut
21 #define QWERTY M(_LOWER)
22 #define LOWER M(_LOWER)
23 #define RAISE M(_RAISE)
24 #define CUSTOM M(_CUSTOM)
33 #define PASTE M(_PASTE)
36 // Func macro definitions.
37 #define LWR_PGDN LT(_LOWER, KC_PGDN) // Tap for PgDn, hold for LOWER
38 #define RSE_PGUP LT(_RAISE, KC_PGUP) // Tap for PgUp, hold for RAISE
39 #define CTL_CAPS FUNC(2) // Tap for Caps, hold for Ctrl (DOESN'T SEEM TO WORK)
40 #define SFT_ENT FUNC(3) // Tap for Enter, hold for Shift
41 #define ZM_NRM FUNC(4) // Zoom normal
42 #define ZM_IN FUNC(5) // Zoom out
43 #define ZM_OUT FUNC(6) // Zoom in
45 // Enable these functions using FUNC(n) macro.
46 const uint16_t PROGMEM fn_actions
[] = {
47 [2] = ACTION_MODS_TAP_KEY(MOD_LCTL
, KC_CAPS
),
48 [3] = ACTION_MODS_TAP_KEY(MOD_RSFT
, KC_ENT
),
49 [4] = ACTION_MODS_KEY(MOD_LCTL
, KC_0
),
50 [5] = ACTION_MODS_KEY(MOD_LCTL
, KC_MINS
),
51 [6] = ACTION_MODS_KEY(MOD_LCTL
, KC_PLUS
),
52 [7] = ACTION_MODS_KEY(MOD_LCTL
, KC_UNDS
),
55 // This config can be found at Keyboard layout editor site: https://goo.gl/cF7uIO
56 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
57 [_QWERTY
] = LAYOUT_planck_grid( /* QWERTY */
58 KC_TAB
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSPC
,
59 KC_DEL
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_ENT
,
60 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, SFT_ENT
,
61 KC_LCTL
, KC_ESC
, KC_LGUI
, KC_LALT
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
63 [_LOWER
] = LAYOUT_planck_grid( /* LOWER */
64 KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
, KC_TRNS
,
65 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_UNDS
, KC_LPRN
, KC_RPRN
, KC_LCBR
, KC_RCBR
, KC_MINS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
66 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_LBRC
, KC_RBRC
, KC_QUOT
, KC_DQT
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
67 KC_TRNS
, ZM_NRM
, ZM_IN
, ZM_OUT
, KC_TRNS
, KC_PGDN
, KC_PGDN
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
69 [_RAISE
] = LAYOUT_planck_grid( /* RAISE */
70 KC_EXLM
, KC_AT
, KC_HASH
, KC_DLR
, KC_PERC
, KC_CIRC
, KC_AMPR
, KC_ASTR
, KC_LPRN
, KC_RPRN
, KC_UNDS
, KC_TRNS
,
71 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_EQL
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_PLUS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
72 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_BSLS
, KC_PIPE
, KC_GRV
, KC_TILD
, S(KC_COMM
), S(KC_DOT
), KC_BSLS
, KC_TRNS
,
73 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_PGUP
, KC_PGUP
, KC_TRNS
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
75 [_CUSTOM
] = LAYOUT_planck_grid( /* CUSTOM */
76 KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_TRNS
,
77 KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, CUS0
, CUS3
, CUS4
, KC_TRNS
, KC_F12
, KC_TRNS
,
78 KC_TRNS
, KC_TRNS
, CUT
, COPY
, PASTE
, CUS1
, CUS5
, CUS2
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
,
79 BL
, RESET
, LALT(LCTL(KC_DEL
)), KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
, KC_TRNS
83 // Set a layer persistently.
84 void persistent_default_layer_set(uint16_t default_layer
) {
85 eeconfig_update_default_layer(default_layer
);
86 default_layer_set(default_layer
);
89 // Macro actions for each corresponding ID.
90 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
)
93 case _RAISE
: // Raised layer.
94 if (record
->event
.pressed
) {
96 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
99 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
102 case _LOWER
: // Lowered layer.
103 if (record
->event
.pressed
) {
105 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
108 update_tri_layer(_LOWER
, _RAISE
, _CUSTOM
);
111 case _BL
: // Backlight
112 if (record
->event
.pressed
) {
113 register_code(KC_RSFT
);
114 #ifdef BACKLIGHT_ENABLE
118 unregister_code(KC_RSFT
);
121 case _CUS0
: // enter your mobile# here
122 return MACRODOWN(T(9), T(9), T(9), T(MINS
),T(9), T(9), T(9), T(MINS
),T(9), T(9), T(9), T(9),END
);
123 case _CUS1
: // signature line for email
124 return MACRODOWN(T(ENT
), T(ENT
), T(MINS
), T(J
), T(W
), END
);
125 case _CUS2
: // Custom macro 2
126 return MACRODOWN( DOWN(KC_LSFT
), TYPE(KC_L
), UP(KC_LSFT
), END
);
127 case _CUS3
: // custom macro 3
128 return MACRODOWN( DOWN(KC_LSFT
), TYPE(KC_F
), UP(KC_LSFT
), END
);
129 case _CUS4
: // custom macro 4
130 return MACRODOWN( DOWN(KC_LSFT
), TYPE(KC_I
), UP(KC_LSFT
), END
);
131 case _CUS5
: // Enter your email here
132 return MACRODOWN( TYPE(KC_F
),
133 DOWN(KC_LSFT
), TYPE(KC_2
), UP(KC_LSFT
),
134 TYPE(KC_G
), TYPE(KC_M
), TYPE(KC_A
), TYPE(KC_I
), TYPE(KC_L
), TYPE(KC_DOT
), TYPE(KC_C
), TYPE(KC_O
), TYPE(KC_M
), END
);
135 case _CUT
: //cut macro
136 return MACRODOWN( DOWN(KC_LCTL
), TYPE(KC_X
), UP(KC_LCTL
), END
);
137 case _COPY
: // copy macro
138 return MACRODOWN( DOWN(KC_LCTL
), TYPE(KC_C
), UP(KC_LCTL
), END
);
139 case _PASTE
: // paste macro
140 return MACRODOWN( DOWN(KC_LCTL
), TYPE(KC_V
), UP(KC_LCTL
), END
);