summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-05-15 19:34:34 -0700
committerJack Humbert <jack.humb@gmail.com>2018-05-15 22:34:34 -0400
commit53a6501d71cabbe4c5c41652cf24fdc059609e5d (patch)
tree4662908d245fe7176307f99a994d1f8d8ef12158 /users
parenta572323f94b533582edab4402867dc994cc8c75f (diff)
Yet another update to drashna keymaps and userspace (EEPROM, RGB indicators) (#2959)
* More Iris Tweaks

* Mess with iris arrow keys

* Massive layout overhaul to make everything more OLKB

* Additional tweaks

* Cleanup Userspace

Remove unused layer code, and properly set userspace eeprom structure.

* EEPROM stuff

* Only use indicators if layer indication is enabled

* Iris and Orthodox Tweaks (Status Indicators)

* Additional tweaks to finish tri layer conversion

* Disable ProMicro ligths globally

* Add Pro Micro hacking info

* Successfully get mod indication working on thumb clusters

* Enable printing when console is enabled

* Make Modifier Indicator lights more modular

* Keymap cleanup

* Tapping test changes

* Cleanup and minor tweaks
Diffstat (limited to 'users')
-rw-r--r--users/drashna/config.h7
-rw-r--r--users/drashna/drashna.c132
-rw-r--r--users/drashna/drashna.h24
-rw-r--r--users/drashna/readme.md22
-rw-r--r--users/drashna/rules.mk4
5 files changed, 102 insertions, 87 deletions
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 0a59ad0261..ef1860778e 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -4,7 +4,6 @@
 
 #ifdef AUDIO_ENABLE
 #define AUDIO_CLICKY
-#define AUDIO_CLICKY_ON
 #define STARTUP_SONG SONG(E1M1_DOOM)
 #define GOODBYE_SONG  SONG(SONIC_RING)
 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
@@ -43,6 +42,8 @@
 #define IGNORE_MOD_TAP_INTERRUPT
 #undef PERMISSIVE_HOLD
 #undef PREVENT_STUCK_MODIFIERS
+#define TAPPING_FORCE_HOLD
+//#define RETRO_TAPPING
 
 #define FORCE_NKRO
 
@@ -53,7 +54,7 @@
 #ifdef TAPPING_TERM
 #undef TAPPING_TERM
 #endif // TAPPING_TERM
-#define TAPPING_TERM 176
+#define TAPPING_TERM 200
 
 
 // Disable action_get_macro and fn_actions, since we don't use these
@@ -61,7 +62,7 @@
 #ifndef NO_DEBUG
 #define NO_DEBUG
 #endif // !NO_DEBUG
-#ifndef NO_PRINT
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
 #define NO_PRINT
 #endif // !NO_PRINT
 #define NO_ACTION_MACRO
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 86c16b826d..6ce541bfbc 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -38,10 +38,6 @@ float tone_paste[][2]           = SONG(SCROLL_LOCK_OFF_SOUND);
 
 
 static uint16_t copy_paste_timer;
-#ifdef RGBLIGHT_ENABLE
-bool rgb_layer_change = true;
-#endif
-
 userspace_config_t userspace_config;
 
 //  Helper Functions
@@ -164,31 +160,42 @@ void led_set_keymap(uint8_t usb_led) {}
 // call the keymap's init function
 void matrix_init_user(void) {
   uint8_t default_layer = eeconfig_read_default_layer();
+  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
 
-#ifdef RGBLIGHT_ENABLE
-  rgblight_enable();
-#endif // RGBLIGHT_ENABLE
+#ifdef BOOTLOADER_CATERINA
+  DDRD &= ~(1<<5);
+  PORTD &= ~(1<<5);
 
-  if (default_layer & (1UL << _COLEMAK)) {
-#ifdef RGBLIGHT_ENABLE
-    rgblight_sethsv_magenta();
-#endif // RGBLIGHT_ENABLE
-  } else if (default_layer & (1UL << _DVORAK)) {
-#ifdef RGBLIGHT_ENABLE
-    rgblight_sethsv_green();
-#endif // RGBLIGHT_ENABLE
-  } else if (default_layer & (1UL << _WORKMAN)) {
-#ifdef RGBLIGHT_ENABLE
-    rgblight_sethsv_goldenrod();
-#endif // RGBLIGHT_ENABLE
-  } else {
+  DDRB &= ~(1<<0);
+  PORTB &= ~(1<<0);
+#endif
+
+  if (userspace_config.rgb_layer_change) {
 #ifdef RGBLIGHT_ENABLE
-    rgblight_sethsv_teal();
+    rgblight_enable();
 #endif // RGBLIGHT_ENABLE
+    if (default_layer & (1UL << _COLEMAK)) {
+  #ifdef RGBLIGHT_ENABLE
+      rgblight_sethsv_magenta();
+  #endif // RGBLIGHT_ENABLE
+    } else if (default_layer & (1UL << _DVORAK)) {
+  #ifdef RGBLIGHT_ENABLE
+      rgblight_sethsv_green();
+  #endif // RGBLIGHT_ENABLE
+    } else if (default_layer & (1UL << _WORKMAN)) {
+  #ifdef RGBLIGHT_ENABLE
+      rgblight_sethsv_goldenrod();
+  #endif // RGBLIGHT_ENABLE
+    } else {
+  #ifdef RGBLIGHT_ENABLE
+      rgblight_sethsv_teal();
+  #endif // RGBLIGHT_ENABLE
+    }
   }
 
-  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
+#ifdef AUDIO_CLICKY
   clicky_enable = userspace_config.clicky_enable;
+#endif
 
 #if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) )
 	set_unicode_input_mode(UC_WINC);
@@ -364,8 +371,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   case KC_RGB_T:  // This allows me to use underglow as layer indication, or as normal
 #ifdef RGBLIGHT_ENABLE
     if (record->event.pressed) {
-      rgb_layer_change = !rgb_layer_change;
-      if (rgb_layer_change) {
+      userspace_config.rgb_layer_change ^= 1;
+      eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
+      if (userspace_config.rgb_layer_change) {
         layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
       }
     }
@@ -374,7 +382,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 #ifdef RGBLIGHT_ENABLE
   case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
     if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
-      rgb_layer_change = false;
+      userspace_config.rgb_layer_change = false;
+      eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
     }
     return true; break;
 #endif // RGBLIGHT_ENABLE
@@ -403,8 +412,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     return false;
     break;
   case CLICKY_TOGGLE:
+#ifdef AUDIO_CLICKY
     userspace_config.clicky_enable = clicky_enable;
     eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
+#endif
     break;
 #ifdef UNICODE_ENABLE
   case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
@@ -445,123 +456,104 @@ uint32_t layer_state_set_user(uint32_t state) {
   state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 
   switch (biton32(state)) {
-  case _NAV:
-#ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
-      rgblight_sethsv_blue();
-      rgblight_mode(1);
-    }
-#endif // RGBLIGHT_ENABLE
-    break;
-  case _SYMB:
-#ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
-      rgblight_sethsv_blue();
-      rgblight_mode(2);
-    }
-#endif // RGBLIGHT_ENABLE
-    break;
-  case _MOUS:
-#ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
-      rgblight_sethsv_yellow();
-      rgblight_mode(1);
-    }
-#endif // RGBLIGHT_ENABLE
-    break;
   case _MACROS:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_orange();
       userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
     }
 #endif // RGBLIGHT_ENABLE
+
     break;
   case _MEDIA:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_chartreuse();
       rgblight_mode(22);
     }
 #endif // RGBLIGHT_ENABLE
