qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

helix.c (2745B)


      1 // Copyright 2020 Yushakobo
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 #include "quantum.h"
      4 
      5 #ifdef OLED_ENABLE
      6 void render_status(void) {
      7     static const char os_logo[][2][3] PROGMEM = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
      8     if (!keymap_config.swap_lalt_lgui) {
      9         oled_write_P(os_logo[0][0], false);
     10         oled_write_P(PSTR("\n"), false);
     11         oled_write_P(os_logo[0][1], false);
     12     } else {
     13         oled_write_P(os_logo[1][0], false);
     14         oled_write_P(PSTR("\n"), false);
     15         oled_write_P(os_logo[1][1], false);
     16     }
     17 
     18     oled_write_P(PSTR(" Layer: "), false);
     19     switch (get_highest_layer(layer_state)) {
     20         case 0:
     21             oled_write_ln_P(PSTR("Default"), false);
     22             break;
     23         case 1:
     24             oled_write_ln_P(PSTR("Lower"), false);
     25             break;
     26         case 2:
     27             oled_write_ln_P(PSTR("Raise"), false);
     28             break;
     29         case 3:
     30             oled_write_ln_P(PSTR("Adjust"), false);
     31             break;
     32         default:
     33             oled_write_ln_P(PSTR("Undefined"), false);
     34     }
     35     oled_write_P(PSTR("\n"), false);
     36 
     37     led_t led_state = host_keyboard_led_state();
     38     oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);
     39     oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
     40     oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
     41 }
     42 
     43 static void render_logo(void) {
     44     static const char PROGMEM qmk_logo[] = {
     45         // clang-format off
     46         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
     47         0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
     48         0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
     49         // clang-format on
     50     };
     51     oled_write_P(qmk_logo, false);
     52 }
     53 
     54 static void render_rgb_matrix_status(void) {
     55     oled_write_P(PSTR(" LED"), false);
     56     oled_write(get_u8_str(rgb_matrix_get_mode(), ' '), false);
     57     oled_write_char(':', false);
     58     oled_write(get_u8_str(rgb_matrix_get_hue() / RGB_MATRIX_HUE_STEP, ' '), false);
     59     oled_write_char(',', false);
     60     oled_write(get_u8_str(rgb_matrix_get_sat() / RGB_MATRIX_SAT_STEP, ' '), false);
     61     oled_write_char(',', false);
     62     oled_write(get_u8_str(rgb_matrix_get_val() / RGB_MATRIX_VAL_STEP, ' '), false);
     63 }
     64 
     65 bool oled_task_kb(void) {
     66     if (!oled_task_user()) {
     67         return false;
     68     }
     69     if (is_keyboard_master()) {
     70         render_status();
     71     } else {
     72         render_logo();
     73         render_rgb_matrix_status();
     74     }
     75     return false;
     76 }
     77 #endif