]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/handwired/xeal60/keymaps/heartrobotninja/keymap.c
3a7ef9db39583a563543f8ef9b7f1ba4c519bcab
[qmk_firmware.git] / keyboards / handwired / xeal60 / keymaps / heartrobotninja / keymap.c
1 #include QMK_KEYBOARD_H
2
3
4 extern keymap_config_t keymap_config;
5
6 // Each layer gets a name for readability, which is then used in the keymap matrix below.
7 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
8 // Layer names don't all need to be of the same length, obviously, and you can also skip them
9 // entirely and just use numbers.
10 #define _COLE 0
11 #define _LOWER 1
12 #define _RAISE 2
13 #define _AUX 16
14
15 /* Layers */
16 enum
17 {
18   COLE = 0,
19   LOWER, // right hand 10 key.
20   RAISE, // left hand Fn, right hand symbols.
21   AUX,
22 };
23
24 /* Tap Dancery */
25 enum
26 {
27   TD_BTK,
28   TD_TDE,
29   TD_LPRN,
30   TD_RPRN,
31   TD_MIN,
32   TD_USC,
33 };
34
35 bool time_travel = false;
36
37 // Fillers to make layering more clear
38 #define ____ KC_TRNS
39
40 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41
42         /* Colemak
43  * ,-----------------------------------------------------------------------------------.
44  * | ' " `|   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |  = + | ~ ; :|
45  * |------+------+------+------+------+-------------+------+------+------+------+------|
46  * | ( [ {|   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  | ) ] }|
47  * |------+------+------+------+------+------|------+------+------+------+------+------|
48  * | - , <|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ?  |   |  |   ^  | _ . >|
49  * |------+------+------+------+------+------+------+------+------+------+------+------|
50  * |Lower |Raise | Ctrl | Alt  | Bksp | Spc  |Enter |LShft | ESC  |  <   |   v  |   >  |
51  * `-----------------------------------------------------------------------------------'
52  */
53         [_COLE] = LAYOUT(
54             TD(TD_BTK), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_EQL, TD(TD_TDE),
55             TD(TD_LPRN), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, TD(TD_RPRN),
56             TD(TD_MIN), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_SLSH, KC_BSLS, KC_UP, TD(TD_USC),
57             LOWER, RAISE, OSM(MOD_LCTL), OSM(MOD_LALT), KC_SPC, KC_BSPC, KC_ENT, OSM(MOD_LSFT), KC_ESC, KC_LEFT, KC_DOWN, KC_RGHT),
58
59         /* Lower
60  * ,-----------------------------------------------------------------------------------.
61  * | ---- | ---- | ---- | ---- | ---- | ---- |   7  |   8  |   9  |   *  |   /  |   ^  |
62  * |------+------+------+------+------+-------------+------+------+------+------+------|
63  * | ---- | ---- | ---- | ---- | ---- | ---- |  4   |   5  |   6  |   +  |   -  | ---- |
64  * |------+------+------+------+------+------|------+------+------+------+------+------|
65  * | ---- | ---- | ---- | ---- | ---- | ---- |  1   |   2  |   3  |   =  | ---- | ---- |
66  * |------+------+------+------+------+------+------+------+------+------+------+------|
67  * | ---- | ---- | ---- | ---- | ---- | ---- | ---- |   0  |   .  | ---- | ---- | ---- |
68  * `-----------------------------------------------------------------------------------'
69  */
70         [_LOWER] = LAYOUT(
71             ____, ____, ____, ____, ____, ____, KC_7, KC_8, KC_9, KC_PAST, KC_PSLS, KC_CIRC,
72             ____, ____, ____, ____, ____, ____, KC_4, KC_5, KC_6, KC_PPLS, KC_PMNS, ____,
73             ____, ____, ____, ____, ____, ____, KC_1, KC_2, KC_3, KC_PEQL, ____, ____,
74             ____, ____, ____, ____, ____, ____, ____, KC_0, KC_MNXT, ____, ____, ____),
75
76         /* Raise
77  * ,-----------------------------------------------------------------------------------.
78  * |  F1  |  F2  |  F3  |   F4  |  F5  |  F6 |   !  |   @  |   #  |   $  |   %  |  ` ~ |
79  * |------+------+------+------+------+-------------+------+------+------+------+------|
80  * |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   ^  |   &  |   *  |   (  |   )  |  - _ |
81  * |------+------+------+------+------+------|------+------+------+------+------+------|
82  * | ____ | ____ | ____ | ____ | ____ | ____ |  [ { |  ] } |  \ | |  ; : | ' "  |  = + |
83  * |------+------+------+------+------+------+------+------+------+------+------+------|
84  * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |  , < | . >  |  / ? |
85  * `-----------------------------------------------------------------------------------'
86  */
87         [_RAISE] = LAYOUT(
88             KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_GRV,
89             KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS,
90             KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LBRC, KC_RBRC, KC_BSLS, KC_SCLN, KC_QUOT, KC_EQL,
91             ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_COMM, KC_DOT, KC_SLSH),
92
93         /* Adjust (Lower + Raise)
94  * ,-----------------------------------------------------------------------------------.
95  * | Reset| ____ | ____ | ____ | ____ | ____ | ____ | LOCK | ____ | ____ | ____ | VUP  |
96  * |------+------+------+------+------+-------------+------+------+------+------+------|
97  * | ____ | ____ |  RUN | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | VDWN |
98  * |------+------+------+------+------+------|------+------+------+------+------+------|
99  * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | PGUP | MUTE |
100  * |------+------+------+------+------+------+------+------+------+------+------+------|
101  * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | HOME | PGDN | END  |
102  * `-----------------------------------------------------------------------------------'
103  */
104         [_AUX] = LAYOUT(
105             RESET, ____, ____, ____, ____, ____, ____, LGUI(KC_L), ____, ____, ____, KC_VOLU,
106             ____, ____, LGUI(KC_R), ____, ____, ____, ____, ____, ____, ____, ____, KC_VOLD,
107             ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PGUP, KC_MUTE,
108             ____, ____, ____, ____, KC_TAB, KC_DEL, ____, ____, ____, KC_HOME, KC_PGDOWN, KC_END)
109
110 };
111
112 qk_tap_dance_action_t tap_dance_actions[] = {
113         [TD_BTK] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_GRV),
114         [TD_TDE] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_TILD),
115         [TD_LPRN] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LPRN),
116         [TD_RPRN] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RPRN),
117         [TD_MIN] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_MINS),
118         [TD_USC] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_UNDS)};
119
120 void persistent_default_layer_set(uint16_t default_layer)
121 {
122   eeconfig_update_default_layer(default_layer);
123   default_layer_set(default_layer);
124 };
125
126 void matrix_scan_user(void){};
127
128 void matrix_init_user(void){};
129
130 bool process_record_user(uint16_t keycode, keyrecord_t *record)
131 {
132   switch (keycode)
133   {
134   case COLE:
135     if (record->event.pressed)
136     {
137       persistent_default_layer_set(1UL << _COLE);
138     }
139     return false;
140     break;
141   case LOWER:
142     if (record->event.pressed)
143     {
144       layer_on(_LOWER);
145       update_tri_layer(_LOWER, _RAISE, _AUX);
146     }
147     else
148     {
149       layer_off(_LOWER);
150       update_tri_layer(_LOWER, _RAISE, _AUX);
151     }
152     return false;
153     break;
154   case RAISE:
155     if (record->event.pressed)
156     {
157       layer_on(_RAISE);
158       update_tri_layer(_LOWER, _RAISE, _AUX);
159     }
160     else
161     {
162       layer_off(_RAISE);
163       update_tri_layer(_LOWER, _RAISE, _AUX);
164     }
165     return false;
166     break;
167   case AUX:
168     if (record->event.pressed)
169     {
170       layer_on(_AUX);
171     }
172     else
173     {
174       layer_off(_AUX);
175     }
176     return false;
177     break;
178   }
179   return true;
180 }