+
     break;
   case _GAMEPAD:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_orange();
       rgblight_mode(17);
     }
 #endif // RGBLIGHT_ENABLE
+
     break;
   case _DIABLO:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_red();
       rgblight_mode(5);
     }
 #endif // RGBLIGHT_ENABLE
+
     break;
   case _RAISE:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_yellow();
       rgblight_mode(5);
     }
 #endif // RGBLIGHT_ENABLE
+
     break;
   case _LOWER:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_orange();
       rgblight_mode(5);
     }
 #endif // RGBLIGHT_ENABLE
+
     break;
   case _ADJUST:
 #ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
+    if (userspace_config.rgb_layer_change) {
       rgblight_sethsv_red();
       rgblight_mode(23);
     }
 #endif // RGBLIGHT_ENABLE
-    break;
-  case _COVECUBE:
-#ifdef RGBLIGHT_ENABLE
-    if (rgb_layer_change) {
-      rgblight_sethsv_green();
-      rgblight_mode(2);
-    }
-#endif // RGBLIGHT_ENABLE
+
     break;
   default: //  for any other layers, or the default layer
     if (default_layer & (1UL << _COLEMAK)) {
 #ifdef RGBLIGHT_ENABLE
-      if (rgb_layer_change) { rgblight_sethsv_magenta(); }
+      if (userspace_config.rgb_layer_change) { rgblight_sethsv_magenta(); }
 #endif // RGBLIGHT_ENABLE
+
     }
     else if (default_layer & (1UL << _DVORAK)) {
 #ifdef RGBLIGHT_ENABLE
-      if (rgb_layer_change) { rgblight_sethsv_green(); }
+      if (userspace_config.rgb_layer_change) { rgblight_sethsv_green(); }
 #endif // RGBLIGHT_ENABLE
+
     }
     else if (default_layer & (1UL << _WORKMAN)) {
 #ifdef RGBLIGHT_ENABLE
-      if (rgb_layer_change) { rgblight_sethsv_goldenrod(); }
+      if (userspace_config.rgb_layer_change) { rgblight_sethsv_goldenrod(); }
 #endif // RGBLIGHT_ENABLE
+
     }
     else {
 #ifdef RGBLIGHT_ENABLE
-      if (rgb_layer_change) { rgblight_sethsv_teal(); }
+      if (userspace_config.rgb_layer_change) { rgblight_sethsv_teal(); }
 #endif // RGBLIGHT_ENABLE
+
     }
     if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe
 #ifdef RGBLIGHT_ENABLE
