]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/keymaps/common-nighthawk/keymap.c
moves brackets from J/K to U/I to remove block of common vim sequence.
[qmk_firmware.git] / keyboards / ergodox / keymaps / common-nighthawk / keymap.c
1 #include "ergodox.h"
2 #include "debug.h"
3 #include "action_layer.h"
4 #include "version.h"
5
6 #define BASE 0 // default layer
7 #define SYMB 1 // symbols
8 #define MDIA 2 // media keys
9
10 //Tap Dance Declarations
11 enum {
12   TD_U_LBRC = 0,
13   TD_I_RBRC,
14   TD_Y_ESC,
15 };
16
17 //Tap Dance Definitions
18 qk_tap_dance_action_t tap_dance_actions[] = {
19   [TD_U_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_LBRC),
20   [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC),
21   [TD_Y_ESC]  = ACTION_TAP_DANCE_DOUBLE(KC_Y, KC_ESC)
22 };
23
24 //Macro Declarations
25 static uint16_t sunds_timer;
26
27 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 /* Keymap 0: Basic layer
29  *
30  * ,--------------------------------------------------.           ,--------------------------------------------------.
31  * | Esc    |   x  |   x  |   x  |   _  | Hypr | Home |           | End  | Hypr |  Esc |   x  |   x  |   x  |   `~   |
32  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
33  * |Tab/Ctrl|   Q  |   W  |   E  |   R  |   T  |  Up  |           | PgUp |Y 2Esc| U 2[ | I 2] |   O  |   P  |Bks/Ctrl|
34  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
35  * | '"/Cmd |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;:  |Entr/Cmd|
36  * |--------+------+------+------+------+------| Down |           | PgDn |------+------+------+------+------+--------|
37  * | _/Shft |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |  ,<  |  .>  |  /?  | _/Shft |
38  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
39  *   | Alt  |   x  |   x  |   x  | Left |                                       |Right |   x  |   x  |   x  |  Alt |
40  *   `----------------------------------'                                       `----------------------------------'
41  *                                        ,-------------.       ,-------------.
42  *                                        | Mute | VolUp|       | Play |  Del   |
43  *                                 ,------|------|------|       |------+--------+------.
44  *                                 |      |      | VolDn|       | Next |        |      |
45  *                                 |Sp/~L1|  L2  |------|       |------|   L2   |Sp/~L1|
46  *                                 |      |      |Teensy|       | Prev |        |      |
47  *                                 `--------------------'       `----------------------'
48  */
49 [BASE] = KEYMAP(  // layer 0 : default
50         // left hand
51         KC_ESC,          KC_1,          KC_1,          KC_1,            KC_UNDS,  ALL_T(KC_NO),      KC_HOME,
52         CTL_T(KC_TAB),   KC_Q,          KC_W,          KC_E,            KC_R,     KC_T,              KC_UP,
53         GUI_T(KC_QUOT),  KC_A,          KC_S,          KC_D,            KC_F,     KC_G,
54         M(1),            KC_Z,          KC_X,          KC_C,            KC_V,     KC_B,              KC_DOWN,
55         KC_LALT,         KC_1,          KC_1,          KC_1,            KC_LEFT,
56                                                                         KC_MUTE,  KC_VOLU,
57                                                                         KC_VOLD,
58                                                                         LT(SYMB, KC_SPC),  TG(MDIA),  RESET,
59         // right hand
60         KC_END,          ALL_T(KC_NO),  KC_ESC,         KC_1,           KC_1,     KC_1,              KC_GRV,
61         KC_PGUP,         TD(TD_Y_ESC),  TD(TD_U_LBRC),  TD(TD_I_RBRC),  KC_O,     KC_P,              CTL_T(KC_BSPC),
62                          KC_H,          KC_J,           KC_K,           KC_L,     KC_SCOLON,         GUI_T(KC_ENT),
63         KC_PGDN,         KC_N,          KC_M,           KC_COMM,        KC_DOT,   KC_SLSH,           M(1),
64                                         KC_RGHT,        KC_1,           KC_1,     KC_1,              KC_RALT,
65         KC_MPLY,         KC_DEL,
66         KC_MNXT,
67         KC_MPRV,         TG(MDIA),      LT(SYMB, KC_SPC)
68     ),
69 /* Keymap 1: Symbol Layer
70  *
71  * ,--------------------------------------------------.           ,--------------------------------------------------.
72  * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
73  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
74  * |        |   !  |   ^  |   {  |   (  |   [  |      |           |      |   =  |   7  |   8  |   9  |   0  |        |
75  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
76  * |        |   &  |   $  |   }  |   )  |   ]  |------|           |------|   +  |   4  |   5  |   6  |   *  |        |
77  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
78  * |        |   \  |   #  |   @  |   %  |   |  |      |           |      |   -  |   1  |   2  |   3  |   /  |        |
79  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
80  *   |      |      |      |      |      |                                       |   0  |   0  |   .  |      |      |
81  *   `----------------------------------'                                       `----------------------------------'
82  *                                        ,-------------.       ,-------------.
83  *                                        |      |      |       |      |      |
84  *                                 ,------|------|------|       |------+------+------.
85  *                                 |      |      |      |       |      |      |      |
86  *                                 |      |      |------|       |------|      |      |
87  *                                 |      |      |      |       |      |      |      |
88  *                                 `--------------------'       `--------------------'
89  */
90 // SYMBOLS
91 [SYMB] = KEYMAP(
92        // left hand
93        KC_TRNS,  KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_TRNS,
94        KC_TRNS,  KC_EXLM,  KC_CIRC,  KC_LCBR,  KC_LPRN,  KC_LBRC,  KC_TRNS,
95        KC_TRNS,  KC_AMPR,  KC_DLR,   KC_RCBR,  KC_RPRN,  KC_RBRC,
96        KC_TRNS,  KC_BSLS,  KC_HASH,  KC_AT,    KC_PERC,  KC_PIPE,  KC_TRNS,
97        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
98                                                KC_TRNS,  KC_TRNS,
99                                                KC_TRNS,
100                                                KC_TRNS,  KC_TRNS,  KC_TRNS,
101        // right hand
102        KC_TRNS,  KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_TRNS,
103        KC_TRNS,  KC_EQL,   KC_7,     KC_8,     KC_9,     KC_0,     KC_TRNS,
104                  KC_PLUS,  KC_4,     KC_5,     KC_6,     KC_ASTR,  KC_TRNS,
105        KC_TRNS,  KC_MINS,  KC_1,     KC_2,     KC_3,     KC_TRNS,  KC_TRNS,
106                            KC_0,     KC_0,     KC_DOT,   KC_TRNS,  KC_TRNS,
107        KC_TRNS,  KC_TRNS,
108        KC_TRNS,
109        KC_TRNS,  KC_TRNS,  KC_TRNS
110 ),
111 /* Keymap 2: Media and mouse keys
112  *
113  * ,--------------------------------------------------.           ,--------------------------------------------------.
114  * |Version |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
115  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
116  * |        |      |      |      |      |      |      |           |      |      | WhDn | WhUp |      |      |        |
117  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
118  * |        |      |      | R-Ck | L-Ck |      |------|           |------| MsLt | MsDn | MsUp | MsRt |      |        |
119  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
120  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
121  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
122  *   |      |      |      |      |      |                                       |      |      |      |      |      |
123  *   `----------------------------------'                                       `----------------------------------'
124  *                                        ,-------------.       ,-------------.
125  *                                        |      |      |       |      |      |
126  *                                 ,------|------|------|       |------+------+------.
127  *                                 |      |      |      |       |      |      |Brwser|
128  *                                 |      |      |------|       |------|      |Back  |
129  *                                 |      |      |      |       |      |      |      |
130  *                                 `--------------------'       `--------------------'
131  */
132 // MEDIA AND MOUSE
133 [MDIA] = KEYMAP(
134        M(0),    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
135        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
136        KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS,
137        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
138        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
139                                            KC_TRNS, KC_TRNS,
140                                                     KC_TRNS,
141                                   KC_TRNS, KC_TRNS, KC_TRNS,
142     // right hand
143        KC_TRNS,  KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
144        KC_TRNS,  KC_TRNS,     KC_WH_U,     KC_WH_D,     KC_TRNS,     KC_TRNS, KC_TRNS,
145                  KC_MS_LEFT,  KC_MS_DOWN,  KC_MS_UP,    KC_MS_RIGHT, KC_TRNS, KC_TRNS,
146        KC_TRNS,  KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
147                               KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
148        KC_TRNS, KC_TRNS,
149        KC_TRNS,
150        KC_TRNS, KC_TRNS, KC_WBAK
151 ),
152 };
153
154 const uint16_t PROGMEM fn_actions[] = {
155     [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
156 };
157
158 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
159 {
160   // MACRODOWN only works in this function
161       switch(id) {
162         case 0:
163           if (record->event.pressed) {
164             SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
165           }
166           break;
167
168         case 1:
169           if (record->event.pressed) {
170             sunds_timer = timer_read();
171             register_code (KC_LSFT);
172           } else {
173             if (timer_elapsed (sunds_timer) < TAPPING_TERM) {
174               register_code (KC_MINS);
175               unregister_code (KC_MINS);
176             }
177             unregister_code (KC_LSFT);
178           }
179           break;
180
181       }
182     return MACRO_NONE;
183 };
184
185 // Runs just one time when the keyboard initializes.
186 void matrix_init_user(void) {
187
188 };
189
190 // Runs constantly in the background, in a loop.
191 void matrix_scan_user(void) {
192
193     uint8_t layer = biton32(layer_state);
194
195     ergodox_board_led_off();
196     ergodox_right_led_1_off();
197     ergodox_right_led_2_off();
198     ergodox_right_led_3_off();
199     switch (layer) {
200       // TODO: Make this relevant to the ErgoDox EZ.
201         case 1:
202             ergodox_right_led_3_on();
203             break;
204         case 2:
205             ergodox_right_led_2_on();
206             break;
207         default:
208             // none
209             break;
210     }
211     if (keyboard_report->mods & MOD_BIT(KC_LSFT)) {
212         ergodox_right_led_1_on ();
213     }
214 };