3 // Keyboard layer definitions
9 // Keyboard macro defintions
15 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Level 0: Default Layer
17 * ,---------------------------------------------------------------------------------------.
18 * | Q | W | E | R | T | Y | U | I | O | P | BSP |
19 * |---------------------------------------------------------------------------------------|
20 * | A | S | D | F | G | H | J | K | L | ENT | RSFT |
21 * |---------------------------------------------------------------------------------------|
22 * |LT(2|Z)|LT(3|X)| C | V | B | SPC | N | M | , |LT(1|.)| RCTL |
23 * |---------------------------------------------------------------------------------------|
26 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
27 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_RSFT},
28 {LT(2, KC_Z), LT(3, KC_X), KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_COMMA, LT(1, KC_DOT), KC_RCTL}
30 /* Level 1: Numbers Layer
31 * ,---------------------------------------------------------------------------------------.
32 * | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
33 * |---------------------------------------------------------------------------------------|
34 * | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | INS | PGUP |
35 * |---------------------------------------------------------------------------------------|
36 * | LATL | 1 | 2 | 3 | 0 | ENT | LEFT | DOWN | RGHT | !TRNS!| PGDN |
37 * |---------------------------------------------------------------------------------------|
40 {KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
41 {KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_INSERT, KC_PGUP},
42 {KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_PGDN}
44 /* Level 2: Symbols Layer
45 * ,---------------------------------------------------------------------------------------.
46 * | ! | @ | # | $ | % | ^ | & | * | _ | = | ? |
47 * |---------------------------------------------------------------------------------------|
48 * | RESET | LSFT | ~ | { | } | \ | | | ; | : | ` | " |
49 * |---------------------------------------------------------------------------------------|
50 * | !TRNS!| LCTL | TRNS | [ | ] | TAB | < | > | TRNS | RCTL | TRNS |
51 * |---------------------------------------------------------------------------------------|
54 {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_EQL, KC_QUES},
55 {RESET, KC_LSFT, KC_TILD, KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, KC_GRV, KC_DQUO},
56 {KC_TRNS, KC_LCTL, KC_TRNS, KC_LBRC, KC_RBRC, KC_TAB, KC_LABK, KC_RABK, KC_TRNS, KC_RCTL, KC_TRNS}
58 /* Level 3: Media Layer
59 * ,---------------------------------------------------------------------------------------.
60 * |RGB_TOG|RGB_HUI|RGB_SAI|RGB_VAI| GIT_CM| CALC | WREF | WFAV | MUTE | VOLD | VOLU |
61 * |---------------------------------------------------------------------------------------|
62 * |RGB_MOD|RGB_HUD|RGB_SAD|RGB_VAD| GIT_ST| WHOM | WBAK | WFWD | TRNS | STOP | PLAY |
63 * |---------------------------------------------------------------------------------------|
64 * | TRNS | !TRNS!| TRNS | HM_DIR| GIT_PU| MYCM | WSTP | WSCH | MSEL | MPRV | MNXT |
65 * |---------------------------------------------------------------------------------------|
68 {RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, GIT_CM, KC_CALC, KC_WREF, KC_WFAV, KC_MUTE, KC_VOLD, KC_VOLU},
69 {RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, GIT_ST, KC_WHOM, KC_WBAK, KC_WFWD, KC_TRNS, KC_MSTP, KC_MPLY},
70 {KC_TRNS, KC_TRNS, KC_TRNS, HM_DIR, GIT_PU, KC_MYCM, KC_WSTP, KC_WSCH, KC_MSEL, KC_MPRV, KC_MNXT}
74 void press_and_release_key(uint8_t code)
77 unregister_code(code);
80 void press_and_release_mod_key(uint8_t mod, uint8_t code)
84 unregister_code(code);
88 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
90 // MACRODOWN only works in this function
94 if (record->event.pressed)
96 return MACRO(T(G), T(I), T(T), T(SPC),
97 T(S), T(T), T(A), T(T), T(U), T(S), END);
101 if (record->event.pressed)
103 return MACRO(T(G), T(I), T(T), T(SPC),
104 T(P), T(U), T(L), T(L), END);
108 if (record->event.pressed)
110 return MACRO(T(G), T(I), T(T), T(SPC),
111 T(C), T(O), T(M), T(M), T(I), T(T), END);
115 if (record->event.pressed)
117 /*press_and_release_key(KC_C);
118 press_and_release_key(KC_D);
119 press_and_release_key(KC_SPC);
120 press_and_release_mod_key(KC_LSFT, KC_GRV);
121 press_and_release_key(KC_SLSH);
122 press_and_release_key(KC_Q);
123 press_and_release_key(KC_M);
124 press_and_release_key(KC_K);
125 press_and_release_mod_key(KC_LSFT, KC_MINS);*/
128 D(LSFT), T(GRV), U(LSFT), T(SLSH),
129 T(Q), T(M), T(K), D(LSFT), T(MINS), U(LSFT),
130 T(F), T(I), T(R), T(M), T(W), T(A), T(R), T(E), T(SLSH),
131 T(K), T(E), T(Y), T(B), T(O), T(A), T(R), T(D), T(S), T(SLSH),
132 T(M), T(I), T(U), T(N), T(I), T(3), T(2), T(SLSH),
133 T(K), T(E), T(Y), T(M), T(A), T(P), T(S), END);
139 void matrix_init_user(void) {
142 void matrix_scan_user(void) {
145 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
149 void led_set_user(uint8_t usb_led) {
151 if (usb_led & (1 << USB_LED_NUM_LOCK)) {
157 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
163 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
169 if (usb_led & (1 << USB_LED_COMPOSE)) {
175 if (usb_led & (1 << USB_LED_KANA)) {