]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
Remove redundant KC_TRNS and KC_NO fillers in remaining keymaps (#5154)
[qmk_firmware.git] / keyboards / helix / rev2 / keymaps / five_rows_jis / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "keymap_jp.h"
3 #include "bootloader.h"
4 #ifdef PROTOCOL_LUFA
5 #include "lufa.h"
6 #include "split_util.h"
7 #endif
8 #ifdef SSD1306OLED
9   #include "ssd1306.h"
10 #endif
11
12 // * If you want to recognize that you pressed the Adjust key with the Lower / Raise key you can enable this comment out. However, the binary size may be over. *
13 // #define ADJUST_MACRO_ENABLE
14
15 // * If you want to use the Kana key you can enable this comment out. However, the binary size may be over. *
16 // #define KANA_ENABLE
17
18 extern keymap_config_t keymap_config;
19
20 #ifdef RGBLIGHT_ENABLE
21 //Following line allows macro to read current RGB settings
22 extern rgblight_config_t rgblight_config;
23 #endif
24
25 extern uint8_t is_master;
26
27 // Each layer gets a name for readability, which is then used in the keymap matrix below.
28 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
29 // Layer names don't all need to be of the same length, obviously, and you can also skip them
30 // entirely and just use numbers.
31 enum layer_number {
32   _BASE = 0,
33   _BAS_E,
34   _LOWER,
35   _LOW_E,
36   _RAISE,
37   _RAI_E,
38   _ADJUST,
39 };
40
41 enum custom_keycodes {
42   RGBRST = SAFE_RANGE,
43   #ifdef KANA_ENABLE
44   EISU,
45   KANA,
46   #endif
47 };
48
49 // Layer Mode aliases
50 #define DL_BAS  DF(_BASE)
51 #define DL_BASE DF(_BAS_E)
52 #define ML_LOW  MO(_LOWER)
53 #define ML_LOWE MO(_LOW_E)
54 #define ML_RAI  MO(_RAISE)
55 #define ML_RAIE MO(_RAI_E)
56 #define ML_ADJ  MO(_ADJUST)
57
58 #if HELIX_ROWS == 5
59 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
60   /* Qwerty JIS Normal
61    * ,-----------------------------------------.             ,-----------------------------------------.
62    * | Esc  |  1!  |  2"  |  3#  |  4$  |  5%  |             |  6&  |  7'  |  8(  |  9)  |   0  |  -=  |
63    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
64    * | KANJI|   Q  |   W  |   E  |   R  |   T  |             |   Y  |   U  |   I  |   O  |   P  |  @`  |
65    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
66    * | Tab  |   A  |   S  |   D  |   F  |   G  |             |   H  |   J  |   K  |   L  |  ;+  |  :*  |
67    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
68    * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   B  |   N  |   M  |  ,<  |  .>  |  Up  |Enter |
69    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
70    * | Ctrl | GUI  | Alt  |Adjust|Lower |Space |Bksp  |Space |Space |Raise | APP  | Left | Down |Right |
71    * `-------------------------------------------------------------------------------------------------'
72    */
73   [_BASE] = LAYOUT( \
74     KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, \
75     JP_ZHTG, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    JP_AT,   \
76     KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, JP_COLN, \
77     KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_UP,   KC_ENT,  \
78     KC_LCTL, KC_LALT, KC_LGUI, ML_ADJ,  ML_LOW,  KC_SPC,  KC_BSPC, KC_SPC,  KC_SPC,  ML_RAI,  KC_APP,  KC_LEFT, KC_DOWN, KC_RGHT  \
79     ),
80
81   /* Qwerty JIS Exchange L and R
82    * ,-----------------------------------------.             ,-----------------------------------------.
83    * |  6&  |  7'  |  8(  |  9)  |   0  |  -=  |             | Esc  |  1!  |  2"  |  3#  |  4$  |  5%  |
84    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
85    * |   Y  |   U  |   I  |   O  |   P  |  @`  |             | Tab  |   Q  |   W  |   E  |   R  |   T  |
86    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
87    * |   H  |   J  |   K  |   L  |  ;+  |  :*  |             |      |   A  |   S  |   D  |   F  |   G  |
88    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
89    * |   N  |   M  |  ,<  |  .>  |  /?  |  Up  |Enter |KANJI | Shift|   Z  |   X  |   C  |   V  |   B  |
90    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
91    * |Space |Raise |  }]  | APP  | Left | Down |Right |Adjust| Ctrl | GUI  | Alt  |  [{  |Lower | Bksp |
92    * `-------------------------------------------------------------------------------------------------'
93    */
94   [_BAS_E] = LAYOUT( \
95     KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,                   KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,   \
96     KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    JP_AT,                     KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   \
97     KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, JP_COLN,                   XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   \
98     KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_UP,   KC_ENT,  JP_ZHTG, KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   \
99     KC_SPC,  ML_RAIE, JP_RBRC, KC_APP,  KC_LEFT, KC_DOWN, KC_RGHT, ML_ADJ,  KC_LCTL, KC_LALT, KC_LGUI, JP_LBRC, ML_LOWE, KC_BSPC \
100     ),
101
102   /* Lower JIS Normal
103    * ,-----------------------------------------.             ,-----------------------------------------.
104    * |      |      |      |      |      |      |             |      |      |      |  -=  |  ^~  |  \|  |
105    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
106    * |      |      |      |      |      |      |             |      |      |      |      |  @`  |  [{  |
107    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
108    * |      |      |      |      |      |      |             |      |      |      |  ;+  |  :*  |  ]}  |
109    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
110    * |      |      |      |      |      |      |      |      |      |      |  ,<  |  .>  |  /?  |  \_  |
111    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
112    * |      |      |      |      |      |      | Del  |      |      |      |      |      |      |      |
113    * `-------------------------------------------------------------------------------------------------'
114    */
115   [_LOWER] = LAYOUT( \
116     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, JP_CIRC, JP_YEN,  \
117     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_AT,   JP_LBRC, \
118     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, JP_COLN, JP_RBRC, \
119     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT,  KC_SLSH, JP_BSLS, \
120     _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_DEL,  _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  \
121     ),
122
123   /* Lower JIS Exchange L and R
124    * ,-----------------------------------------.             ,-----------------------------------------.
125    * |      |      |      |  -=  |  ^~  |  \|  |             |      |      |      |      |      |      |
126    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
127    * |      |      |      |      |  @`  |  [{  |             |      |      |      |      |      |      |
128    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
129    * |      |      |      |  ;+  |  :*  |  ]}  |             |      |      |      |      |      |      |
130    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
131    * |      |  ,<  |  .>  |  /?  |  \_  |PageUp|      |      |      |      |      |      |      |      |
132    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
133    * |      |      |      |      | Home |PageDn| End  |      |      |      |      |      |      | Del  |
134    * `-------------------------------------------------------------------------------------------------'
135    */
136   [_LOW_E] = LAYOUT( \
137     _______, XXXXXXX, XXXXXXX, KC_MINS, JP_CIRC, JP_YEN,                    _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
138     _______, XXXXXXX, XXXXXXX, XXXXXXX, JP_AT,   JP_LBRC,                   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
139     _______, XXXXXXX, XXXXXXX, KC_SCLN, JP_COLN, JP_RBRC,                   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
140     _______, KC_COMM, KC_DOT,  KC_SLSH, JP_BSLS, KC_PGUP, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
141     _______, _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END,  _______, _______, _______, _______, XXXXXXX, _______, KC_DEL   \
142     ),
143
144   /* Raise JIS Normal
145    * ,-----------------------------------------.             ,-----------------------------------------.
146    * |      |  F1  |  F2  |  F3  |  F4  |  F5  |             |  F6  |  F7  |  F8  |  F9  | F10  | F11  |
147    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
148    * |      |      |      |      |      |      |             |      |MsWhL |MsWhU | Home |PageUp| F12  |
149    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
150    * |      |      |      |      |      |      |             |      |MsWhR |MsWhD | End  |PageDn|      |
151    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
152    * |      |      |      |      |      |      |      |      |      |      |MsBtn1|MsBtn2| MsUp |      |
153    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
154    * |      |      |      |      |      |      |      |      |      |      |      |MsLeft|MsDown|MsRght|
155    * `-------------------------------------------------------------------------------------------------'
156    */
157   [_RAISE] = LAYOUT( \
158     _______, KC_F1  , KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  \
159     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, KC_F12,  \
160     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_WH_R, KC_WH_D, KC_END,  KC_PGDN, XXXXXXX, \
161     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX, \
162     _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R  \
163     ),
164
165   /* Raise JIS Exchange L and R
166    * ,-----------------------------------------.             ,-----------------------------------------.
167    * |  F6  |  F7  |  F8  |  F9  | F10  | F11  |             |      |  F1  |  F2  |  F3  |  F4  |  F5  |
168    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
169    * |      |      |      |MsWhL |MsWhU | F12  |             |      |      |      |      |      |      |
170    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
171    * |      |      |      |MsWhR |MsWhD |      |             |      |      |      |      |      |      |
172    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
173    * |      |      |      |MsBtn1|MsBtn2| MsUp |      |      |      |      |      |      |      |      |
174    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
175    * |      |      |      |      |MsLeft|MsDown|MsRght|      |      |      |      |      |      |      |
176    * `-------------------------------------------------------------------------------------------------'
177    */
178   [_RAI_E] = LAYOUT( \
179     KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,                    _______, KC_F1  , KC_F2,   KC_F3,   KC_F4,   KC_F5,   \
180     XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_F12,                    _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
181     XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, XXXXXXX,                   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
182     XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
183     _______, _______, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX  \
184     ),
185
186   /* Adjust (Lower + Raise) Common map for Normal and Exchange
187    * ,-----------------------------------------.             ,-----------------------------------------.
188    * |      | Reset|RGBRST|      |      |      |             |      | Reset|RGBRST|      |      |      |
189    * |------+------+------+------+------+------|             |------+------+------+------+------+------|
190    * |      |ModNrm|ModExc| Mac  | Win  |      |             |      |ModNrm|ModExc| Mac  | Win  |      |
191    * |------+------+------+------+------+------|             |------+------+------+------+------|------+
192    * |      |RGB ON| HUE+ | SAT+ | VAL+ |      |             |      |RGB ON| HUE+ | SAT+ | VAL+ |      |
193    * |------+------+------+------+------+------+------+------+------+------+------+------+------|------+
194    * |      | MODE | HUE- | SAT- | VAL- |      |      |      |      | MODE | HUE- | SAT- | VAL- |      |
195    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
196    * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
197    * `-------------------------------------------------------------------------------------------------'
198    */
199   [_ADJUST] =  LAYOUT( \
200     XXXXXXX, RESET,   RGBRST,  XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, RESET,   RGBRST,  XXXXXXX, XXXXXXX, XXXXXXX, \
201     XXXXXXX, DL_BAS,  DL_BASE, AG_NORM, AG_SWAP, XXXXXXX,                   XXXXXXX, DL_BAS,  DL_BASE, AG_NORM, AG_SWAP, XXXXXXX, \
202     XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,                   XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, \
203     XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, \
204     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  \
205     ),
206 };
207
208 #else
209 #error "undefined keymaps"
210 #endif
211
212 #ifdef SSD1306OLED
213 char keylog[24] = {};
214 const char code_to_name[60] = {
215     ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
216     'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
217     'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
218     '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
219     'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ',
220     ' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
221
222 static inline void set_keylog(uint16_t keycode, keyrecord_t *record)
223 {
224   char name = ' ';
225   uint8_t leds = host_keyboard_leds();
226
227   if (keycode < 60)
228   {
229     name = code_to_name[keycode];
230   }
231
232   // update keylog
233   snprintf(keylog, sizeof(keylog), "\n%dx%d %2x %c %c %c %c",
234            record->event.key.row,
235            record->event.key.col,
236            keycode,
237            name,
238           (leds & (1<<USB_LED_NUM_LOCK)) ? 'N' : ' ',
239           (leds & (1<<USB_LED_CAPS_LOCK)) ? 'C' : ' ',
240           (leds & (1<<USB_LED_SCROLL_LOCK)) ? 'S' : ' '
241            );
242 }
243 #endif
244
245 #ifdef RGBLIGHT_ENABLE
246 #define RGBLIGHT(mode) rgblight_mode(mode)
247 #else
248 #define RGBLIGHT(mode)
249 #endif
250
251 // define variables for reactive RGB
252 int RGB_current_mode;
253 #ifdef ADJUST_MACRO_ENABLE
254 // Setting ADJUST layer RGB back to default
255 void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
256   if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
257     RGBLIGHT(RGB_current_mode);
258     layer_on(layer3);
259    } else {
260     layer_off(layer3);
261   }
262 }
263 #define ADJUST_MACRO(layer1, layer2, layer3) update_tri_layer_RGB(layer1, layer2, layer3)
264 #else
265 #define ADJUST_MACRO(layer1, layer2, layer3)
266 #endif
267
268 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
269   #ifdef SSD1306OLED
270     if (record->event.pressed) {
271       set_keylog(keycode, record);
272     }
273   #endif
274
275   switch (keycode) {
276     #ifdef RGBLIGHT_ENABLE
277       //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
278       case RGB_MOD:
279           if (record->event.pressed) {
280             rgblight_mode(RGB_current_mode);
281             rgblight_step();
282             RGB_current_mode = rgblight_config.mode;
283           }
284         break;
285     #endif
286     #ifdef KANA_ENABLE
287       case EISU:
288         if (record->event.pressed) {
289           if (keymap_config.swap_lalt_lgui==false) {
290             register_code(KC_LANG2);
291           } else {
292             SEND_STRING(SS_LALT("`"));
293           }
294         } else {
295           unregister_code(KC_LANG2);
296         }
297         break;
298       case KANA:
299         if (record->event.pressed) {
300           if(keymap_config.swap_lalt_lgui==false){
301             register_code(KC_LANG1);
302           }else{
303             SEND_STRING(SS_LALT("`"));
304           }
305         } else {
306           unregister_code(KC_LANG1);
307         }
308         break;
309     #endif
310     #ifdef RGBLIGHT_ENABLE
311       case RGBRST:
312           if (record->event.pressed) {
313             eeconfig_update_rgblight_default();
314             rgblight_enable();
315             RGB_current_mode = rgblight_config.mode;
316           }
317         break;
318     #endif
319     default:
320       return true;
321   }
322
323   return false;
324 }
325
326 void matrix_init_user(void) {
327   #ifdef RGBLIGHT_ENABLE
328     RGB_current_mode = rgblight_config.mode;
329   #endif
330   //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
331   #ifdef SSD1306OLED
332     iota_gfx_init(!has_usb()); // turns on the display
333   #endif
334 }
335
336 //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
337 #ifdef SSD1306OLED
338
339 void matrix_scan_user(void) {
340   iota_gfx_task();  // this is what updates the display continuously
341 }
342
343 static inline void matrix_update(struct CharacterMatrix *dest,
344                           const struct CharacterMatrix *source) {
345   if (memcmp(dest->display, source->display, sizeof(dest->display))) {
346     memcpy(dest->display, source->display, sizeof(dest->display));
347     dest->dirty = true;
348   }
349 }
350
351 //assign the right code to your layers for OLED display
352 #define L_BASE _BASE
353 #define L_LOWER (1<<_LOWER)
354 #define L_RAISE (1<<_RAISE)
355 #define L_ADJUST (1<<_ADJUST)
356 #define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
357 #define L_LOW_E (1<<_LOW_E)
358 #define L_RAI_E (1<<_RAI_E)
359 #define L_ADJUST_TRIE (L_ADJUST|L_RAI_E|L_LOW_E)
360
361 const char helix_logo[]={
362   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
363   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
364   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
365   0};
366
367 static inline void render_logo(struct CharacterMatrix *matrix) {
368
369   matrix_write(matrix, helix_logo);
370 }
371
372 const char mac_win_logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
373
374 static inline void render_status(struct CharacterMatrix *matrix) {
375
376   char buf[20];
377   // Render to mode icon
378   if(keymap_config.swap_lalt_lgui==false){
379     matrix_write(matrix, mac_win_logo[0][0]);
380     matrix_write_P(matrix, PSTR("\n"));
381     matrix_write(matrix, mac_win_logo[0][1]);
382   } else {
383     matrix_write(matrix, mac_win_logo[1][0]);
384     matrix_write_P(matrix, PSTR("\n"));
385     matrix_write(matrix, mac_win_logo[1][1]);
386   }
387
388   #ifdef RGBLIGHT_ENABLE
389     snprintf(buf, sizeof(buf), "  LED mode:%d", (short)RGB_current_mode);
390     matrix_write(matrix, buf);
391   #endif
392
393   // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
394   matrix_write_P(matrix, PSTR("\nLayer: "));
395   switch (layer_state) {
396     case L_BASE:
397       matrix_write_P(matrix, default_layer_state == (1UL<<_BAS_E) ? PSTR("BaseEx") : PSTR("Base"));
398       break;
399     case L_RAISE:
400       matrix_write_P(matrix, PSTR("Raise"));
401       break;
402     case L_RAI_E:
403       matrix_write_P(matrix, PSTR("RaiseEx"));
404       break;
405     case L_LOWER:
406       matrix_write_P(matrix, PSTR("Lower"));
407       break;
408     case L_LOW_E:
409       matrix_write_P(matrix, PSTR("LowerEx"));
410       break;
411     case L_ADJUST:
412     case L_ADJUST_TRI:
413     case L_ADJUST_TRIE:
414       matrix_write_P(matrix, PSTR("Adjust"));
415       break;
416     default:
417       snprintf(buf, sizeof(buf), "%d", (short)layer_state);
418       matrix_write(matrix, buf);
419   }
420
421   matrix_write(matrix, keylog);
422 }
423
424 void iota_gfx_task_user(void) {
425   struct CharacterMatrix matrix;
426
427   #if DEBUG_TO_SCREEN
428     if (debug_enable) {
429       return;
430     }
431   #endif
432
433   matrix_clear(&matrix);
434   if (is_master) {
435     render_status(&matrix);
436   } else {
437     render_logo(&matrix);
438   }
439
440   matrix_update(&display, &matrix);
441 }
442
443 #endif