]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/redox/keymaps/jeherve/keymap.c
Updated rgb_led struct field modifier to flags (#5619)
[qmk_firmware.git] / keyboards / redox / keymaps / jeherve / keymap.c
1 #include QMK_KEYBOARD_H
2
3 extern keymap_config_t keymap_config;
4
5 // Each layer gets a name for readability, which is then used in the keymap matrix below.
6 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
7 // Layer names don't all need to be of the same length, obviously, and you can also skip them
8 // entirely and just use numbers.
9 #define _COLEMAK 0
10 #define _SYMB 1
11 #define _NAV 2
12 #define _INTER 3
13 #define _ADJUST 4
14
15 enum custom_keycodes {
16         COLEMAK = SAFE_RANGE,
17         SYMB,
18         NAV,
19         INTER,
20         ADJUST,
21         // These use process_record_user()
22         M_BRACKET_LEFT,
23         M_BRACKET_RIGHT,
24         SHRUG,
25         WAVE,
26         YOSHI,
27         THUMB_UP,
28         NBSP,
29   INV_1P,
30   ALFRED
31 };
32
33 // Is shift being held? Let's store this in a bool.
34 static bool shift_held = false;
35
36 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
37         switch(keycode) {
38                 case SHRUG:
39                         if (record->event.pressed) {
40                                 send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
41                         }
42                         return false;
43                         break;
44     case INV_1P:
45       if (record->event.pressed) {
46         SEND_STRING(SS_DOWN(X_LGUI)SS_DOWN(X_LALT)SS_TAP(X_BSLASH)SS_UP(X_LGUI)SS_UP(X_LALT));
47       }
48       return false;
49       break;
50     case ALFRED:
51       if (record->event.pressed) {
52         SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_SPACE)SS_UP(X_LALT));
53       }
54       return false;
55       break;
56                 case YOSHI:
57                         if (record->event.pressed) {
58                                 SEND_STRING(":yellow_yoshi:");
59                         }
60                         return false;
61                         break;
62                 case THUMB_UP:
63                         if (record->event.pressed) {
64                                 SEND_STRING(SS_LALT("D83D+DC4D"));
65                         }
66                         return false;
67                         break;
68                 case WAVE:
69                         if (record->event.pressed) {
70                                 SEND_STRING(SS_LALT("D83D+DC4B"));
71                         }
72                         return false;
73                         break;
74                 case NBSP:
75                         if (record->event.pressed) {
76                                 SEND_STRING(" ");
77                         }
78                         return false;
79                         break;
80         case KC_LSFT:
81                 shift_held = record->event.pressed;
82                 return true;
83                 break;
84         case KC_RSFT:
85                 shift_held = record->event.pressed;
86                 return true;
87                 break;
88                 case M_BRACKET_LEFT: {
89                         if (record->event.pressed) {
90                                 if (shift_held) {
91                                         unregister_code(KC_LSFT);
92                                         unregister_code(KC_RSFT);
93                                         register_code(KC_LBRC);
94                                 } else {
95                                         register_code(KC_LSFT);
96                                         register_code(KC_9);
97                                 }
98                         } else { // Release the key
99                                 unregister_code(KC_LBRC);
100                                 unregister_code(KC_LSFT);
101                                 unregister_code(KC_RSFT);
102                                 unregister_code(KC_9);
103                         }
104                         return false;
105                         break;
106                 }
107                 case M_BRACKET_RIGHT: {
108                         if (record->event.pressed) {
109                                 if (shift_held) {
110                                         unregister_code(KC_LSFT);
111                                         unregister_code(KC_RSFT);
112                                         register_code(KC_RBRC);
113                                 } else {
114                                         register_code(KC_LSFT);
115                                         register_code(KC_0);
116                                 }
117                         } else { // Release the key
118                                 unregister_code(KC_RBRC);
119                                 unregister_code(KC_LSFT);
120                                 unregister_code(KC_RSFT);
121                                 unregister_code(KC_0);
122                         }
123                         return false;
124                         break;
125                 }
126         }
127         return true;
128 };
129
130 // Shortcut to make keymap more readable
131 #define KC_SYQT  LT(_SYMB,KC_QUOT)
132 #define SYM_L    MO(_SYMB)
133 #define MO_INTR  MO(_INTER)
134 #define TT_ADJ   TT(_ADJUST)
135
136 #define UC_00E0 UC(0x00E0)
137 #define UC_00FC UC(0x00FC)
138 #define UC_00E8 UC(0x00E8)
139 #define UC_00F6 UC(0x00F6)
140 #define UC_00E1 UC(0x00E1)
141 #define UC_00F9 UC(0x00F9)
142 #define UC_00E9 UC(0x00E9)
143 #define UC_00ED UC(0x00ED)
144 #define UC_00F3 UC(0x00F3)
145 #define UC_00E2 UC(0x00E2)
146 #define UC_00E7 UC(0x00E7)
147 #define UC_0171 UC(0x0171)
148 #define UC_00EA UC(0x00EA)
149 #define UC_0151 UC(0x0151)
150
151 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
152
153   [_COLEMAK] = LAYOUT(
154   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
155      KC_GRV  ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_EQL  ,
156   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
157      KC_TAB  ,KC_Q    ,KC_W    ,KC_F    ,KC_P    ,KC_G    ,KC_ESC  ,                           INV_1P ,KC_J    ,KC_L    ,KC_U    ,KC_Y    ,KC_SCLN ,KC_BSLS ,
158   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
159      SYM_L   ,KC_A    ,KC_R    ,KC_S    ,KC_T    ,KC_D    ,M_BRACKET_LEFT,            M_BRACKET_RIGHT ,KC_H    ,KC_N    ,KC_E    ,KC_I    ,KC_O    ,KC_SYQT ,
160   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
161      KC_LSFT ,KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,TT(_NAV),TT(_SYMB),      TT(_SYMB),TT(_NAV),KC_K    ,KC_M    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSFT ,
162   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
163      MO_INTR ,KC_LCTL ,KC_HYPR ,KC_LALT ,     KC_LCMD ,    KC_BSPC ,KC_LCTL ,        KC_ENT  ,KC_SPC  ,    ALFRED  ,     TT_ADJ  ,KC_HYPR ,KC_RCTL ,MO_INTR
164   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
165   ),
166
167   [_SYMB] = LAYOUT(
168   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
169      _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,                                            _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
170   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
171      _______ ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,_______ ,                          _______ ,KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,_______ ,
172   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
173      _______ ,KC_EXLM ,KC_AT   ,KC_HASH ,KC_DLR  ,KC_PERC ,KC_LCBR ,                          KC_RCBR ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_MINS ,KC_UNDS ,_______ ,
174   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
175      _______ ,_______ ,_______ ,KC_TILD ,KC_GRV , _______ ,_______ ,_______ ,        _______ ,_______ ,_______ ,KC_EQL  ,KC_PLUS ,_______ ,_______ ,_______ ,
176   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
177      _______ ,_______ ,_______ ,_______ ,     _______ ,    _______ ,_______ ,        _______ ,_______ ,    _______ ,     _______ ,_______ ,_______ ,_______
178   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
179   ),
180
181   [_NAV] = LAYOUT(
182   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
183      _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,                                            _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
184   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
185      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
186   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
187      XXXXXXX ,XXXXXXX ,KC_VOLD ,KC_VOLU ,KC_MUTE ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RIGHT,XXXXXXX ,
188   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
189      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ ,        _______ ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
190   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
191      _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,XXXXXXX ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
192   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
193   ),
194
195   [_INTER] = LAYOUT(
196   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
197      XXXXXXX ,_______ ,_______ ,_______ ,_______ ,_______ ,                                            _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
198   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
199      XXXXXXX ,UC_00E0 ,WAVE    ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,UC_00FC ,UC_00E8 ,YOSHI   ,UC_00F6 ,XXXXXXX ,
200   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
201      _______ ,UC_00E1 ,XXXXXXX ,SHRUG   ,THUMB_UP,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,UC_00F9 ,UC_00E9 ,UC_00ED ,UC_00F3 ,_______ ,
202   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
203      XXXXXXX ,UC_00E2 ,XXXXXXX ,UC_00E7 ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,        _______ ,XXXXXXX ,XXXXXXX ,UC_0171 ,UC_00EA ,XXXXXXX ,UC_0151 ,XXXXXXX ,
204   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
205      _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,NBSP    ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
206   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
207   ),
208
209   [_ADJUST] = LAYOUT(
210   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
211      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,                                            XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
212   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
213      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,                          XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
214   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
215      _______ ,XXXXXXX ,RGB_VAD ,RGB_VAI ,RGB_TOG ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,RESET   ,DEBUG   ,AU_TOG  ,XXXXXXX ,_______ ,
216   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
217      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,        _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
218   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
219      _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,XXXXXXX ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
220   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
221   )
222
223 };
224
225 #ifdef AUDIO_ENABLE
226 float tone_colemak[][2]     = SONG(ZELDA_TREASURE);
227 #endif
228
229 void persistent_default_layer_set(uint16_t default_layer) {
230         eeconfig_update_default_layer(default_layer);
231         default_layer_set(default_layer);
232 }
233
234 // Set unicode in Mac OS.
235 void eeconfig_init_user(void) {
236   set_unicode_input_mode(UC_OSX);
237 };
238
239 // Change LED colors depending on the layer.
240 uint32_t layer_state_set_user(uint32_t state) {
241         switch (biton32(state)) {
242                 case _SYMB:
243                         rgblight_setrgb_orange();
244                         break;
245                 case _NAV:
246                         rgblight_setrgb_springgreen();
247                         break;
248                 case _INTER:
249                         rgblight_setrgb_teal();
250                         break;
251                 case _ADJUST:
252                         rgblight_setrgb_red();
253                         break;
254                 default: //  for any other layers, or the default layer
255                         rgblight_setrgb_yellow();
256                         break;
257         }
258         return state;
259 };