summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-11-26 16:45:24 -0800
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2018-11-26 16:45:24 -0800
commitecd21b44a8efd5c7241ebf48c65fc7b30134865f (patch)
tree6fd84ca4bc241d9dbbe8ea3b81a7c8341b80ecc3
parentedb6c98fd23ab102069037f3dbfbd46c6067e86a (diff)
Update to drashna userspace and keymaps (#4459)
* Fix reversed bool check in layer_state_set * Add Quefrency 65 for a friend * Add Ergodox EZ Glow keymap * Add RGB Matrix Code * Further changes to rgb matrix ErgoDox EZ * Update bjohnson keymaps * Fix CRKBD display * Overhaul to corne keyboard * Narrow scope for keylogger * Minor layout tweaks to Corne Keyboard * additional CRKBD tweaks * Minor tweaks to CRKBD * Add all characters for keylogger * Ergodox EZ Glow overhaul * Fix Ergodox EZ Glow layer colors * Increase Tapping Term for Corne Keyboard * Fix unicode-ish * Revert some changes * Add layer specific lighting effects * Some minor tweaks to ergodox glow config * revert changes to ergodox files * Update Glow readme * Add more tapping term defines * Fix changes * Fix ergodox keymap * Hopefully fix sleeping * Disable layer indications if rgb matrix is disabled * Add support for sleeping and rgb layer change toggle to ergodox ez glow * Make RGB Layer Indication Great Again * Make Unicode Great Again * Remove placeholder define Co-Authored-By: drashna <drashna@live.com> * Remove placeholder define Co-Authored-By: drashna <drashna@live.com> * Remove old EEPROM Reset keycode
-rw-r--r--keyboards/crkbd/keymaps/drashna/config.h7
-rw-r--r--keyboards/crkbd/keymaps/drashna/keymap.c153
-rw-r--r--keyboards/crkbd/keymaps/drashna/rules.mk8
-rw-r--r--keyboards/iris/keymaps/drashna/keymap.c2
-rw-r--r--keyboards/iris/keymaps/drashna/rules.mk2
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c2
-rw-r--r--keyboards/quefrency/keymaps/bjohnson/config.h41
-rw-r--r--keyboards/quefrency/keymaps/bjohnson/keymap.c33
-rw-r--r--keyboards/quefrency/keymaps/bjohnson/rules.mk22
-rw-r--r--keyboards/viterbi/keymaps/drashna/keymap.c4
-rw-r--r--layouts/community/ergodox/drashna/keymap.c120
-rw-r--r--layouts/community/ergodox/drashna_glow/README.md1
-rw-r--r--layouts/community/ergodox/drashna_glow/config.h11
-rw-r--r--layouts/community/ergodox/drashna_glow/keymap.c67
-rw-r--r--layouts/community/ergodox/drashna_glow/rules.mk9
-rw-r--r--layouts/community/ortho_4x12/drashna/keymap.c2
-rw-r--r--users/drashna/config.h4
-rw-r--r--users/drashna/drashna.c22
-rw-r--r--users/drashna/drashna.h8
-rw-r--r--users/drashna/rgb_stuff.c86
-rw-r--r--users/drashna/rgb_stuff.h2
-rw-r--r--users/drashna/rules.mk17
-rw-r--r--users/drashna/send_unicode.c54
-rw-r--r--users/drashna/template.c7
-rw-r--r--users/drashna/template.h4
25 files changed, 576 insertions, 112 deletions
diff --git a/keyboards/crkbd/keymaps/drashna/config.h b/keyboards/crkbd/keymaps/drashna/config.h
index adfd79044d..cbc3feeb61 100644
--- a/keyboards/crkbd/keymaps/drashna/config.h
+++ b/keyboards/crkbd/keymaps/drashna/config.h
@@ -41,5 +41,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_LIMIT_VAL 120
+#define RGBLIGHT_LIMIT_VAL 100
+#endif
+
+#ifdef AUDIO_ENABLE
+#define B6_AUDIO
+// #define NO_MUSIC_MODE
#endif
diff --git a/keyboards/crkbd/keymaps/drashna/keymap.c b/keyboards/crkbd/keymaps/drashna/keymap.c
index 99dcdb4e17..282ee25725 100644
--- a/keyboards/crkbd/keymaps/drashna/keymap.c
+++ b/keyboards/crkbd/keymaps/drashna/keymap.c
@@ -26,10 +26,10 @@ enum crkbd_keycodes {
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
) \
LAYOUT_wrapper( \
- KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
- KC_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
+ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
+ KC_TAB, ALT_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, K1A, RGUI_T(KC_QUOT), \
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
- LT(_LOWER,KC_GRV), KC_SPC, LALT_T(KC_BSPC), KC_DEL, KC_ENT, RAISE \
+ LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
)
#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__)
@@ -66,14 +66,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LOWER] = LAYOUT_wrapper(
- KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC,
- KC_F11, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
- KC_F12, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
+ KC_F11, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
+ KC_F12, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
+ _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
_______, _______, _______, _______, _______, _______
),
[_RAISE] = LAYOUT_wrapper( \
- KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_BSPC,
+ _______, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______,
_______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
_______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
_______, _______, _______, _______, _______, _______
@@ -81,18 +81,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_wrapper( \
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
- VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EPRM,
- TG_MODS, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
- _______, _______, _______, _______, _______, _______
+ VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
+ _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
+ _______, _______, _______, KC_NUKE, TG_MODS, _______
)
};
-int RGB_current_mode;
-
void matrix_init_keymap(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
iota_gfx_init(!has_usb()); // turns on the display
@@ -102,53 +97,118 @@ void matrix_init_keymap(void) {
PORTD &= ~(1<<5);
DDRB &= ~(1<<0);
- PORTB &= ~(1<<0);}
+ PORTB &= ~(1<<0);
+}
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
// When add source files to SRC in rules.mk, you can use functions.
-const char *read_layer_state(void);
const char *read_logo(void);
-void set_keylog(uint16_t keycode, keyrecord_t *record);
-const char *read_keylog(void);
-const char *read_keylogs(void);
char layer_state_str[24];
+char modifier_state_str[24];
+char host_led_state_str[24];
+char keylog_str[24] = {};
+char keylogs_str[21] = {};
+int keylogs_str_idx = 0;
+
// const char *read_mode_icon(bool swap);
-const char *read_host_led_state(void);
// void set_timelog(void);
// const char *read_timelog(void);
+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', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ char name = ' ';
+ 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);
+
+ // update keylogs
+ if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
+ keylogs_str_idx = 0;
+ for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
+ keylogs_str[i] = ' ';
+ }
+ }
+
+ keylogs_str[keylogs_str_idx] = name;
+ keylogs_str_idx++;
+}
+
+const char *read_keylog(void) {
+ return keylog_str;
+}
+
+const char *read_keylogs(void) {
+ return keylogs_str;
+}
+
+
+const char* read_modifier_state(void) {
+ uint8_t modifiers = get_mods();
+ uint8_t one_shot = get_oneshot_mods();
+
+ snprintf(modifier_state_str, sizeof(modifier_state_str), "Mods:%s %s %s %s",
+ (modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) ? "CTL" : " ",
+ (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK) ? "GUI" : " ",
+ (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) ? "ALT" : " ",
+ (modifiers & MODS_SHIFT_MASK || one_shot & MODS_SHIFT_MASK) ? "SFT" : " "
+ );
+
+ return modifier_state_str;
+}
+
+const char *read_host_led_state(void) {
+ uint8_t leds = host_keyboard_leds();
+
+ snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
+ (leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
+ (leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
+ (leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- "
+ );
+
+ return host_led_state_str;
+}
const char* read_layer_state(void) {
- switch (layer_state) {
- case _QWERTY:
- switch (default_layer_state) {
+ switch (biton32(layer_state)) {
+ case _RAISE:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise ");
+ break;
+ case _LOWER:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower ");
+ break;
+ case _ADJUST:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust ");
+ break;
+ default:
+ switch (biton32(default_layer_state)) {
case _QWERTY:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: QWERTY");
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty ");
break;
case _COLEMAK:
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak");
break;
case _DVORAK:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak");
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak ");
break;
case _WORKMAN:
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Workman");
break;
}
break;
- case _RAISE:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise");
- break;
- case _LOWER:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower");
- break;
- case _ADJUST:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
- break;
- default:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
}
return layer_state_str;
@@ -160,12 +220,13 @@ void matrix_scan_keymap(void) {
void matrix_render_user(struct CharacterMatrix *matrix) {
if (is_master) {
- // If you want to change the display of OLED, you need to change here
+ //If you want to change the display of OLED, you need to change here
matrix_write_ln(matrix, read_layer_state());
- matrix_write_ln(matrix, read_keylog());
+ matrix_write_ln(matrix, read_modifier_state());
+ // matrix_write_ln(matrix, read_keylog());
matrix_write_ln(matrix, read_keylogs());
- //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- matrix_write_ln(matrix, read_host_led_state());
+ // matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
+ matrix_write(matrix, read_host_led_state());
//matrix_write_ln(matrix, read_timelog());
} else {
matrix_write(matrix, read_logo());
@@ -187,8 +248,14 @@ void iota_gfx_task_user(void) {
}
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- set_keylog(keycode, record);
+ switch (keycode) {
+ case KC_A ... KC_SLASH:
+ case KC_F1 ... KC_F12:
+ case KC_INSERT ... KC_UP:
+ case KC_KP_SLASH ... KC_KP_DOT:
+ case KC_F13 ... KC_F24:
+ if (record->event.pressed) { set_keylog(keycode, record); }
+ break;
// set_timelog();
}
return true;
diff --git a/keyboards/crkbd/keymaps/drashna/rules.mk b/keyboards/crkbd/keymaps/drashna/rules.mk
index ccf8e2b7c8..4b70f66f7b 100644
--- a/keyboards/crkbd/keymaps/drashna/rules.mk
+++ b/keyboards/crkbd/keymaps/drashna/rules.mk
@@ -20,12 +20,14 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+BOOTLOADER = qmk-dfu
+
# If you want to change the display of OLED, you need to change here
SRC += ./lib/glcdfont.c \
./lib/rgb_state_reader.c \
./lib/logo_reader.c \
- ./lib/keylogger.c \
- ./lib/host_led_state_reader.c \
- # ./lib/layer_state_reader.c \
+ # ./lib/keylogger.c \
+ # ./lib/host_led_state_reader.c \
# ./lib/mode_icon_reader.c \
+ # ./lib/layer_state_reader.c \
# ./lib/timelogger.c \
diff --git a/keyboards/iris/keymaps/drashna/keymap.c b/keyboards/iris/keymaps/drashna/keymap.c
index 21e3151c0f..ba6f18edde 100644
--- a/keyboards/iris/keymaps/drashna/keymap.c
+++ b/keyboards/iris/keymaps/drashna/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_wrapper(
KC_MAKE, _______, _______, _______, _______, _______, _________________ADJUST_R1_________________, KC_RST,
- VRSN, _________________ADJUST_L1_________________, KC_NUKE, _______, _______, _______, _______, EPRM,
+ VRSN, _________________ADJUST_L1_________________, KC_NUKE, _______, _______, _______, _______, EEP_RST,
_______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS,
_______, _________________ADJUST_L3_________________, TG_GAME, _______, _________________ADJUST_R3_________________, KC_MPLY,
_______, _______, _______, _______, _______, _______
diff --git a/keyboards/iris/keymaps/drashna/rules.mk b/keyboards/iris/keymaps/drashna/rules.mk
index 89e568f399..ccc33c06f3 100644
--- a/keyboards/iris/keymaps/drashna/rules.mk
+++ b/keyboards/iris/keymaps/drashna/rules.mk
@@ -8,7 +8,7 @@ RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = yes
NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no
-SWAP_HANDS_ENABLE = yes
+SWAP_HANDS_ENABLE = no
INDICATOR_LIGHTS = yes
MACROS_ENABLED = no
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index 545ad25dcd..346ca4f123 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_wrapper(\
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
- VRSN, _________________ADJUST_L2_________________, _______, _______, _______, KC_NUKE, _________________ADJUST_R2_________________, EPRM,
+ VRSN, _________________ADJUST_L2_________________, _______, _______, _______, KC_NUKE, _________________ADJUST_R2_________________, EEP_RST,
TG_MODS, _________________ADJUST_L3_________________, _______, _______, _______, _______, _______, _______, _________________ADJUST_R3_________________, KC_MPLY
)
};
diff --git a/keyboards/quefrency/keymaps/bjohnson/config.h b/keyboards/quefrency/keymaps/bjohnson/config.h
new file mode 100644
index 0000000000..37c6d6672d
--- /dev/null
+++ b/keyboards/quefrency/keymaps/bjohnson/config.h
@@ -0,0 +1,41 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+Copyright 2018 Danny Nguyen <danny@keeb.io>
+
+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
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+#define TAPPING_TERM 500
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
+#define FORCE_NKRO
+#define RETRO_TAPPING
+
+#define TAPPING_TOGGLE 1
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#define RGBLIGHT_SLEEP
diff --git a/keyboards/quefrency/keymaps/bjohnson/keymap.c b/keyboards/quefrency/keymaps/bjohnson/keymap.c
new file mode 100644
index 0000000000..434a0a3058
--- /dev/null
+++ b/keyboards/quefrency/keymaps/bjohnson/keymap.c
@@ -0,0 +1,33 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BASE 0
+#define _FN1 1
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_65(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC, KC_HOME, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_INS, \
+ KC_LCTL, KC_LGUI, KC_LALT, LT(_FN1,KC_SPC),KC_SPC, KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, XXXXXXX, KC_APP, KC_RCTL, TT(_FN1)
+ ),
+
+ [_FN1] = LAYOUT_65(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_BSPC, KC_PGUP, \
+ _______, _______, KC_UP, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, KC_PGDN, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, \
+ _______, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, KC_P0, XXXXXXX, _______, _______, XXXXXXX, _______, _______, _______
+ )
+};
diff --git a/keyboards/quefrency/keymaps/bjohnson/rules.mk b/keyboards/quefrency/keymaps/bjohnson/rules.mk
new file mode 100644
index 0000000000..70fa711009
--- /dev/null
+++ b/keyboards/quefrency/keymaps/bjohnson/rules.mk
@@ -0,0 +1,22 @@
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = yes # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c
index acda8a0d25..a343205197 100644
--- a/keyboards/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/viterbi/keymaps/drashna/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MEDIA] = LAYOUT_ortho_5x7(
KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD,
- MEDIA, EPRM, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI,
+ MEDIA, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI,
RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD,
KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI,
KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI
@@ -94,5 +94,3 @@ void matrix_init_keymap(void) {
DDRB &= ~(1<<0);
PORTB &= ~(1<<0);
}
-
-
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 360a2d9c6d..df9be62b77 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -20,8 +20,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef UNICODEMAP_ENABLE
#include "drashna_unicode.h"
#endif // UNICODEMAP_ENABLE
+extern uint8_t input_mode;
-
+#ifdef RGB_MATRIX_ENABLE
+extern bool g_suspend_state;
+extern rgb_config_t rgb_matrix_config;
+#endif
+extern userspace_config_t userspace_config;
//enum more_custom_keycodes {
// KC_P00 = NEW_SAFE_RANGE
@@ -40,7 +45,7 @@ bool skip_leds = false;
KC_TAB, K01, K02, K03, K04, K05, TG(_DIABLO), TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, CTL_T(K2A), KC_MRSF, \
- KC_GRV, OSM(MOD_MEH),OSM(MOD_LGUI),KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC_SHRG, \
+ KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \
KC_HOME, KC_PGUP, \
LT(_LOWER, KC_SPACE),KC_BSPC, KC_END, KC_PGDN, KC_DEL, LT(_RAISE, KC_ENTER) \
@@ -198,7 +203,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_GAMEPAD] = LAYOUT_ergodox_pretty_wrapper(
KC_ESC, KC_NO, KC_1, KC_2, KC_3, HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
- KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG(_GAMEPAD), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
@@ -263,7 +268,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
KC_MAKE, _______, _______, _______, _______, _______, _______, KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
- VRSN, _________________ADJUST_L1_________________, _______, _______, _______, _______, _______, _______, _______, EPRM,
+ VRSN, _________________ADJUST_L1_________________, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
_______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG(_MODS),
_______, _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -290,10 +295,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
return true;
}
-void matrix_init_keymap(void) { // Runs boot tasks for keyboard
-};
-
-
void matrix_scan_keymap(void) { // runs frequently to update info
uint8_t modifiers = get_mods();
uint8_t led_usb_state = host_keyboard_leds();
@@ -335,3 +336,106 @@ bool indicator_is_this_led_used_keyboard(uint8_t index) {
return false;
}
}
+
+
+#ifdef RGB_MATRIX_ENABLE
+
+void suspend_power_down_keymap(void) {
+ rgb_matrix_set_suspend_state(true);
+ rgb_matrix_config.enable = false;
+}
+
+void suspend_wakeup_init_keymap(void) {
+ rgb_matrix_config.enable = true;
+ rgb_matrix_set_suspend_state(false);
+}
+
+void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
+ rgb_led led;
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ led = g_rgb_leds[i];
+ if (led.matrix_co.raw < 0xFF) {
+ if (led.modifier) {
+ rgb_matrix_set_color( i, red, green, blue );
+ }
+ }
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ if (g_suspend_state || !rgb_matrix_config.enable || !userspace_config.rgb_layer_change) return;
+
+ switch (biton32(layer_state)) {
+ case _MODS:
+ rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+ case _GAMEPAD:
+ rgb_matrix_layer_helper(0xFF, 0x80, 0x00);
+ rgb_matrix_set_color(32, 0x00, 0xFF, 0x00); // Q
+ rgb_matrix_set_color(31, 0x00, 0xFF, 0xFF); // W
+ rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // E
+ rgb_matrix_set_color(29, 0xFF, 0x80, 0x00); // R
+ rgb_matrix_set_color(37, 0x00, 0xFF, 0xFF); // A
+ rgb_matrix_set_color(36, 0x00, 0xFF, 0xFF); // S
+ rgb_matrix_set_color(35, 0x00, 0xFF, 0xFF); // D
+ rgb_matrix_set_color(34, 0x7A, 0x00, 0xFF); // F
+
+ rgb_matrix_set_color(27, 0xFF, 0xFF, 0xFF); // 1
+ rgb_matrix_set_color(26, 0x00, 0xFF, 0x00); // 2
+ rgb_matrix_set_color(25, 0x7A, 0x00, 0xFF); // 3
+
+ break;
+ case _DIABLO:
+ rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
+ case _RAISE:
+ rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+ case _LOWER:
+ rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
+ case _ADJUST:
+ rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
+ default:
+ switch (biton32(default_layer_state)) {
+ case _QWERTY:
+ rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
+ case _COLEMAK:
+ rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
+ case _DVORAK:
+ rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
+ case _WORKMAN:
+ rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
+ }
+ }
+#if 0
+ if (this_mod & MODS_SHIFT_MASK || this_led & (1<<USB_LED_CAPS_LOCK) || this_osm & MODS_SHIFT_MASK) {
+ rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
+ rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
+ }
+ if (this_mod & MODS_CTRL_MASK || this_osm & MODS_CTRL_MASK) {
+ rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
+
+ }
+ if (this_mod & MODS_GUI_MASK || this_osm & MODS_GUI_MASK) {
+ rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
+ }
+ if (this_mod & MODS_ALT_MASK || this_osm & MODS_ALT_MASK) {
+ rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
+ }
+#endif
+}
+
+void matrix_init_keymap(void) {
+ #ifdef RGB_MATRIX_KEYPRESSES
+ rgblight_mode(RGB_MATRIX_MULTISPLASH);
+ #else
+ rgblight_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
+ #endif
+
+ input_mode = 2;
+}
+
+#else
+void matrix_init_keymap(void) {
+ input_mode = 2;
+}
+#endif //RGB_MATRIX_INIT
diff --git a/layouts/community/ergodox/drashna_glow/README.md b/layouts/community/ergodox/drashna_glow/README.md
new file mode 100644
index 0000000000..7d625a258d
--- /dev/null
+++ b/layouts/community/ergodox/drashna_glow/README.md
@@ -0,0 +1 @@
+Note: This board will not flash if the "g_rgb_leds" const is not set to weak in the ergodox_ez.c file
diff --git a/layouts/community/ergodox/drashna_glow/config.h b/layouts/community/ergodox/drashna_glow/config.h
new file mode 100644
index 0000000000..197acbc4a0
--- /dev/null
+++ b/layouts/community/ergodox/drashna_glow/config.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "../drashna/config.h"
+
+#undef PRODUCT
+#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Glow
+
+#undef DEBOUNCE
+#define DEBOUNCE 5
+
+// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
diff --git a/layouts/community/ergodox/drashna_glow/keymap.c b/layouts/community/ergodox/drashna_glow/keymap.c
new file mode 100644
index 0000000000..f2fb665453
--- /dev/null
+++ b/layouts/community/ergodox/drashna_glow/keymap.c
@@ -0,0 +1,67 @@
+/* placeholder file */
+#include QMK_KEYBOARD_H
+
+const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
+
+ /*{row | col << 4}
+ | {x=0..224, y=0..64}
+ | | modifier
+ | | | */
+ {{0|(0<<4)}, {24.9*5, 16*0}, 0}, // LED 1 on right
+ {{0|(1<<4)}, {24.9*6, 16*0}, 0}, // LED 2
+ {{0|(2<<4)}, {24.9*7, 16*0}, 0}, // LED 3
+ {{0|(3<<4)}, {24.9*8, 16*0}, 0}, // LED 4
+ {{0|(4<<4)}, {24.9*9, 16*0}, 0}, // LED 5
+
+ {{1|(5<<4)}, {24.9*5, 16*1}, 0}, // LED 6
+ {{1|(6<<4)}, {24.9*6, 16*1}, 0}, // LED 7
+ {{1|(7<<4)}, {24.9*7, 16*1}, 0}, // LED 8
+ {{1|(8<<4)}, {24.9*8, 16*1}, 0}, // LED 9
+ {{1|(9<<4)}, {24.9*9, 16*1}, 0}, // LED 10
+
+ {{2|(5<<4)}, {24.9*5, 16*2}, 0}, // LED 11
+ {{2|(6<<4)}, {24.9*6, 16*2}, 0}, // LED 12
+ {{2|(7<<4)}, {24.9*7, 16*2}, 0}, // LED 13
+ {{2|(8<<4)}, {24.9*8, 16*2}, 0}, // LED 14
+ {{2|(9<<4)}, {24.9*9, 16*2}, 0}, // LED 15
+
+ {{3|(5<<4)}, {24.9*5, 16*2}, 0}, // LED 16
+ {{3|(6<<4)}, {24.9*6, 16*2}, 0}, // LED 17
+ {{3|(7<<4)}, {24.9*7, 16*2}, 0}, // LED 18
+ {{3|(8<<4)}, {24.9*8, 16*2}, 0}, // LED 19
+ {{3|(9<<4)}, {24.9*9, 16*2}, 0}, // LED 20
+
+ {{4|(6<<4)}, {24.9*6, 16*2}, 1}, // LED 21
+ {{4|(7<<4)}, {24.9*7, 16*2}, 1}, // LED 22
+ {{4|(8<<4)}, {24.9*8, 16*2}, 1}, // LED 23
+ {{4|(9<<4)}, {24.9*9, 16*2}, 1}, // LED 24
+
+ {{0|(0<<4)}, {24.9*4, 16*0}, 0}, // LED 1 on left
+ {{0|(1<<4)}, {24.9*3, 16*0}, 0}, // LED 2
+ {{0|(2<<4)}, {24.9*2, 16*0}, 0}, // LED 3
+ {{0|(3<<4)}, {24.9*1, 16*0}, 0}, // LED 4
+ {{0|(4<<4)}, {24.9*0, 16*0}, 0}, // LED 5
+
+ {{1|(5<<4)}, {24.9*4, 16*1}, 0}, // LED 6
+ {{1|(6<<4)}, {24.9*3, 16*1}, 0}, // LED 7
+ {{1|(7<<4)}, {24.9*2, 16*1}, 0}, // LED 8
+ {{1|(8<<4)}, {24.9*1, 16*1}, 0}, // LED 9
+ {{1|(9<<4)}, {24.9*0, 16*1}, 0}, // LED 10
+
+ {{2|(5<<4)}, {24.9*4, 16*2}, 0}, // LED 11
+ {{2|(6<<4)}, {24.9*3, 16*2}, 0}, // LED 12
+ {{2|(7<<4)}, {24.9*2, 16*2}, 0}, // LED 13
+ {{2|(8<<4)}, {24.9*1, 16*2}, 0}, // LED 14
+ {{2|(9<<4)}, {24.9*0, 16*2}, 0}, // LED 15
+
+ {{3|(5<<4)}, {24.9*4, 16*2}, 0}, // LED 16
+ {{3|(6<<4)}, {24.9*3, 16*2}, 0}, // LED 17
+ {{3|(7<<4)}, {24.9*2, 16*2}, 0}, // LED 18
+ {{3|(8<<4)}, {24.9*1, 16*2}, 0}, // LED 19
+ {{3|(9<<4)}, {24.9*0, 16*2}, 0}, // LED 20
+
+ {{4|(6<<4)}, {24.9*3, 16*2}, 1}, // LED 21
+ {{4|(7<<4)}, {24.9*2, 16*2}, 1}, // LED 22
+ {{4|(8<<4)}, {24.9*1, 16*2}, 1}, // LED 23
+ {{4|(9<<4)}, {24.9*0, 16*2}, 1}, // LED 24
+};
diff --git a/layouts/community/ergodox/drashna_glow/rules.mk b/layouts/community/ergodox/drashna_glow/rules.mk
new file mode 100644
index 0000000000..3b317224a6
--- /dev/null
+++ b/layouts/community/ergodox/drashna_glow/rules.mk
@@ -0,0 +1,9 @@
+USER_NAME := drashna
+SRC += ../drashna/keymap.c
+
+-include $$(LAYOUT_KEYMAP_PATH)/../drashna/rules.mk
+
+ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
+ RGBLIGHT_ENABLE = no
+ RGB_MATRIX_ENABLE = yes
+endif
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index 2a9e32cc88..205d12d8c3 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_4x12_wrapper(
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
- VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EPRM,
+ VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
_______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 7e6a7d1c81..06cae86ab9 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -57,8 +57,10 @@
#ifdef TAPPING_TERM
#undef TAPPING_TERM
#endif // TAPPING_TERM
-#ifdef KEYBOARD_ergodox_ez
+#if defined(KEYBOARD_ergodox_ez)
#define TAPPING_TERM 185
+#elif defined(KEYBOARD_crkbd)
+ #define TAPPING_TERM 200
#else
#define TAPPING_TERM 175
#endif
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 4111d29314..8f10a530e2 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -173,12 +173,15 @@ void matrix_init_user(void) {
get_unicode_input_mode();
#endif //UNICODE_ENABLE
matrix_init_keymap();
-}
-
-void startup_user (void) {
#ifdef RGBLIGHT_ENABLE
matrix_init_rgb();
#endif //RGBLIGHT_ENABLE
+}
+
+void startup_user (void) {
+ // #ifdef RGBLIGHT_ENABLE
+ // matrix_init_rgb();
+ // #endif //RGBLIGHT_ENABLE
startup_keymap();
}
@@ -294,11 +297,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
break;
- case EPRM: // Resets EEPROM
- if (record->event.pressed) {
- eeconfig_init();
- }
- break;
case VRSN: // Prints firmware version
if (record->event.pressed) {
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER);
@@ -392,7 +390,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#endif
}
return process_record_keymap(keycode, record) &&
-#ifdef RGBLIGHT_ENABLE
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
process_record_user_rgb(keycode, record) &&
#endif // RGBLIGHT_ENABLE
process_record_secrets(keycode, record);
@@ -413,7 +411,11 @@ uint32_t layer_state_set_user(uint32_t state) {
uint32_t default_layer_state_set_user(uint32_t state) {
- return default_layer_state_set_keymap(state);
+ state = default_layer_state_set_keymap(state);
+#ifdef RGBLIGHT_ENABLE
+ state = default_layer_state_set_rgb(state);
+#endif // RGBLIGHT_ENABLE
+ return state;
}
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 573cb26fd0..06e726714c 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -73,6 +73,8 @@ typedef union {
};
} userspace_config_t;
+extern userspace_config_t userspace_config;
+
#if defined(KEYMAP_SAFE_RANGE)
#define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
#else
@@ -80,8 +82,7 @@ typedef union {
#endif
enum userspace_custom_keycodes {
- EPRM = PLACEHOLDER_SAFE_RANGE, // Resets EEPROM do defaults (as in eeconfig_init)
- VRSN, // Prints QMK Firmware and board info
+ VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
KC_QWERTY, // Sets default layer to QWERTY
KC_COLEMAK, // Sets default layer to COLEMAK
KC_DVORAK, // Sets default layer to DVORAK
@@ -159,6 +160,9 @@ enum userspace_custom_keycodes {
#define OS_RCTL OSM(MOD_RCTL)
#define OS_LALT OSM(MOD_LALT)
#define OS_RALT OSM(MOD_RALT)
+#define OS_MEH OSM(MOD_MEH)
+#define OS_HYPR OSM(MOD_HYPR)
+
#define ALT_APP ALT_T(KC_APP)
#define MG_NKRO MAGIC_TOGGLE_NKRO
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index b6de4d39e5..d238c20651 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -2,8 +2,11 @@
#include "rgb_stuff.h"
#include "eeprom.h"
+#if defined(RGBLIGHT_ENABLE)
extern rgblight_config_t rgblight_config;
-extern userspace_config_t userspace_config;
+#elif defined(RGB_MATRIX_ENABLE)
+extern rgb_config_t rgb_matrix_config;
+#endif
#ifdef RGBLIGHT_ENABLE
void rgblight_sethsv_default_helper(uint8_t index) {
@@ -209,7 +212,7 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
return true; break;
#endif // RGBLIGHT_TWINKLE
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
-#ifdef RGBLIGHT_ENABLE
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
if (record->event.pressed) {
userspace_config.rgb_layer_change ^= 1;
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
@@ -237,24 +240,25 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
-void matrix_init_rgb(void) {
+ void matrix_init_rgb(void) {
- if (userspace_config.rgb_layer_change) {
- rgblight_init();
- rgblight_enable_noeeprom();
- switch (biton32(eeconfig_read_default_layer())) {
- case _COLEMAK:
- rgblight_sethsv_noeeprom_magenta(); break;
- case _DVORAK:
- rgblight_sethsv_noeeprom_springgreen(); break;
- case _WORKMAN:
- rgblight_sethsv_noeeprom_goldenrod(); break;
- default:
- rgblight_sethsv_noeeprom_cyan(); break;
- }
- rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
- }
-}
+// #ifdef RGBLIGHT_ENABLE
+// if (userspace_config.rgb_layer_change) {
+// rgblight_enable_noeeprom();
+// switch (biton32(eeconfig_read_default_layer())) {
+// case _COLEMAK:
+// rgblight_sethsv_noeeprom_magenta(); break;
+// case _DVORAK:
+// rgblight_sethsv_noeeprom_springgreen(); break;
+// case _WORKMAN:
+// rgblight_sethsv_noeeprom_goldenrod(); break;
+// default:
+// rgblight_sethsv_noeeprom_cyan(); break;
+// }
+// rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+// }
+// #endif
+ }
void matrix_scan_rgb(void) {
#ifdef RGBLIGHT_TWINKLE
@@ -270,7 +274,6 @@ void matrix_scan_rgb(void) {
uint32_t layer_state_set_rgb(uint32_t state) {
#ifdef RGBLIGHT_ENABLE
- static bool has_ran;
if (userspace_config.rgb_layer_change) {
switch (biton32(state)) {
case _MACROS:
@@ -312,12 +315,7 @@ uint32_t layer_state_set_rgb(uint32_t state) {
default:
rgblight_sethsv_noeeprom_cyan(); break;
}
- if (has_ran) {
- biton32(state) == _MODS ? rgblight_mode(RGBLIGHT_MODE_BREATHING) : rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
- } else {
- biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
- has_ran = true;
- }
+ biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
break;
}
// layer_state_set_indicator(); // Runs every scan, so need to call this here .... since I can't get it working "right" anyhow
@@ -326,3 +324,39 @@ uint32_t layer_state_set_rgb(uint32_t state) {
return state;
}
+
+uint32_t default_layer_state_set_rgb(uint32_t state) {
+#ifdef RGBLIGHT_ENABLE
+ if (userspace_config.rgb_layer_change) {
+ rgblight_config_t temp_rgblight_config = rgblight_config;
+ switch (biton32(state)) {
+ case _COLEMAK:
+ temp_rgblight_config.hue = 300;
+ temp_rgblight_config.val = 255;
+ temp_rgblight_config.sat = 255;
+ temp_rgblight_config.mode = 1;
+ break;
+ case _DVORAK:
+ temp_rgblight_config.hue = 150;
+ temp_rgblight_config.val = 255;
+ temp_rgblight_config.sat = 255;
+ temp_rgblight_config.mode = 1;
+ case _WORKMAN:
+ temp_rgblight_config.hue = 43;
+ temp_rgblight_config.val = 218;
+ temp_rgblight_config.sat = 218;
+ temp_rgblight_config.mode = 1;
+ default:
+ temp_rgblight_config.hue = 180;
+ temp_rgblight_config.val = 255;
+ temp_rgblight_config.sat = 255;
+ temp_rgblight_config.mode = 1;
+ }
+ if (temp_rgblight_config.raw != eeconfig_read_rgblight()) {
+ xprintf("rgblight set default layer hsv [EEPROM]: %u,%u,%u,%u\n", temp_rgblight_config.hue, temp_rgblight_config.sat, temp_rgblight_config.val, temp_rgblight_config.mode);
+ eeconfig_update_rgblight(temp_rgblight_config.raw);
+ }
+ }
+#endif // RGBLIGHT_ENABLE
+ return state;
+}
diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h
index 50c75c8c3c..3db068a31d 100644
--- a/users/drashna/rgb_stuff.h
+++ b/users/drashna/rgb_stuff.h
@@ -12,4 +12,4 @@ void scan_rgblight_fadeout(void);
void matrix_init_rgb(void);
void matrix_scan_rgb(void);
uint32_t layer_state_set_rgb(uint32_t state);
-
+uint32_t default_layer_state_set_rgb(uint32_t state);
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 964c96c522..49b1ddae97 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -27,6 +27,11 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
endif
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += rgb_stuff.c
+endif
+
+
ifeq ($(strip $(MACROS_ENABLED)), yes)
OPT_DEFS += -DMACROS_ENABLED
endif
@@ -37,3 +42,15 @@ ifdef CONSOLE_ENABLE
endif
endif
+
+ifeq ($(strip $(UCIS_ENABLE)), yes)
+ SRC += send_unicode.c
+endif
+
+ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
+ SRC += send_unicode.c
+endif
+
+ifeq ($(strip $(UNICODE_ENABLE)), yes)
+ SRC += send_unicode.c
+endif
diff --git a/users/drashna/send_unicode.c b/users/drashna/send_unicode.c
index cacfe1dc85..ff35368da7 100644
--- a/users/drashna/send_unicode.c
+++ b/users/drashna/send_unicode.c
@@ -56,3 +56,57 @@ void send_unicode_hex_string(const char* str) {
// If you need a good converter: https://r12a.github.io/app-conversion/
+uint8_t saved_mods;
+
+void unicode_input_start (void) {
+ // save current mods
+ saved_mods = get_mods(); // Save current mods
+ clear_mods(); // Unregister mods to start from a clean state
+
+ switch(get_unicode_input_mode()) {
+ case UC_OSX:
+ register_code(KC_LALT);
+ break;
+ case UC_OSX_RALT:
+ register_code(KC_RALT);
+ break;
+ case UC_LNX:
+ register_code(KC_LCTL);
+ register_code(KC_LSFT);
+ register_code(KC_U);
+ unregister_code(KC_U);
+ unregister_code(KC_LSFT);
+ unregister_code(KC_LCTL);
+ break;
+ case UC_WIN:
+ register_code(KC_LALT);
+ register_code(KC_PPLS);
+ unregister_code(KC_PPLS);
+ break;
+ case UC_WINC:
+ register_code(KC_RALT);
+ unregister_code(KC_RALT);
+ register_code(KC_U);
+ unregister_code(KC_U);
+ break;
+ }
+ wait_ms(UNICODE_TYPE_DELAY);
+}
+
+void unicode_input_finish (void) {
+ switch(get_unicode_input_mode()) {
+ case UC_OSX:
+ case UC_WIN:
+ unregister_code(KC_LALT);
+ break;
+ case UC_OSX_RALT:
+ unregister_code(KC_RALT);
+ break;
+ case UC_LNX:
+ register_code(KC_SPC);
+ unregister_code(KC_SPC);
+ break;
+ }
+
+ set_mods(saved_mods); // Reregister previously set mods
+}
diff --git a/users/drashna/template.c b/users/drashna/template.c
index e6b50c961b..0e188f3a5e 100644
--- a/users/drashna/template.c
+++ b/users/drashna/template.c
@@ -50,12 +50,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
break;
- case EPRM:
- if (record->event.pressed) {
- eeconfig_init();
- }
- return false;
- break;
case VRSN:
if (record->event.pressed) {
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
@@ -128,4 +122,3 @@ void shutdown_keymap(void) {}
void shutdown_user (void) {
shutdown_keymap();
}
-
diff --git a/users/drashna/template.h b/users/drashna/template.h
index 5b3a93de5f..dd1c487604 100644
--- a/users/drashna/template.h
+++ b/users/drashna/template.h
@@ -9,9 +9,7 @@
#define BASE 0
enum custom_keycodes {
- PLACEHOLDER = SAFE_RANGE, // can always be here
- EPRM,
- VRSN,
+ VRSN = SAFE_RANGE, // can always be here
KC_MAKE,
KC_RESET,
NEWPLACEHOLDER //use "NEWPLACEHOLDER for keymap specific codes