[Keymap] Drashna Updates - Split+OLED edition (#11968)

This commit is contained in:
Drashna Jaelre 2021-02-23 10:57:24 -08:00 committed by GitHub
parent 11146ecd08
commit 0b69e4df81
Failed to generate hash of commit
44 changed files with 2519 additions and 759 deletions

View file

@ -15,6 +15,7 @@
*/
#include "drashna.h"
#include <stdio.h>
#ifndef KEYLOGGER_LENGTH
// # ifdef OLED_DISPLAY_128X64
@ -24,7 +25,7 @@
// # endif
#endif
static uint32_t oled_timer = 0;
uint32_t oled_timer = 0;
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
static uint16_t log_timer = 0;
@ -132,28 +133,26 @@ void render_layer_state(void) {
oled_write_P(PSTR(" "), false);
#endif
oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
#if _MODS
# ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(" "), false);
# endif
oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS));
#endif
#ifdef OLED_DISPLAY_128X64
oled_advance_page(true);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD));
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO));
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE));
#endif
}
void render_keylock_status(uint8_t led_usb_state) {
oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
#if !defined(OLED_DISPLAY_128X64)
oled_write_P(PSTR(" "), false);
#endif
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
#ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(" "), false);
#endif
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
#ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(" "), false);
#endif
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
#ifndef OLED_DISPLAY_128X64
oled_advance_page(true);
@ -161,20 +160,18 @@ void render_keylock_status(uint8_t led_usb_state) {
}
void render_mod_status(uint8_t modifiers) {
static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT));
#ifdef OLED_DISPLAY_128X64
oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT));
oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI));
#if !defined(OLED_DISPLAY_128X64)
oled_write_P(PSTR(" "), false);
#endif
oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL));
#ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(" "), false);
oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT));
oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL));
#if defined(OLED_DISPLAY_128X64)
oled_advance_page(true);
#endif
oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT));
#ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(" "), false);
#endif
oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI));
}
void render_bootmagic_status(void) {
@ -204,41 +201,71 @@ void render_bootmagic_status(void) {
#endif
oled_write_P(logo[0][0], !is_bootmagic_on);
}
#ifndef OLED_DISPLAY_128X64
oled_write_P(PSTR(" "), false);
oled_write_P(logo[1][1], is_bootmagic_on);
oled_write_P(logo[0][1], !is_bootmagic_on);
#endif
oled_write_P(PSTR(" "), false);
#ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
oled_write_P(PSTR(" "), false);
oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
oled_write_P(PSTR("Magic "), false);
if (keymap_config.swap_lctl_lgui)
#endif
{
oled_write_P(logo[1][1], is_bootmagic_on);
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
#ifdef OLED_DISPLAY_128X64
oled_advance_page(true);
oled_write_P(PSTR("Magic"), false);
oled_write_P(PSTR(" "), false);
if (keymap_config.swap_lctl_lgui) {
oled_write_P(logo[1][1], is_bootmagic_on);
} else {
#endif
oled_write_P(logo[0][1], !is_bootmagic_on);
}
#endif
oled_write_P(PSTR(" "), false);
#ifdef OLED_DISPLAY_128X64
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock);
#ifdef OLED_DISPLAY_128X64
oled_advance_page(true);
#else
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
#endif
}
#if defined(POINTING_DEVICE_ENABLE)
extern bool tap_toggling;
#endif
void render_user_status(void) {
oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
#if !defined(OLED_DISPLAY_128X64)
oled_write_P(PSTR(" "), false);
#endif
#if defined(RGB_MATRIX_ENABLE)
oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
# if !defined(OLED_DISPLAY_128X64)
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change);
# endif
#elif defined(POINTING_DEVICE_ENABLE)
static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0};
oled_write_P(mouse_lock, tap_toggling);
#endif
#ifdef AUDIO_ENABLE
static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
oled_write_P(audio_status[is_audio_on()], false);
# ifdef AUDIO_CLICKY
static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false);
# if !defined(OLED_DISPLAY_128X64)
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch);
#ifdef OLED_DISPLAY_128X64
# endif
# endif
#endif
static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
oled_write_P(nukem_good[0], userspace_config.nuke_switch);
#if defined(OLED_DISPLAY_128X64)
oled_advance_page(true);
#endif
}
@ -253,23 +280,55 @@ __attribute__((weak)) void oled_driver_render_logo(void) {
oled_write_P(qmk_logo, false);
}
void render_wpm(void) {
#ifdef WPM_ENABLE
# ifdef OLED_DISPLAY_128X64
char wpm_counter[4];
# else
char wpm_counter[6];
# endif
snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm());
oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
oled_write(wpm_counter, false);
#endif
}
#ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
extern keyboard_config_t keyboard_config;
extern uint16_t dpi_array[];
void render_pointing_dpi_status(void) {
char dpi_status[6];
snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]);
oled_write_P(PSTR(" DPI: "), false);
oled_write(dpi_status, false);
}
#endif
void render_status_secondary(void) {
#if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DISPLAY_128X64)
#if defined(OLED_DISPLAY_128X64)
oled_driver_render_logo();
#endif
/* Show Keyboard Layout */
render_default_layer_state();
render_layer_state();
render_mod_status(get_mods() | get_oneshot_mods());
render_keylogger_status();
// render_keylogger_status();
render_keylock_status(host_keyboard_leds());
}
// clang-format on
void render_status_main(void) {
#if defined(OLED_DISPLAY_128X64)
oled_driver_render_logo();
/* Show Keyboard Layout */
render_wpm();
# ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
render_pointing_dpi_status();
# endif
oled_write_P(PSTR("\n"), false);
#else
render_default_layer_state();
#endif
/* Show Keyboard Layout */
// render_keylock_status(host_keyboard_leds());
render_bootmagic_status();
render_user_status();