]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/nyquist/keymaps/333fred/keymap.c
afa8b75b65263333caab1cb6eac5f2ec1f1cfffd
[qmk_firmware.git] / keyboards / nyquist / keymaps / 333fred / keymap.c
1 #include "nyquist.h"
2 #include "action_layer.h"
3 #include "eeconfig.h"
4
5 extern keymap_config_t keymap_config;
6
7 // Each layer gets a name for readability, which is then used in the keymap matrix below.
8 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
9 // Layer names don't all need to be of the same length, obviously, and you can also skip them
10 // entirely and just use numbers.
11 #define _QWERTY 0
12 #define _LOWER 1
13 #define _RAISE 2
14 #define _VIM 3
15 #define _ADJUST 16
16
17 enum custom_keycodes {
18   QWERTY = SAFE_RANGE,
19   LOWER,
20   RAISE,
21   ADJUST,
22 };
23
24 enum custom_macros {
25     DLEFT,
26     DRIGHT,
27     PSCREEN_APP
28 };
29
30 // Fillers to make layering more clear
31 #define _______ KC_TRNS
32 #define XXXXXXX KC_NO
33
34 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
35
36 /* Qwerty
37  * ,-----------------------------------------------------------------------------------.
38  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
39  * |------+------+------+------+------+------+------+------+------+------+------+------|
40  * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  \   |
41  * |------+------+------+------+------+-------------+------+------+------+------+------|
42  * | Esc  |   A  |   S  |   D  |LTVIMF|   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
43  * |------+------+------+------+------+------|------+------+------+------+------+------|
44  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |/ Ctrl| Shift|
45  * |------+------+------+------+------+------+------+------+------+------+------+------|
46  * | Ctrl |  Alt |  F4  | GUI  |Lower | Bksp | Spc  | Ent  | Raise|   +  |  Up  | Del  |
47  * `-----------------------------------------------------------------------------------'
48  */
49 [_QWERTY] = KEYMAP( \
50   KC_GRV,        KC_1,         KC_2,  KC_3,    KC_4,           KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,            KC_MINUS, \
51   KC_TAB,        KC_Q,         KC_W,  KC_E,    KC_R,           KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,            KC_BSLASH, \
52   KC_ESC,        KC_A,         KC_S,  KC_D,    LT(_VIM, KC_F), KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,         KC_QUOT, \
53   OSM(MOD_LSFT), LCTL_T(KC_Z), KC_X,  KC_C,    KC_V,           KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  RCTL_T(KC_SLSH), OSM(MOD_RSFT), \
54   KC_LCTL,       KC_LALT,      KC_F4, KC_LGUI, OSL(_LOWER),    KC_BSPC, KC_SPC,  KC_ENT,  RAISE,   KC_PLUS, KC_UP,           KC_DEL \
55 ),
56
57 /* Lower
58  * ,-----------------------------------------------------------------------------------.
59  * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |
60  * |------+------+------+------+------+-------------+------+------+------+------+------|
61  * |      |   !  |   @  |   (  |   )  |   |  |   7  |   8  |   9  |   *  |   )  |  F12 |
62  * |------+------+------+------+------+-------------+------+------+------+------+------|
63  * |      |   #  |   $  |   {  |   }  |   `  |   4  |   5  |   6  |   +  |   }  |  |   |
64  * |------+------+------+------+------+------|------+------+------+------+------+------|
65  * | APscr|   %  |   ^  |   [  |   ]  |   ~  |   1  |   2  |   3  |   \  | Vol- | Vol+ |
66  * |------+------+------+------+------+------+------+------+------+------+------+------|
67  * | Pscr |      |      |      |      |      |   0  |   .  |   =  | Prev | Next | Play |
68  * `-----------------------------------------------------------------------------------'
69  */
70 [_LOWER] = KEYMAP( \
71   KC_CAPS,        KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6, KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11, \
72   _______,        KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE, KC_7,  KC_8,   KC_9,   KC_ASTR, KC_RPRN, KC_F12, \
73   _______,        KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,  KC_4,  KC_5,   KC_6,   KC_PLUS, KC_RCBR, KC_PIPE, \
74   M(PSCREEN_APP), KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1,  KC_2,   KC_3,   KC_BSLS, KC_VOLD, KC_VOLU, \
75   KC_PSCR,        _______, _______, _______, _______, _______, KC_0,  KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
76 ),
77
78 /* Raise
79  * ,-----------------------------------------------------------------------------------.
80  * |   ~  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F0  | Bksp |
81  * |------+------+------+------+------+-------------+------+------+------+------+------|
82  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
83  * |------+------+------+------+------+-------------+------+------+------+------+------|
84  * | Del  |  F1  |  F2  |   {  |   }  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
85  * |------+------+------+------+------+------|------+------+------+------+------+------|
86  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter |
87  * |------+------+------+------+------+------+------+------+------+------+------+------|
88  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
89  * `-----------------------------------------------------------------------------------'
90  */
91 [_RAISE] = KEYMAP( \
92   KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
93   KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL, \
94   KC_DEL,  KC_F1,   KC_F2,   KC_LCBR, KC_RBRC, KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
95   _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______, \
96   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY \
97 ),
98
99 /* Adjust (Lower + Raise)
100  * ,-----------------------------------------------------------------------------------.
101  * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
102  * |------+------+------+------+------+------+------+------+------+------+------+------|
103  * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
104  * |------+------+------+------+------+-------------+------+------+------+------+------|
105  * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
106  * |------+------+------+------+------+------|------+------+------+------+------+------|
107  * |      |      |      |      |      |      |      |      |      |      |      |      |
108  * |------+------+------+------+------+------+------+------+------+------+------+------|
109  * |      |      |      |      |      |      |      |      |      |      |      |      |
110  * `-----------------------------------------------------------------------------------'
111  */
112 [_ADJUST] =  KEYMAP( \
113   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, \
114   _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
115   _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  _______, _______, _______, _______, \
116   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
117   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
118 ),
119
120 /* Adjust (Lower + Raise)
121  * ,-----------------------------------------------------------------------------------.
122  * |      |      |      |      |      |      |      |      |      |      |      |      |
123  * |------+------+------+------+------+------+------+------+------+------+------+------|
124  * |      |      |      |      |      |      |      |      |      |      |      |      |
125  * |------+------+------+------+------+------+------+------+------+------+------+------|
126  * |      | DLeft|DRight| LCTRL|      |      | Left | Down |  Up  | Right|      |      |
127  * |------+------+------+------+------+------+------+------+------+------+------+------|
128  * |      |      |      |      |      |      |      |      |      |      |      |      |
129  * |------+------+------+------+------+------+------+------+------+------+------+------|
130  * |      |      |      |      | LShft|      |      |      |      |      |      |      |
131  * `-----------------------------------------------------------------------------------'
132  */
133 [_VIM] =  KEYMAP( \
134   _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______, \
135   _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______, \
136   _______, M(DLEFT), M(DRIGHT), KC_LCTL, _______, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______, \
137   _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______, \
138   _______, _______,  _______,   _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______ \
139 )
140
141 };
142
143 #ifdef AUDIO_ENABLE
144 float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
145 float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
146 float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
147 #endif
148
149 void persistent_default_layer_set(uint16_t default_layer) {
150   eeconfig_update_default_layer(default_layer);
151   default_layer_set(default_layer);
152 }
153
154 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
155   switch (keycode) {
156     case QWERTY:
157       if (record->event.pressed) {
158         #ifdef AUDIO_ENABLE
159           PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
160         #endif
161         persistent_default_layer_set(1UL<<_QWERTY);
162       }
163       return false;
164       break;
165     case LOWER:
166       if (record->event.pressed) {
167         layer_on(_LOWER);
168         update_tri_layer(_LOWER, _RAISE, _ADJUST);
169       } else {
170         layer_off(_LOWER);
171         update_tri_layer(_LOWER, _RAISE, _ADJUST);
172       }
173       return false;
174       break;
175     case RAISE:
176       if (record->event.pressed) {
177         layer_on(_RAISE);
178         update_tri_layer(_LOWER, _RAISE, _ADJUST);
179       } else {
180         layer_off(_RAISE);
181         update_tri_layer(_LOWER, _RAISE, _ADJUST);
182       }
183       return false;
184       break;
185     case ADJUST:
186       if (record->event.pressed) {
187         layer_on(_ADJUST);
188       } else {
189         layer_off(_ADJUST);
190       }
191       return false;
192       break;
193   }
194   return true;
195 }
196
197 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
198     switch(id) {
199         case DLEFT:
200             if (record->event.pressed) { // Windows move desktop left
201                 return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
202             }
203             break;
204         case DRIGHT:
205             if (record->event.pressed) { // Windows move desktop right
206                 return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
207             }
208             break;
209         case PSCREEN_APP:
210             if (record->event.pressed) {
211                 return MACRO(D(LALT), T(PSCR), U(LALT), END);
212             }
213             break;
214     }
215     return MACRO_NONE;
216 }