]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Update to drashna userspace and keymaps (#4459)
authorDrashna Jaelre <drashna@live.com>
Tue, 27 Nov 2018 00:45:24 +0000 (16:45 -0800)
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>
Tue, 27 Nov 2018 00:45:24 +0000 (16:45 -0800)
* 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

25 files changed:
keyboards/crkbd/keymaps/drashna/config.h
keyboards/crkbd/keymaps/drashna/keymap.c
keyboards/crkbd/keymaps/drashna/rules.mk
keyboards/iris/keymaps/drashna/keymap.c
keyboards/iris/keymaps/drashna/rules.mk
keyboards/orthodox/keymaps/drashna/keymap.c
keyboards/quefrency/keymaps/bjohnson/config.h [new file with mode: 0644]
keyboards/quefrency/keymaps/bjohnson/keymap.c [new file with mode: 0644]
keyboards/quefrency/keymaps/bjohnson/rules.mk [new file with mode: 0644]
keyboards/viterbi/keymaps/drashna/keymap.c
layouts/community/ergodox/drashna/keymap.c
layouts/community/ergodox/drashna_glow/README.md [new file with mode: 0644]
layouts/community/ergodox/drashna_glow/config.h [new file with mode: 0644]
layouts/community/ergodox/drashna_glow/keymap.c [new file with mode: 0644]
layouts/community/ergodox/drashna_glow/rules.mk [new file with mode: 0644]
layouts/community/ortho_4x12/drashna/keymap.c
users/drashna/config.h
users/drashna/drashna.c
users/drashna/drashna.h
users/drashna/rgb_stuff.c
users/drashna/rgb_stuff.h
users/drashna/rules.mk
users/drashna/send_unicode.c
users/drashna/template.c
users/drashna/template.h

index adfd79044d91c116205f4e2b4408fee26057eb0a..cbc3feeb6165f9d09842f15334c23f59d1c00f85 100644 (file)
@@ -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
index 99dcdb4e1736efe8ac68301bac4614341be61b03..282ee2572534e95a910b8764de719dfe02cd2304 100644 (file)
@@ -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;
index ccf8e2b7c8d1d67594a75bd99f5ea1f702e84ac7..4b70f66f7bb226f485c1f15a533a2902de7929cb 100644 (file)
@@ -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 \
index 21e3151c0fe112ec4f2dae8f89804f57fa655bfb..ba6f18edde5a3269895f829be2e0e1c10c19ee90 100644 (file)
@@ -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,
                                         _______, _______, _______,        _______, _______, _______
index 89e568f39912bd4ee8e894d22f9ee7c050e31ef4..ccc33c06f3d0e51ac4414c7efd11800fdb364e51 100644 (file)
@@ -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
index 545ad25dcd300f4aa391d2315cabc023f4887974..346ca4f123435aec08c07988b76732b082148814 100644 (file)
@@ -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 (file)
index 0000000..37c6d66
--- /dev/null
@@ -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 (file)
index 0000000..434a0a3
--- /dev/null
@@ -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 (file)
index 0000000..70fa711
--- /dev/null
@@ -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
index acda8a0d258db266fc35f44ada8bf9b9c9e20be6..a343205197ee998b6d19c529a1a7ba539f85bd36 100644 (file)
@@ -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);
 }
-
-
index 360a2d9c6d0506d3ce9bfb6c614345824becde49..df9be62b7779d8c9b3a84a2a61e2048a8703553e 100644 (file)
@@ -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 (file)
index 0000000..7d625a2
--- /dev/null
@@ -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 (file)
index 0000000..197acbc
--- /dev/null
@@ -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 (file)
index 0000000..f2fb665
--- /dev/null
@@ -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 (file)
index 0000000..3b31722
--- /dev/null
@@ -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
index 2a9e32cc886fed122401187b543ac5e6513187fc..205d12d8c3e03bb95c73b6d3cbbbba3dc4c6f72f 100644 (file)
@@ -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,
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 )
index 7e6a7d1c81526f0395a8cccc3ccf440a19e823f1..06cae86ab9eabcc23a0f1f951d890a4539f745fd 100644 (file)
 #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
index 4111d29314deaefe123bf9f3b5acfc96026a1ab1..8f10a530e2b869b1ca2460c52edc138f8823798d 100644 (file)
@@ -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;
 }
 
 
index 573cb26fd0cf0cb9d993a878c694434831456cc2..06e726714c9b3706755291a3fc7c744f342022ba 100644 (file)
@@ -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
index b6de4d39e53af4e804fbe2a444e4d3bce941b0cd..d238c20651dc7268dd4aa4811640da531939b2b1 100644 (file)
@@ -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;
+}
index 50c75c8c3ce97c42e8a3940f00272f95bf56e2a4..3db068a31dbfcda51ada80cdecf4818d057226e3 100644 (file)
@@ -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);
index 964c96c52277a72b36531276cb80ee90cf20e7e3..49b1ddae979e0fcdbd629179ebd4a73dd95646fa 100644 (file)
@@ -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
index cacfe1dc852407a8046e1d71cd93c0d7f3f4961a..ff35368da7f5248aac31fb0c8e83b3a5f4690386 100644 (file)
@@ -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
+}
index e6b50c961b625cfa51c3b6d63e2f5e09c41cea9c..0e188f3a5ebbe16e70d25cd1fac100c39604558f 100644 (file)
@@ -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();
 }
-
index 5b3a93de5fb74c132abf152e8a405a09ea7cf077..dd1c487604ae9637bfe260874fc7377e74ca9785 100644 (file)
@@ -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