4 // NOTE: Redefined to avoid to use snprintf(); It makes size of firmware big.
5 const char *read_mode_icon(bool windows_mode) {
6 static const char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
7 static char mode_icon[10];
9 int mode_number = windows_mode ? 1 : 0;
10 strcpy(mode_icon, logo[mode_number][0]);
12 strcat(mode_icon, "\n");
13 strcat(mode_icon, logo[mode_number][1]);
18 const char *read_layer_state(void) {
19 static char layer_state_str[24];
22 switch (biton32(layer_state)) {
24 strcpy(layer_name, default_layer_state == 1UL<<_EDVORAK ? "EDVORAK" : "QWERTY");
28 strcpy(layer_name, "JP_EXT");
31 strcpy(layer_name, "Raise");
34 strcpy(layer_name, "Lower");
37 strcpy(layer_name, "Adjust");
40 snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state);
43 strcpy(layer_state_str, "Layer: ");
45 strcat(layer_state_str, layer_name);
46 strcat(layer_state_str, "\n");
47 return layer_state_str;
50 const char *read_host_led_state(void) {
51 static char led_str[24];
52 bool ext_status = get_enable_jp_extra_layer() && get_japanese_mode();
53 strcpy(led_str, ext_status ? "EXT" : " ");
55 strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? " NMLK" : " ");
56 strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? " CAPS" : " ");
57 strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? " SCLK" : " ");
61 void matrix_update(struct CharacterMatrix *dest,
62 const struct CharacterMatrix *source) {
63 if (memcmp(dest->display, source->display, sizeof(dest->display))) {
64 memcpy(dest->display, source->display, sizeof(dest->display));
69 void iota_gfx_task_user(void) {
70 struct CharacterMatrix matrix;
72 matrix_clear(&matrix);
74 matrix_write(&matrix, read_mode_icon(!get_enable_kc_lang()));
75 matrix_write(&matrix, " ");
76 matrix_write(&matrix, read_layer_state());
77 matrix_write(&matrix, read_host_led_state());
79 matrix_write(&matrix, read_logo());
81 matrix_update(&display, &matrix);