3 #include "action_layer.h"
5 #define BASE 0 // default layer
6 #define SYMB 1 // symbols
7 #define ARRW 2 // arrow keys
8 #define MDIA 3 // media keys, including mouse
10 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
11 /* Keymap 0: Basic layer
13 * ,--------------------------------------------------. ,--------------------------------------------------.
14 * | = | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | - |
15 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
16 * | Tab | Q | W | E | R | T | L1 | | CAPS | Y | U | I | O | P | \ |
17 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
18 * | ESC | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
19 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
20 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
21 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
22 * | | Grv | |*SYMB*|*ARRW*| |*MDIA*|*SYMB*| [ | ] | |
23 * `----------------------------------' `----------------------------------'
24 * ,-------------. ,-------------.
26 * ,------|------|------| |------+--------+------.
28 * | Space| Bksp |------| |------| Tab |Enter |
29 * | ctrl | gui | Alt | | Alt | gui | ctrl |
30 * `--------------------' `----------------------'
32 // TODO: maybe look into changing the delay or whatever for the holding macros... not sure which way you would go with this. if the macro automatically kicks in if you hold it and press another button (no matter how long you held it for), then it wouldn't hurt to have a longer period i think... although if you hold a button and then decide not to, then you;ll register a space/bksp/etc. on accident. on the other hand, if it's too short of a delay, then you might be able to register spc/bksp/etc quickly enough, although i don't see this as big of an issue
33 // not sure if gui is meta key or super... it says meta on the basic keycodes page, and i think that's consitent with other shit, but you should really figure out how to program the keyboard to have meta and super separately instead of hacking your init.el to recognize alt as meta... because shit will get fucked up beteween awesome and emacs and other shit i'm guessing
34 // If it accepts an argument (i.e, is a function), it doesn't need KC_.
35 // Otherwise, it needs KC_*
36 [BASE] = KEYMAP( // layer 0 : default
38 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
40 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
41 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
42 KC_TRNS, KC_GRV, KC_TRNS,MO(SYMB),MO(ARRW),
45 CTL_T(KC_SPC),GUI_T(KC_BSPC),KC_LALT,
47 KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
48 KC_CAPSLOCK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
49 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
50 MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
51 MO(MDIA), MO(SYMB), KC_LBRC,KC_RBRC, KC_TRNS,
54 KC_RALT,GUI_T(KC_TAB), CTL_T(KC_ENT)
56 /* Keymap 1: Symbol Layer
58 * ,--------------------------------------------------. ,--------------------------------------------------.
59 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
60 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
61 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
62 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
63 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | . |
64 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
65 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
66 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
67 * | | | | | | | | | 0 | = | |
68 * `----------------------------------' `----------------------------------'
69 * ,-------------. ,-------------.
71 * ,------|------|------| |------+------+------.
73 * | | |------| |------| | |
75 * `--------------------' `--------------------'
80 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
81 KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
82 KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
83 KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
84 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
87 KC_TRNS,KC_TRNS,KC_TRNS,
89 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
90 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
91 KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_DOT,
92 KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
93 KC_TRNS,KC_TRNS, KC_0, KC_EQL, KC_TRNS,
96 KC_TRNS, KC_TRNS, KC_TRNS
98 /* Keymap 2: Arrow keys
100 * ,--------------------------------------------------. ,--------------------------------------------------.
101 * | | | | | | | | | | | | | | | |
102 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
103 * | | | | | | | | | | |PGDOWN| PGUP | | | |
104 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
105 * | | | | | | |------| |------| LEFT | DOWN | UP |RIGHT | | |
106 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
107 * | | | | | | | | | | | HOME | END | | | |
108 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
109 * | | | | | | | | | | | |
110 * `----------------------------------' `----------------------------------'
111 * ,-------------. ,-------------.
113 * ,------|------|------| |------+------+------.
115 * | | |------| |------| | |
117 * `--------------------' `--------------------'
122 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
123 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
124 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
125 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
126 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
129 KC_TRNS, KC_TRNS, KC_TRNS,
131 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
132 KC_TRNS, KC_TRNS, KC_PGDOWN, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
133 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
134 KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_TRNS,
135 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
138 KC_TRNS, KC_TRNS, KC_TRNS
140 /* Keymap 3: Media and mouse keys
142 * ,--------------------------------------------------. ,--------------------------------------------------.
143 * | | | | | | | | | | | | | | | |
144 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
145 * | | | | MsUp | | | | | | | | | | | |
146 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
147 * | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | |
148 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
149 * | | |Mute |VolDn | VolUp| | | | | | | | | | |
150 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
151 * | | | Prev | Play | Next | | | | | | |
152 * `----------------------------------' `----------------------------------'
153 * ,-------------. ,-------------.
155 * ,------|------|------| |------+------+------.
156 * |Brwser| | | | | | |
157 * |Back | |------| |------| | |
159 * `--------------------' `--------------------'
163 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
164 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
165 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
166 KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
167 KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT,
170 KC_WBAK, KC_TRNS, KC_TRNS,
172 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
173 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
174 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
175 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
176 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
179 KC_TRNS, KC_TRNS, KC_TRNS
183 const uint16_t PROGMEM fn_actions[] = {
184 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
187 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
189 // MACRODOWN only works in this function
192 if (record->event.pressed) {
193 register_code(KC_RSFT);
195 unregister_code(KC_RSFT);
202 // Runs just one time when the keyboard initializes.
203 void matrix_init_user(void) {
207 // Runs constantly in the background, in a loop.
208 void matrix_scan_user(void) {
210 uint8_t layer = biton32(layer_state);
212 ergodox_board_led_off();
213 ergodox_right_led_1_off();
214 ergodox_right_led_2_off();
215 ergodox_right_led_3_off();
217 // TODO: Make this relevant to the ErgoDox EZ.
219 ergodox_right_led_1_on();
222 ergodox_right_led_2_on();