-      if (rgb_layer_change) { rgblight_mode(2); }
+      if (userspace_config.rgb_layer_change) { rgblight_mode(2); }
 #endif // RGBLIGHT_ENABLE
+
     } else {                       // otherwise, stay solid
 #ifdef RGBLIGHT_ENABLE
-      if (rgb_layer_change) { rgblight_mode(1); }
+      if (userspace_config.rgb_layer_change) { rgblight_mode(1); }
 #endif // RGBLIGHT_ENABLE
+
     }
     break;
   }
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 5ef25333b1..87a72f5280 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -27,12 +27,8 @@ enum userspace_layers {
   _DVORAK,
   _WORKMAN,
   _MODS,
-  _NAV,
-  _COVECUBE,
-  _SYMB,
   _GAMEPAD,
   _DIABLO,
-  _MOUS,
   _MACROS,
   _MEDIA,
   _LOWER,
@@ -49,7 +45,6 @@ enum userspace_layers {
 // RGB color codes are no longer located here anymore.  Instead, you will want to
 // head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h
 
-extern bool rgb_layer_change;
 extern bool clicky_enable;
 
 #ifdef RGBLIGHT_ENABLE
@@ -59,10 +54,11 @@ void rgblight_sethsv_default_helper(uint8_t index);
 #define EECONFIG_USERSPACE (uint8_t *)20
 
 typedef union {
-  uint32_t raw;
+  uint8_t raw;
   struct {
-    bool     clicky_enable  :1;
-    bool     is_overwatch   :1;
+    bool     clicky_enable    :1;
+    bool     rgb_layer_change :1;
+    bool     is_overwatch     :1;
   };
 } userspace_config_t;
 
@@ -166,10 +162,10 @@ enum {
 #define LAYOUT KEYMAP
 #endif
 
-#define LAYOUT_ergodox_wrapper(...)   LAYOUT_ergodox(__VA_ARGS__)
+#define LAYOUT_ergodox_wrapper(...)          LAYOUT_ergodox(__VA_ARGS__)
 #define LAYOUT_ergodox_pretty_wrapper(...)   LAYOUT_ergodox_pretty(__VA_ARGS__)
-#define KEYMAP_wrapper(...)           LAYOUT(__VA_ARGS__)
-#define LAYOUT_wrapper(...)           LAYOUT(__VA_ARGS__)
+#define KEYMAP_wrapper(...)                  LAYOUT(__VA_ARGS__)
+#define LAYOUT_wrapper(...)                  LAYOUT(__VA_ARGS__)
 
 
 // Blocks for each of the four major keyboard layouts
@@ -236,6 +232,8 @@ enum {
 
 #define ________________NUMBER_LEFT________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5
 #define ________________NUMBER_RIGHT_______________       KC_6,    KC_7,    KC_8,    KC_9,    KC_0
+#define _________________FUNC_LEFT_________________       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
+#define _________________FUNC_RIGHT________________       KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
 
 // Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN),
 // this allows us to quickly modify the bottom row for all of the layouts
@@ -245,9 +243,9 @@ enum {
 #define ___________ERGODOX_BOTTOM_RIGHT____________       KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
 
 
-#define __________________ERGODOX_THUMB_CLUSTER_____________________       ALT_T(KC_APP), KC_LGUI,                 KC_RGUI, CTL_T(KC_ESCAPE), \
+#define __________________ERGODOX_THUMB_CLUSTER_____________________           ALT_T(KC_APP), KC_LGUI,                 KC_RGUI, CTL_T(KC_ESCAPE), \
                                                                                               KC_HOME,                 KC_PGUP, \
-                                                                            KC_SPACE,KC_BSPC, KC_END,                  KC_PGDN, KC_DEL,  KC_ENTER
+                                                                LT(_LOWER, KC_SPACE),KC_BSPC, KC_END,                  KC_PGDN, KC_DEL,  LT(_RAISE, KC_ENTER)
 
 
 #endif // !USERSPACE
diff --git a/users/drashna/readme.md b/users/drashna/readme.md
index 79758e7e56..ddf24b24f7 100644
--- a/users/drashna/readme.md
+++ b/users/drashna/readme.md
@@ -162,7 +162,7 @@ This tells us where in the EEPROM that the data structure is located, and this s
 
 ```c
 typedef union {
-  uint32_t raw;
+  uint8_t raw;
   struct {
     bool     clicky_enable  :1;
     bool     is_overwatch   :1;
@@ -174,3 +174,23 @@ Then, in your C file, you want to add: `userspace_config_t userspace_config;`, a
 From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value.  
 
 And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM. 
+
+
+Pro Micro Hacking
+-----------------
+
+Well, you can get the QMK DFU bootloader working on the ProMicro. But you need to change fuses.  
+
+What worked to get into the firmware properly was: 
+
+```
+Low: 0x5E High: 0x99 Extended: 0xF3 Lock: 0xFF
+```
+
+But some of the columns and rows didn't work, like the pin mapping was wrong. Even when setting the bootloader settings.
+ 
+ This is here for future reference.  And the default fuse settings I believe were:
+
+```
+Low: 0xFF High: 0xD8 Extended: 0xC3 Lock: 0x3F
+```
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 123c0cc70a..e2c5a2995b 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -5,3 +5,7 @@ EXTRAFLAGS        += -flto
 ifeq ($(strip $(NO_SECRETS)), yes)
     OPT_DEFS += -DNO_SECRETS
 endif
+
+ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
+    OPT_DEFS += -DINDICATOR_LIGHTS
+endif