diff options
Diffstat (limited to 'users/drashna/oled_stuff.c')
| -rw-r--r-- | users/drashna/oled_stuff.c | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c index 4abf5f05f..98e467d93 100644 --- a/users/drashna/oled_stuff.c +++ b/users/drashna/oled_stuff.c | |||
| @@ -15,7 +15,6 @@ | |||
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | #include "drashna.h" | 17 | #include "drashna.h" |
| 18 | #include <stdio.h> | ||
| 19 | 18 | ||
| 20 | #ifndef KEYLOGGER_LENGTH | 19 | #ifndef KEYLOGGER_LENGTH |
| 21 | // # ifdef OLED_DISPLAY_128X64 | 20 | // # ifdef OLED_DISPLAY_128X64 |
| @@ -158,6 +157,19 @@ void render_keylock_status(uint8_t led_usb_state) { | |||
| 158 | oled_advance_page(true); | 157 | oled_advance_page(true); |
| 159 | #endif | 158 | #endif |
| 160 | } | 159 | } |
| 160 | void render_matrix_scan_rate(void) { | ||
| 161 | #ifdef DEBUG_MATRIX_SCAN_RATE | ||
| 162 | char matrix_rate[5]; | ||
| 163 | uint16_t n = get_matrix_scan_rate(); | ||
| 164 | matrix_rate[4] = '\0'; | ||
| 165 | matrix_rate[3] = '0' + n % 10; | ||
| 166 | matrix_rate[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; | ||
| 167 | matrix_rate[1] = n / 10 ? '0' + n / 10 : ' '; | ||
| 168 | matrix_rate[0] = ' '; | ||
| 169 | oled_write_P(PSTR("MS:"), false); | ||
| 170 | oled_write(matrix_rate, false); | ||
| 171 | #endif | ||
| 172 | } | ||
| 161 | 173 | ||
| 162 | void render_mod_status(uint8_t modifiers) { | 174 | void render_mod_status(uint8_t modifiers) { |
| 163 | static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; | 175 | static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; |
| @@ -169,11 +181,17 @@ void render_mod_status(uint8_t modifiers) { | |||
| 169 | #endif | 181 | #endif |
| 170 | oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); | 182 | oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); |
| 171 | oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); | 183 | oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); |
| 184 | |||
| 185 | render_matrix_scan_rate(); | ||
| 172 | #if defined(OLED_DISPLAY_128X64) | 186 | #if defined(OLED_DISPLAY_128X64) |
| 173 | oled_advance_page(true); | 187 | oled_advance_page(true); |
| 174 | #endif | 188 | #endif |
| 175 | } | 189 | } |
| 176 | 190 | ||
| 191 | #ifdef SWAP_HANDS_ENABLE | ||
| 192 | extern bool swap_hands; | ||
| 193 | #endif | ||
| 194 | |||
| 177 | void render_bootmagic_status(void) { | 195 | void render_bootmagic_status(void) { |
| 178 | /* Show Ctrl-Gui Swap options */ | 196 | /* Show Ctrl-Gui Swap options */ |
| 179 | static const char PROGMEM logo[][2][3] = { | 197 | static const char PROGMEM logo[][2][3] = { |
| @@ -209,7 +227,7 @@ void render_bootmagic_status(void) { | |||
| 209 | oled_write_P(PSTR(" "), false); | 227 | oled_write_P(PSTR(" "), false); |
| 210 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); | 228 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); |
| 211 | oled_write_P(PSTR(" "), false); | 229 | oled_write_P(PSTR(" "), false); |
| 212 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); | 230 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui); |
| 213 | #ifdef OLED_DISPLAY_128X64 | 231 | #ifdef OLED_DISPLAY_128X64 |
| 214 | oled_advance_page(true); | 232 | oled_advance_page(true); |
| 215 | oled_write_P(PSTR("Magic"), false); | 233 | oled_write_P(PSTR("Magic"), false); |
| @@ -221,10 +239,11 @@ void render_bootmagic_status(void) { | |||
| 221 | } | 239 | } |
| 222 | #endif | 240 | #endif |
| 223 | oled_write_P(PSTR(" "), false); | 241 | oled_write_P(PSTR(" "), false); |
| 224 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); | 242 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_ONESHOT), !is_oneshot_enabled()); |
| 243 | #ifdef SWAP_HANDS_ENABLE | ||
| 225 | oled_write_P(PSTR(" "), false); | 244 | oled_write_P(PSTR(" "), false); |
| 226 | oled_write_P(PSTR(" "), false); | 245 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_SWAP), swap_hands); |
| 227 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock); | 246 | #endif |
| 228 | #ifdef OLED_DISPLAY_128X64 | 247 | #ifdef OLED_DISPLAY_128X64 |
| 229 | oled_advance_page(true); | 248 | oled_advance_page(true); |
| 230 | #endif | 249 | #endif |
| @@ -282,12 +301,22 @@ __attribute__((weak)) void oled_driver_render_logo(void) { | |||
| 282 | 301 | ||
| 283 | void render_wpm(void) { | 302 | void render_wpm(void) { |
| 284 | #ifdef WPM_ENABLE | 303 | #ifdef WPM_ENABLE |
| 304 | uint8_t n = get_current_wpm(); | ||
| 285 | # ifdef OLED_DISPLAY_128X64 | 305 | # ifdef OLED_DISPLAY_128X64 |
| 286 | char wpm_counter[4]; | 306 | char wpm_counter[4]; |
| 307 | wpm_counter[3] = '\0'; | ||
| 308 | wpm_counter[2] = '0' + n % 10; | ||
| 309 | wpm_counter[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; | ||
| 310 | wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; | ||
| 287 | # else | 311 | # else |
| 288 | char wpm_counter[6]; | 312 | char wpm_counter[6]; |
| 289 | # endif | 313 | wpm_counter[5] = '\0'; |
| 290 | snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm()); | 314 | wpm_counter[4] = '0' + n % 10; |
| 315 | wpm_counter[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; | ||
| 316 | wpm_counter[2] = n / 10 ? '0' + n / 10 : ' '; | ||
| 317 | wpm_counter[1] = ' '; | ||
| 318 | wpm_counter[0] = ' '; | ||
| 319 | # endif | ||
| 291 | oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); | 320 | oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); |
| 292 | oled_write(wpm_counter, false); | 321 | oled_write(wpm_counter, false); |
| 293 | #endif | 322 | #endif |
| @@ -299,7 +328,13 @@ extern uint16_t dpi_array[]; | |||
| 299 | 328 | ||
| 300 | void render_pointing_dpi_status(void) { | 329 | void render_pointing_dpi_status(void) { |
| 301 | char dpi_status[6]; | 330 | char dpi_status[6]; |
| 302 | snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]); | 331 | uint16_t n = dpi_array[keyboard_config.dpi_config]; |
| 332 | dpi_status[5] = '\0'; | ||
| 333 | dpi_status[4] = '0' + n % 10; | ||
| 334 | dpi_status[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; | ||
| 335 | dpi_status[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; | ||
| 336 | dpi_status[1] = n / 10 ? '0' + n / 10 : ' '; | ||
| 337 | dpi_status[0] = ' '; | ||
| 303 | oled_write_P(PSTR(" DPI: "), false); | 338 | oled_write_P(PSTR(" DPI: "), false); |
| 304 | oled_write(dpi_status, false); | 339 | oled_write(dpi_status, false); |
| 305 | } | 340 | } |
| @@ -320,7 +355,11 @@ void render_status_secondary(void) { | |||
| 320 | void render_status_main(void) { | 355 | void render_status_main(void) { |
| 321 | #if defined(OLED_DISPLAY_128X64) | 356 | #if defined(OLED_DISPLAY_128X64) |
| 322 | oled_driver_render_logo(); | 357 | oled_driver_render_logo(); |
| 358 | # ifdef DEBUG_MATRIX_SCAN_RATE | ||
| 359 | render_matrix_scan_rate(); | ||
| 360 | # else | ||
| 323 | render_wpm(); | 361 | render_wpm(); |
| 362 | # endif | ||
| 324 | # ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball | 363 | # ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball |
| 325 | render_pointing_dpi_status(); | 364 | render_pointing_dpi_status(); |
| 326 | # endif | 365 | # endif |
