diff options
Diffstat (limited to 'users/drashna/oled_stuff.c')
| -rw-r--r-- | users/drashna/oled_stuff.c | 141 |
1 files changed, 100 insertions, 41 deletions
diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c index 30eb068f7..4abf5f05f 100644 --- a/users/drashna/oled_stuff.c +++ b/users/drashna/oled_stuff.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | #include "drashna.h" | 17 | #include "drashna.h" |
| 18 | #include <stdio.h> | ||
| 18 | 19 | ||
| 19 | #ifndef KEYLOGGER_LENGTH | 20 | #ifndef KEYLOGGER_LENGTH |
| 20 | // # ifdef OLED_DISPLAY_128X64 | 21 | // # ifdef OLED_DISPLAY_128X64 |
| @@ -24,7 +25,7 @@ | |||
| 24 | // # endif | 25 | // # endif |
| 25 | #endif | 26 | #endif |
| 26 | 27 | ||
| 27 | static uint32_t oled_timer = 0; | 28 | uint32_t oled_timer = 0; |
| 28 | static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; | 29 | static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; |
| 29 | static uint16_t log_timer = 0; | 30 | static uint16_t log_timer = 0; |
| 30 | 31 | ||
| @@ -132,28 +133,26 @@ void render_layer_state(void) { | |||
| 132 | oled_write_P(PSTR(" "), false); | 133 | oled_write_P(PSTR(" "), false); |
| 133 | #endif | 134 | #endif |
| 134 | oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE)); | 135 | oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE)); |
| 135 | #if _MODS | ||
| 136 | # ifdef OLED_DISPLAY_128X64 | ||
| 137 | oled_write_P(PSTR(" "), false); | ||
| 138 | # endif | ||
| 139 | oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS)); | ||
| 140 | #endif | ||
| 141 | #ifdef OLED_DISPLAY_128X64 | 136 | #ifdef OLED_DISPLAY_128X64 |
| 142 | oled_advance_page(true); | 137 | oled_advance_page(true); |
| 138 | oled_write_P(PSTR(" "), false); | ||
| 139 | oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD)); | ||
| 140 | oled_write_P(PSTR(" "), false); | ||
| 141 | oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO)); | ||
| 142 | oled_write_P(PSTR(" "), false); | ||
| 143 | oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE)); | ||
| 143 | #endif | 144 | #endif |
| 144 | } | 145 | } |
| 145 | 146 | ||
| 146 | void render_keylock_status(uint8_t led_usb_state) { | 147 | void render_keylock_status(uint8_t led_usb_state) { |
| 147 | oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); | 148 | oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); |
| 149 | #if !defined(OLED_DISPLAY_128X64) | ||
| 148 | oled_write_P(PSTR(" "), false); | 150 | oled_write_P(PSTR(" "), false); |
| 151 | #endif | ||
| 149 | oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK)); | 152 | oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK)); |
| 150 | #ifdef OLED_DISPLAY_128X64 | ||
| 151 | oled_write_P(PSTR(" "), false); | 153 | oled_write_P(PSTR(" "), false); |
| 152 | #endif | ||
| 153 | oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK)); | 154 | oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK)); |
| 154 | #ifdef OLED_DISPLAY_128X64 | ||
| 155 | oled_write_P(PSTR(" "), false); | 155 | oled_write_P(PSTR(" "), false); |
| 156 | #endif | ||
| 157 | oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK)); | 156 | oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK)); |
| 158 | #ifndef OLED_DISPLAY_128X64 | 157 | #ifndef OLED_DISPLAY_128X64 |
| 159 | oled_advance_page(true); | 158 | oled_advance_page(true); |
| @@ -161,20 +160,18 @@ void render_keylock_status(uint8_t led_usb_state) { | |||
| 161 | } | 160 | } |
| 162 | 161 | ||
| 163 | void render_mod_status(uint8_t modifiers) { | 162 | 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}}; | ||
| 164 | oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); | 164 | oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); |
| 165 | oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT)); | 165 | oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT)); |
| 166 | #ifdef OLED_DISPLAY_128X64 | 166 | oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI)); |
| 167 | #if !defined(OLED_DISPLAY_128X64) | ||
| 167 | oled_write_P(PSTR(" "), false); | 168 | oled_write_P(PSTR(" "), false); |
| 168 | #endif | 169 | #endif |
| 169 | oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL)); | 170 | oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); |
| 170 | #ifdef OLED_DISPLAY_128X64 | 171 | oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); |
| 171 | oled_write_P(PSTR(" "), false); | 172 | #if defined(OLED_DISPLAY_128X64) |
| 172 | #endif | 173 | oled_advance_page(true); |
| 173 | oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT)); | ||
| 174 | #ifdef OLED_DISPLAY_128X64 | ||
| 175 | oled_write_P(PSTR(" "), false); | ||
| 176 | #endif | 174 | #endif |
| 177 | oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI)); | ||
| 178 | } | 175 | } |
| 179 | 176 | ||
| 180 | void render_bootmagic_status(void) { | 177 | void render_bootmagic_status(void) { |
| @@ -204,41 +201,71 @@ void render_bootmagic_status(void) { | |||
| 204 | #endif | 201 | #endif |
| 205 | oled_write_P(logo[0][0], !is_bootmagic_on); | 202 | oled_write_P(logo[0][0], !is_bootmagic_on); |
| 206 | } | 203 | } |
| 204 | #ifndef OLED_DISPLAY_128X64 | ||
| 205 | oled_write_P(PSTR(" "), false); | ||
| 206 | oled_write_P(logo[1][1], is_bootmagic_on); | ||
| 207 | oled_write_P(logo[0][1], !is_bootmagic_on); | ||
| 208 | #endif | ||
| 207 | oled_write_P(PSTR(" "), false); | 209 | oled_write_P(PSTR(" "), false); |
| 208 | #ifdef OLED_DISPLAY_128X64 | ||
| 209 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); | 210 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); |
| 210 | oled_write_P(PSTR(" "), false); | 211 | oled_write_P(PSTR(" "), false); |
| 211 | oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); | 212 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); |
| 212 | oled_write_P(PSTR("Magic "), false); | ||
| 213 | if (keymap_config.swap_lctl_lgui) | ||
| 214 | #endif | ||
| 215 | { | ||
| 216 | oled_write_P(logo[1][1], is_bootmagic_on); | ||
| 217 | #ifdef OLED_DISPLAY_128X64 | 213 | #ifdef OLED_DISPLAY_128X64 |
| 214 | oled_advance_page(true); | ||
| 215 | oled_write_P(PSTR("Magic"), false); | ||
| 216 | oled_write_P(PSTR(" "), false); | ||
| 217 | if (keymap_config.swap_lctl_lgui) { | ||
| 218 | oled_write_P(logo[1][1], is_bootmagic_on); | ||
| 218 | } else { | 219 | } else { |
| 219 | #endif | ||
| 220 | oled_write_P(logo[0][1], !is_bootmagic_on); | 220 | oled_write_P(logo[0][1], !is_bootmagic_on); |
| 221 | } | 221 | } |
| 222 | #endif | ||
| 222 | oled_write_P(PSTR(" "), false); | 223 | oled_write_P(PSTR(" "), false); |
| 223 | #ifdef OLED_DISPLAY_128X64 | ||
| 224 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); | 224 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); |
| 225 | oled_write_P(PSTR(" "), false); | 225 | oled_write_P(PSTR(" "), false); |
| 226 | oled_write_P(PSTR(" "), false); | ||
| 226 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock); | 227 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock); |
| 228 | #ifdef OLED_DISPLAY_128X64 | ||
| 227 | oled_advance_page(true); | 229 | oled_advance_page(true); |
| 228 | #else | ||
| 229 | oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); | ||
| 230 | #endif | 230 | #endif |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | #if defined(POINTING_DEVICE_ENABLE) | ||
| 234 | extern bool tap_toggling; | ||
| 235 | #endif | ||
| 236 | |||
| 233 | void render_user_status(void) { | 237 | void render_user_status(void) { |
| 234 | oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); | 238 | oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); |
| 239 | #if !defined(OLED_DISPLAY_128X64) | ||
| 235 | oled_write_P(PSTR(" "), false); | 240 | oled_write_P(PSTR(" "), false); |
| 241 | #endif | ||
| 242 | #if defined(RGB_MATRIX_ENABLE) | ||
| 236 | oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim); | 243 | oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim); |
| 244 | # if !defined(OLED_DISPLAY_128X64) | ||
| 237 | oled_write_P(PSTR(" "), false); | 245 | oled_write_P(PSTR(" "), false); |
| 238 | oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change); | 246 | # endif |
| 247 | #elif defined(POINTING_DEVICE_ENABLE) | ||
| 248 | static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0}; | ||
| 249 | oled_write_P(mouse_lock, tap_toggling); | ||
| 250 | #endif | ||
| 251 | #ifdef AUDIO_ENABLE | ||
| 252 | static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; | ||
| 253 | oled_write_P(audio_status[is_audio_on()], false); | ||
| 254 | |||
| 255 | # ifdef AUDIO_CLICKY | ||
| 256 | static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; | ||
| 257 | oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false); | ||
| 258 | # if !defined(OLED_DISPLAY_128X64) | ||
| 239 | oled_write_P(PSTR(" "), false); | 259 | oled_write_P(PSTR(" "), false); |
| 240 | oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch); | 260 | # endif |
| 241 | #ifdef OLED_DISPLAY_128X64 | 261 | # endif |
| 262 | #endif | ||
| 263 | |||
| 264 | static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; | ||
| 265 | oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false); | ||
| 266 | static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; | ||
| 267 | oled_write_P(nukem_good[0], userspace_config.nuke_switch); | ||
| 268 | #if defined(OLED_DISPLAY_128X64) | ||
| 242 | oled_advance_page(true); | 269 | oled_advance_page(true); |
| 243 | #endif | 270 | #endif |
| 244 | } | 271 | } |
| @@ -253,23 +280,55 @@ __attribute__((weak)) void oled_driver_render_logo(void) { | |||
| 253 | oled_write_P(qmk_logo, false); | 280 | oled_write_P(qmk_logo, false); |
| 254 | } | 281 | } |
| 255 | 282 | ||
| 283 | void render_wpm(void) { | ||
| 284 | #ifdef WPM_ENABLE | ||
| 285 | # ifdef OLED_DISPLAY_128X64 | ||
| 286 | char wpm_counter[4]; | ||
| 287 | # else | ||
| 288 | char wpm_counter[6]; | ||
| 289 | # endif | ||
| 290 | snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm()); | ||
| 291 | oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); | ||
| 292 | oled_write(wpm_counter, false); | ||
| 293 | #endif | ||
| 294 | } | ||
| 295 | |||
| 296 | #ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball | ||
| 297 | extern keyboard_config_t keyboard_config; | ||
| 298 | extern uint16_t dpi_array[]; | ||
| 299 | |||
| 300 | void render_pointing_dpi_status(void) { | ||
| 301 | char dpi_status[6]; | ||
| 302 | snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]); | ||
| 303 | oled_write_P(PSTR(" DPI: "), false); | ||
| 304 | oled_write(dpi_status, false); | ||
| 305 | } | ||
| 306 | #endif | ||
| 307 | |||
| 256 | void render_status_secondary(void) { | 308 | void render_status_secondary(void) { |
| 257 | #if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DISPLAY_128X64) | 309 | #if defined(OLED_DISPLAY_128X64) |
| 258 | oled_driver_render_logo(); | 310 | oled_driver_render_logo(); |
| 259 | #endif | 311 | #endif |
| 260 | /* Show Keyboard Layout */ | 312 | /* Show Keyboard Layout */ |
| 261 | render_default_layer_state(); | 313 | render_default_layer_state(); |
| 262 | render_layer_state(); | 314 | render_layer_state(); |
| 263 | render_mod_status(get_mods() | get_oneshot_mods()); | 315 | render_mod_status(get_mods() | get_oneshot_mods()); |
| 264 | render_keylogger_status(); | 316 | // render_keylogger_status(); |
| 265 | 317 | render_keylock_status(host_keyboard_leds()); | |
| 266 | } | 318 | } |
| 267 | // clang-format on | ||
| 268 | 319 | ||
| 269 | void render_status_main(void) { | 320 | void render_status_main(void) { |
| 321 | #if defined(OLED_DISPLAY_128X64) | ||
| 270 | oled_driver_render_logo(); | 322 | oled_driver_render_logo(); |
| 271 | /* Show Keyboard Layout */ | 323 | render_wpm(); |
| 324 | # ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball | ||
| 325 | render_pointing_dpi_status(); | ||
| 326 | # endif | ||
| 327 | oled_write_P(PSTR("\n"), false); | ||
| 328 | #else | ||
| 272 | render_default_layer_state(); | 329 | render_default_layer_state(); |
| 330 | #endif | ||
| 331 | /* Show Keyboard Layout */ | ||
| 273 | // render_keylock_status(host_keyboard_leds()); | 332 | // render_keylock_status(host_keyboard_leds()); |
| 274 | render_bootmagic_status(); | 333 | render_bootmagic_status(); |
| 275 | render_user_status(); | 334 | render_user_status(); |
