1 #include QMK_KEYBOARD_H
3 #include "action_layer.h"
4 #include "bootloader.h"
6 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
7 LAYOUT_ergodox( // layer 0 : default
9 KC_EQL
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_LBRC
,
10 KC_FN25
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_HOME
,
11 LT(1, KC_CAPS
) , KC_A
, KC_S
, KC_D
, KC_F
, KC_G
,
12 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_PGUP
,
13 KC_LGUI
, KC_GRV
,KC_LEFT
,KC_RGHT
,KC_LALT
,
16 KC_BSPC
,KC_DEL
,KC_FN23
,
18 KC_RBRC
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
,
19 KC_END
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_FN28
,
20 KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
,LT(1, KC_QUOT
),
21 KC_PGDN
, KC_N
, KC_M
, KC_COMM
,KC_DOT
, KC_SLSH
,KC_FN29
,
22 KC_RALT
, KC_DOWN
,KC_UP
, KC_NO
,KC_RGUI
,
25 KC_FN29
,KC_ENT
,KC_SPC
28 LAYOUT_ergodox( // layer 1 : function and symbol keys
30 KC_TRNS
,KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F11
,
31 KC_TRNS
,KC_AT
,KC_UNDS
,KC_LBRC
,KC_RBRC
,KC_CIRC
,KC_TRNS
,
32 KC_TRNS
,KC_BSLS
,KC_SLSH
,KC_LCBR
,KC_RCBR
,KC_ASTR
,
33 KC_TRNS
,KC_HASH
,KC_DLR
,KC_PIPE
,KC_TILD
,KC_GRV
,KC_TRNS
,
34 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
37 KC_TRNS
,KC_TRNS
,KC_FN1
,
39 KC_F12
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_TRNS
,
40 KC_TRNS
,KC_EXLM
,LSFT(KC_COMM
),LSFT(KC_DOT
),KC_EQL
,KC_AMPR
, KC_TRNS
,
41 LSFT(KC_SLSH
),KC_LPRN
,KC_RPRN
,KC_MINS
,LSFT(KC_SCLN
),KC_TRNS
,
42 KC_TRNS
,KC_PLUS
,LSFT(KC_5
),LSFT(KC_QUOT
),KC_QUOT
,KC_SCLN
,KC_TRNS
,
43 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
46 KC_TRNS
,KC_TRNS
,KC_TRNS
49 LAYOUT_ergodox( // layer 2: navigation
51 KC_NO
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
52 KC_TRNS
,KC_PGUP
,KC_HOME
,KC_UP
,KC_END
,KC_NO
,KC_TRNS
,
53 KC_TRNS
,KC_PGDN
,KC_LEFT
,KC_DOWN
,KC_RGHT
,KC_NO
,
54 KC_TRNS
,KC_NO
, KC_NO
, KC_NO
, KC_NO
,KC_NO
,KC_NO
,
55 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
58 KC_TRNS
,KC_TRNS
,KC_FN1
,
60 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
61 KC_TRNS
,KC_TRNS
, KC_HOME
, KC_TRNS
, KC_TRNS
, KC_END
,KC_TRNS
,
62 KC_NO
, KC_LEFT
, KC_UP
, KC_DOWN
, KC_RGHT
,KC_TRNS
,
63 KC_TRNS
,KC_TRNS
, KC_HOME
, KC_UP
, KC_END
, KC_PGUP
,KC_TRNS
,
64 KC_LEFT
, KC_DOWN
,KC_RGHT
,KC_PGDN
,KC_TRNS
,
67 KC_TRNS
,KC_TRNS
,KC_TRNS
69 LAYOUT_ergodox( // layer 3 : teensy bootloader functions
71 KC_FN0
, KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
72 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
73 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
74 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
75 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
78 KC_TRNS
,KC_TRNS
,KC_FN1
,
80 KC_TRNS
, KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
81 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
82 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
83 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
84 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
87 KC_TRNS
,KC_TRNS
,KC_TRNS
91 LAYOUT_ergodox( // layer 4: numpad
93 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
94 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
95 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
96 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
97 KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,KC_TRNS
,
100 KC_TRNS
,KC_TRNS
,KC_TRNS
,
102 KC_TRNS
,KC_NLCK
,KC_PSLS
,KC_PAST
,KC_PAST
,KC_PMNS
,KC_BSPC
,
103 KC_TRNS
,KC_NO
, KC_P7
, KC_P8
, KC_P9
, KC_PMNS
,KC_BSPC
,
104 KC_NO
, KC_P4
, KC_P5
, KC_P6
, KC_PPLS
,KC_PENT
,
105 KC_TRNS
,KC_NO
, KC_P1
, KC_P2
, KC_P3
, KC_PPLS
,KC_PENT
,
106 KC_P0
, KC_PDOT
,KC_SLSH
,KC_PENT
,KC_PENT
,
109 KC_TRNS
,KC_TRNS
,KC_TRNS
114 /* id for user defined functions */
120 * Fn action definition
122 const uint16_t PROGMEM fn_actions
[] = {
123 [0] = ACTION_FUNCTION(TEENSY_KEY
), // FN0 - Teensy key
124 [1] = ACTION_LAYER_SET(0, ON_PRESS
),
125 //[11] = ACTION_MODS_KEY(MOD_LSFT, KC_COMM),
126 //[12] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT),
128 //[14] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH),
129 //[17] = ACTION_MODS_KEY(MOD_LSFT, KC_SCLN),
130 //[20] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
131 //[21] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),
132 [23] = ACTION_LAYER_SET(3, ON_PRESS
),
133 [24] = ACTION_LAYER_SET(2, ON_PRESS
),
134 [25] = ACTION_MODS_TAP_KEY(MOD_LCTL
, KC_TAB
),
135 [26] = ACTION_LAYER_SET(1, ON_PRESS
),
136 [28] = ACTION_MODS_TAP_KEY(MOD_RCTL
,KC_BSLS
),
137 //[29] = ACTION_LAYER_TOGGLE(4),
138 [29] = ACTION_MODS_TAP_KEY(MOD_RSFT
,KC_ESC
),
142 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
)
144 // MACRODOWN only works in this function
147 if (record
->event
.pressed
) {
148 register_code(KC_RSFT
);
150 unregister_code(KC_RSFT
);
157 // Runs just one time when the keyboard initializes.
158 void matrix_init_user(void) {
163 void action_function(keyrecord_t
*event
, uint8_t id
, uint8_t opt
)
166 if (id
== TEENSY_KEY
) {
168 print("\n\nJump to bootloader... ");
170 bootloader_jump(); // should not return
171 print("not supported.\n");