Browse Source

cleaned up led animations and keymap

pull/17502/head
Elliott Claus 1 year ago
parent
commit
5e55902ec1
5 changed files with 172 additions and 99 deletions
  1. +1
    -1
      keyboards/crkbd/keymaps/emdashii/config.h
  2. +1
    -0
      keyboards/crkbd/keymaps/emdashii/keycodes.h
  3. +10
    -8
      keyboards/crkbd/keymaps/emdashii/keymap.c
  4. +78
    -58
      keyboards/crkbd/keymaps/emdashii/oled.c
  5. +82
    -32
      keyboards/crkbd/keymaps/emdashii/rgb.c

+ 1
- 1
keyboards/crkbd/keymaps/emdashii/config.h View File

@ -118,7 +118,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE


+ 1
- 0
keyboards/crkbd/keymaps/emdashii/keycodes.h View File

@ -42,6 +42,7 @@ enum crkbd_layers {
// Special layer navigation keys
#define LNUMSPC LT(_NUMBER, KC_SPC)
#define LSYMDEL LT(_SYMBOL, KC_DEL)
#define LSYMXXX LT(_SYMBOL, XXXXXXX)
#define LNAVSPC LT(_NAVIGATION, KC_SPC)
#define LOSLFUN OSL(_FUNCTION)
#define SQWERTY DF(_QWERTY)


+ 10
- 8
keyboards/crkbd/keymaps/emdashii/keymap.c View File

@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
LNAV, HOME_A, HOME_S, HOME_D, HOME_F, KC_G, KC_H, HOME_J, HOME_K, HOME_L,HOME_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
LSYMDEL, LNUMSPC, LOSLFUN,TO(_ADJUST), LNAVSPC, KC_ENT
LSYMDEL, LNUMSPC, LSYMXXX, LOSLFUN, LNAVSPC, KC_ENT
),
@ -69,16 +69,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ,-----------------------------------------------------. ,-----------------------------------------------------.
// | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | | | | | | | | = | 4 | 5 | 6 | - | / |
// | | | | | | | | = | 4 | 5 | 6 | - | + |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | | | | | | | | : | 1 | 2 | 3 | + | * |
// | | | | | | | | : | 1 | 2 | 3 | / | * |
// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
// | Del |Spc/Ctrl| | | QWERTY | 0 | . |
// `--------------------------' `--------------------------'
[_NUMBER] = LAYOUT_split_3x6_3(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_4, KC_5, KC_6, KC_MINS, KC_SLSH,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, COLON, KC_1, KC_2, KC_3, KC_PLUS, KC_ASTR,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, COLON, KC_1, KC_2, KC_3, KC_SLSH, KC_ASTR,
KC_DEL, CTRLSPC, XXXXXXX, LQWERTY, KC_0, KC_DOT
),
@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ,-----------------------------------------------------. ,-----------------------------------------------------.
// | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | ` | ( | ) | { | } | | | = | - | + | | ; | ' " |
// | ` | ( | ) | { | } | | | = | - | + | = | ; | ' " |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | | < | > | [ | ] | | | | : | _ | , < | . > | / ? | \ |
// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// `--------------------------' `--------------------------'
[_SYMBOL] = LAYOUT_split_3x6_3(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_GRV, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, XXXXXXX, KC_EQL, KC_MINS, KC_PLUS, XXXXXXX, KC_SCLN, KC_QUOT,
KC_GRV, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, XXXXXXX, KC_EQL, KC_MINS, KC_PLUS, KC_EQL, KC_SCLN, KC_QUOT,
XXXXXXX,S(KC_COMM),S(KC_DOT), KC_LBRC, KC_RBRC, KC_PIPE, COLON, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
XXXXXXX, XXXXXXX, XXXXXXX, LQWERTY, XXXXXXX, XXXXXXX
@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | Cycle | Hue | Sat | Brght | | | |SetQWERTY| | | | | Mute |
// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
// | | | | | QWERTY | | |
// | | | | | QWERTY | | Gaming |
// `--------------------------' `--------------------------'
[_ADJUST] = LAYOUT_split_3x6_3(
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_NUM, KC_CAPS, KC_SCRL, XXXXXXX, KC_BRIU, KC_VOLU,
@ -156,9 +156,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
/*
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _SYMBOL, _NUMBER, _ADJUST);
}
*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {


+ 78
- 58
keyboards/crkbd/keymaps/emdashii/oled.c View File

@ -1,5 +1,5 @@
/* Copyright 2022 @toinux
*
* Copyright 2022 @emdashii
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
@ -21,92 +21,112 @@
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master()) {
return OLED_ROTATION_270; // flips the display 180 degrees if offhand
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
return rotation;
}
// Did not fix.
// #define _QWERTY 0
// #define _NAVIGATION 1
// #define _NUMBER 2
// #define _SYMBOL 3
// #define _FUNCTION 4
// #define _ADJUST 5
// #define _GAMING 6
void oled_render_mod_status(void) {
const uint8_t modifiers = get_mods() | get_oneshot_mods();
for (uint8_t i = 0; i < 2; i++) {
oled_set_cursor(9,i);
oled_write_P(gui_icon[(modifiers & MOD_MASK_GUI) ? 1 : 0][i], false);
oled_write_P(ctrl_icon[(modifiers & MOD_MASK_CTRL) ? 1 : 0][i], false);
oled_set_cursor(9,i+2);
oled_write_P(alt_icon[(modifiers & MOD_MASK_ALT) ? 1 : 0][i], false);
oled_write_P(shift_icon[(modifiers & MOD_MASK_SHIFT) ? 1 : 0][i], false);
// This renders, but the switching function is very broken.
void oled_render_layer_state(void) {
oled_write_P(PSTR("\nLayer: "), false);
switch (layer_state) {
case _QWERTY:
oled_write_ln_P(PSTR("Hey"), false);
break;
case _NAVIGATION:
oled_write_ln_P(PSTR("Hi"), false);
break;
case _NUMBER:
oled_write_ln_P(PSTR("Howdy"), false);
break;
case _SYMBOL:
oled_write_ln_P(PSTR("Hello"), false);
break;
case _FUNCTION:
oled_write_ln_P(PSTR("Greetings"), false);
break;
case _ADJUST:
oled_write_ln_P(PSTR("'Sup"), false);
break;
case _GAMING:
oled_write_ln_P(PSTR("Howdy-do-da-day!"), false);
break;
default:
oled_write_ln_P(PSTR("Default"), false);
break;
}
}
void oled_render_layer_state(void) {
char c = 0x9F - get_highest_layer(layer_state|default_layer_state);
oled_set_cursor(20,0);
oled_write_char(0X00, false);
//
char keylog_str[24] = {};
oled_set_cursor(20,1);
oled_write_char(c, false);
c += 32;
oled_set_cursor(20,2);
oled_write_char(c, false);
c += 32;
oled_set_cursor(20,3);
oled_write_char(c, false);
}
void oled_render_led_state(void) {
// oled_advance_page(false) instead of oled_write_ln_P to not break OLED_TIMEOUT
oled_write_P(PSTR("NUM"), host_keyboard_led_state().num_lock);
oled_advance_page(false);
oled_write_P(PSTR("CAP"), host_keyboard_led_state().caps_lock);
oled_advance_page(false);
oled_write_P(PSTR("SCL"), host_keyboard_led_state().scroll_lock);
oled_advance_page(false);
}
const char code_to_name[60] = {
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
'#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
uint8_t last_row = 0;
uint8_t last_col = 0;
void set_keylog(uint16_t keycode, keyrecord_t *record) {
last_row = record->event.key.row;
char name = ' ';
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
(keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
if (keycode < 60) {
name = code_to_name[keycode];
}
// update keylog
snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
record->event.key.row, record->event.key.col,
keycode, name);
last_row = record->event.key.row;
last_col = record->event.key.col;
}
// void oled_render_keylog(void) {
// oled_write(keylog_str, false);
// }
//
void oled_render_keylog(void) {
oled_write_char(last_row + '0', false);
oled_write_char('x', false);
oled_write_char(last_col + '0', false);
// oled_write_char(last_row + '0', false);
// oled_write_char('x', false);
// oled_write_char(last_col + '0', false);
oled_write(keylog_str, false);
}
void oled_render_logo(void) {
static const char PROGMEM kpu_logo[][3] = {
{0x82, 0x83, 0},
{0x80, 0x81, 0},
{0xa0, 0xa1, 0},
{0xc0, 0xc1, 0}
};
for (uint8_t i = 0; i < 4; i++) {
oled_write_ln_P(kpu_logo[i], false);
}
static const char PROGMEM crkbd_logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
0};
oled_write_P(crkbd_logo, false);
}
bool oled_task_user(void) {
if (is_keyboard_master ()) {
oled_render_led_state();
oled_render_keylog();
oled_render_mod_status();
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
oled_scroll_right();
oled_scroll_set_speed(4);
// oled_scroll_right();
// oled_scroll_set_speed(4);
}
return false;
}

+ 82
- 32
keyboards/crkbd/keymaps/emdashii/rgb.c View File

@ -1,5 +1,5 @@
/* Copyright 2022 @toinux
*
* Copyright 2022 @emdashii
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
@ -18,65 +18,115 @@
#include QMK_KEYBOARD_H
#include "keycodes.h"
static const char gaming_leds[] = {18, 22, 19, 16};
static const char gaming2_leds[] = {23, 18, 17, 10, 9, 22, 19, 16, 11, 8};
static const char nav_leds[] = {38, 43, 44, 46};
static const char fun_leds[] = {45, 44, 37, 46, 43, 38, 47, 42, 39, 40};
static const char mouse_leds[] = {11, 16, 17, 19};
static const char qwerty_leds[] = {22, 19, 16, 11, 38, 43, 46, 49};
static const char gaming_leds[] = {18, 22, 19, 16, 13};
static const char sym_leds[] = {22, 19, 16, 11, 21, 20, 15, 12};
static const char nav_leds[] = {38, 43, 44, 46}; // Inserted
static const char num_leds[] = {45, 44, 37, 46, 43, 38, 47, 42, 39, 40};
static const char fun_leds[] = {45, 44, 37, 46, 43, 38, 47, 42, 39, 50, 49, 48};
static const char mouse_leds[] = {11, 16, 17, 19}; // Inserted
static const char adjust_leds[] = {25, 22, 19, 16, 26, 21, 20, 15};
static const char top_right_leds[] = {23, 18, 17, 10, 9};
// RGB_CORAL for QWERTY
// RGB_GOLDENROD for Numbers
// RGB_PURPLE for navigation?
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(26, RGB_RED);
}
switch(get_highest_layer(layer_state|default_layer_state)) {
case _GAMING:
if (is_keyboard_master()) {
for (uint8_t i = 0; i < 4; i++) {
rgb_matrix_set_color(gaming_leds[i], RGB_RED);
}
case _QWERTY:
for (uint8_t i = 0; i < 8; i++) {
rgb_matrix_set_color(qwerty_leds[i], RGB_CORAL);
}
break;
case _NAVIGATION:
for (uint8_t i = 0; i < 4; i++) {
rgb_matrix_set_color(nav_leds[i], RGB_AZURE);
rgb_matrix_set_color(mouse_leds[i], RGB_GOLDENROD);
}
rgb_matrix_set_color(33, RGB_CORAL); // To qwerty
break;
case _NUMBER:
for (uint8_t i = 0; i < 10; i++) {
rgb_matrix_set_color(num_leds[i], RGB_GOLDENROD);
}
for (uint8_t i = 0; i < 5; i++) {
rgb_matrix_set_color(top_right_leds[i], RGB_GOLDENROD);
}
break;
case _SYMBOL:
if (is_keyboard_master()) {
for (uint8_t i = 0; i < 10; i++) {
rgb_matrix_set_color(gaming2_leds[i], RGB_GREEN);
for (uint8_t i = 0; i < 8; i++) {
rgb_matrix_set_color(sym_leds[i], RGB_CHARTREUSE);
}
}
break;
case _NAVIGATION:
for (uint8_t i = 0; i < 4; i++) {
rgb_matrix_set_color(nav_leds[i], RGB_BLUE);
rgb_matrix_set_color(mouse_leds[i], RGB_PURPLE);
for (uint8_t i = 0; i < 5; i++) {
rgb_matrix_set_color(top_right_leds[i], RGB_GOLDENROD);
}
break;
case _FUNCTION:
for (uint8_t i = 0; i < 10; i++) {
rgb_matrix_set_color(fun_leds[i], RGB_GREEN);
for (uint8_t i = 0; i < 12; i++) {
rgb_matrix_set_color(fun_leds[i], RGB_RED);
}
for (uint8_t i = 0; i < 5; i++) {
rgb_matrix_set_color(top_right_leds[i], RGB_GOLDENROD);
}
rgb_matrix_set_color(33, RGB_CORAL); // To qwerty
break;
case _ADJUST:
rgb_matrix_set_color(6, RGB_RED);
rgb_matrix_set_color(24, RGB_WHITE);
for (uint8_t i = 0; i < 8; i++) {
rgb_matrix_set_color(adjust_leds[i], RGB_RED);
}
rgb_matrix_set_color(33, RGB_CORAL); // To qwerty
break;
case _NUMBER:
case _GAMING:
if (is_keyboard_master()) {
for (uint8_t i = 0; i < 4; i++) {
rgb_matrix_set_color(mouse_leds[i], RGB_PURPLE);
for (uint8_t i = 0; i < 5; i++) {
rgb_matrix_set_color(gaming_leds[i], RGB_RED);
}
}
rgb_matrix_set_color(33, RGB_CORAL); // To qwerty
break;
}
}
// Template from @toinux
// TEMPLATE
// CRKBD LED TEMPLATE (learned through much thought (and trial and error))
// ,-----------------------------------------------------. ,-----------------------------------------------------.
// | | | | 11 | | | | | | 38 | | | |
// | 24 | 23 | 18 | 17 | 10 | 9 | | 36 | 37 | 44 | 45 | 50 | 51 |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | | | 16 | 17 | 19 | | | | 43 | 44 | 46 | | |
// | 25 | 22 | 19 | 16 | 11 | 8 | | 35 | 38 | 43 | 46 | 49 | 52 |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | | | | | | | | | | | | | |
// | 26 | 21 | 20 | 15 | 12 | 7 | | 34 | 39 | 42 | 47 | 48 | 53 |
// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
// | | | | | | | |
// | 14 | 13 | 6 | | 33 | 40 | 41 |
// `--------------------------' `--------------------------'
/*
Colors (Not using HSV for some reason? idk)
RGB HSV
RGB_AZURE HSV_AZURE
RGB_BLACK/RGB_OFF HSV_BLACK/HSV_OFF
RGB_BLUE HSV_BLUE
RGB_CHARTREUSE HSV_CHARTREUSE
RGB_CORAL HSV_CORAL
RGB_CYAN HSV_CYAN
RGB_GOLD HSV_GOLD
RGB_GOLDENROD HSV_GOLDENROD
RGB_GREEN HSV_GREEN
RGB_MAGENTA HSV_MAGENTA
RGB_ORANGE HSV_ORANGE
RGB_PINK HSV_PINK
RGB_PURPLE HSV_PURPLE
RGB_RED HSV_RED
RGB_SPRINGGREEN HSV_SPRINGGREEN
RGB_TEAL HSV_TEAL
RGB_TURQUOISE HSV_TURQUOISE
RGB_WHITE HSV_WHITE
RGB_YELLOW HSV_YELLOW
*/

Loading…
Cancel
Save