aboutsummaryrefslogtreecommitdiff
path: root/users/drashna/oled_stuff.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-02-23 10:57:24 -0800
committerGitHub <noreply@github.com>2021-02-23 10:57:24 -0800
commit0b69e4df818c2515cf4eee3d8b6fd4a07775b887 (patch)
treebdeee9c5a88c2aef8aca366b3e6ea986f44174c0 /users/drashna/oled_stuff.c
parent11146ecd086c6b6736ab3c5947f26a96be642671 (diff)
downloadqmk_firmware-0b69e4df818c2515cf4eee3d8b6fd4a07775b887.tar.gz
qmk_firmware-0b69e4df818c2515cf4eee3d8b6fd4a07775b887.zip
[Keymap] Drashna Updates - Split+OLED edition (#11968)
Diffstat (limited to 'users/drashna/oled_stuff.c')
-rw-r--r--users/drashna/oled_stuff.c141
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
27static uint32_t oled_timer = 0; 28uint32_t oled_timer = 0;
28static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; 29static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
29static uint16_t log_timer = 0; 30static 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
146void render_keylock_status(uint8_t led_usb_state) { 147void 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
163void render_mod_status(uint8_t modifiers) { 162void 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
180void render_bootmagic_status(void) { 177void 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)
234extern bool tap_toggling;
235#endif
236
233void render_user_status(void) { 237void 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
283void 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
297extern keyboard_config_t keyboard_config;
298extern uint16_t dpi_array[];
299
300void 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
256void render_status_secondary(void) { 308void 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
269void render_status_main(void) { 320void 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();