]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Rework drashna userspace to be more modular (#4544)
authorDrashna Jaelre <drashna@live.com>
Tue, 4 Dec 2018 21:27:41 +0000 (13:27 -0800)
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>
Tue, 4 Dec 2018 21:27:41 +0000 (13:27 -0800)
* Break up files to make more readable

* Add comments to ortho 4x12 layout rules.mk

* Small tweaks

* Update GitLab CI scripts

* Make ortho boards smaller

13 files changed:
layouts/community/ortho_4x12/drashna/config.h
layouts/community/ortho_4x12/drashna/rules.mk
users/drashna/.gitlab-ci.yml
users/drashna/config.h
users/drashna/drashna.c
users/drashna/drashna.h
users/drashna/process_records.c [new file with mode: 0644]
users/drashna/process_records.h [new file with mode: 0644]
users/drashna/rgb_stuff.h
users/drashna/rules.mk
users/drashna/tap_dances.c
users/drashna/tap_dances.h
users/drashna/wrappers.h [new file with mode: 0644]

index f279651b63fba7605d274122b9e31f9c7716bf34..8658802d8394a26f787bc33fb0f37e49093ecaa3 100644 (file)
 #define EE_HANDS
 #endif
 
-#if defined(KEYBOARD_planck_rev5)
+#if !defined(KEYBOARD_planck_light)
 #ifdef RGBLIGHT_ENABLE
 #define NO_MUSIC_MODE
 #endif // RGBLIGHT_ENABLE
-#endif // KEYBOARD_planck_rev5
+#endif // KEYBOARD_planck_light
 
 
 /*
index 5e46cf112ea27ee2ea5ffac4510591fa806e76ac..a5429b8ffbab2733b4af13fb635012007383ec0a 100644 (file)
@@ -5,12 +5,12 @@ CONSOLE_ENABLE    = no         # Console for debug(+400)
 COMMAND_ENABLE    = no        # Commands for debug and configuration
 TAP_DANCE_ENABLE  = no
 AUDIO_ENABLE      = yes
-ifeq (,$(findstring planck/rev6,$(KEYBOARD)))
+ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
   RGBLIGHT_ENABLE   = yes
   INDICATOR_LIGHTS  = yes
   RGBLIGHT_TWINKLE  = yes
 endif
-ifneq (,$(findstring planck/light,$(KEYBOARD)))
+ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
   RGB_MATRIX_ENABLE   = yes
   RGBLIGHT_ENABLE     = no
 endif
@@ -23,4 +23,3 @@ endif
 
 
 MACROS_ENABLED    = no
-
index 3c95ad85073029c6855107ac9d3373310476e29a..bd693babc3ad95397cfd7adaba66f508430087d7 100644 (file)
@@ -13,7 +13,7 @@ qmk_firmware:
     - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util diffutils gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip
     - avr-gcc --version
   script:
-    - make iris/rev2:drashna iris/rev2:drashna_old ergodox_ez:drashna viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna
+    - make iris/rev2:drashna:production iris/rev2:drashna_old:production ergodox_ez:drashna ergodox_ez:drashna_glow viterbi/rev1:drashna:production orthodox/rev1:drashna:production orthodox/rev3:drashna:production crkbd:drashna:production planck/light:drashna:production
   artifacts:
     name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
     paths:
index 06cae86ab9eabcc23a0f1f951d890a4539f745fd..a338512300e1bf1ac3d6919f1a69fda91afd5445 100644 (file)
@@ -3,7 +3,7 @@
 
 #ifdef AUDIO_ENABLE
 #define AUDIO_CLICKY
-#define STARTUP_SONG SONG(E1M1_DOOM)
+#define STARTUP_SONG SONG(RICK_ROLL)
 #define GOODBYE_SONG  SONG(SONIC_RING)
 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
                                   SONG(COLEMAK_SOUND), \
@@ -44,7 +44,7 @@
 // and when this option isn't enabled, z rapidly followed by x
 // actually sends Ctrl-x. That's bad.)
 #define IGNORE_MOD_TAP_INTERRUPT
-#define PERMISSIVE_HOLD
+#undef PERMISSIVE_HOLD
 //#define TAPPING_FORCE_HOLD
 //#define RETRO_TAPPING
 
index 8f10a530e2b869b1ca2460c52edc138f8823798d..222824837981d4fa6632060d6d332bc2c2f72e3f 100644 (file)
@@ -16,8 +16,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "drashna.h"
-#include "tap_dances.h"
-#include "rgb_stuff.h"
 
 userspace_config_t userspace_config;
 #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
@@ -27,9 +25,6 @@ userspace_config_t userspace_config;
   #define DRASHNA_UNICODE_MODE 2
 #endif
 
-uint16_t copy_paste_timer;
-//  Helper Functions
-
 
 // This block is for all of the gaming macros, as they were all doing
 // the same thing, but with differring text sent.
@@ -109,55 +104,9 @@ void bootmagic_lite(void) {
 __attribute__ ((weak))
 void matrix_init_keymap(void) {}
 
-__attribute__ ((weak))
-void startup_keymap(void) {}
-
-__attribute__ ((weak))
-void shutdown_keymap(void) {}
-
-__attribute__ ((weak))
-void suspend_power_down_keymap(void) {}
-
-__attribute__ ((weak))
-void suspend_wakeup_init_keymap(void) {}
-
-__attribute__ ((weak))
-void matrix_scan_keymap(void) {}
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-__attribute__ ((weak))
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-
-__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
-  return state;
-}
-
-__attribute__ ((weak))
-uint32_t default_layer_state_set_keymap (uint32_t state) {
-  return state;
-}
-
-__attribute__ ((weak))
-void led_set_keymap(uint8_t usb_led) {}
-
-__attribute__ ((weak))
-void eeconfig_init_keymap(void) {}
-
 // Call user matrix init, set default RGB colors and then
 // call the keymap's init function
 void matrix_init_user(void) {
-  #if !defined(BOOTMAGIC_LITE) && !defined(BOOTMAGIC_ENABLE)
-    bootmagic_lite();
-  #endif
-
   userspace_config.raw = eeconfig_read_user();
 
   #ifdef BOOTLOADER_CATERINA
@@ -178,40 +127,42 @@ void matrix_init_user(void) {
   #endif //RGBLIGHT_ENABLE
 }
 
-void startup_user (void) {
-  // #ifdef RGBLIGHT_ENABLE
-  //   matrix_init_rgb();
-  // #endif //RGBLIGHT_ENABLE
-  startup_keymap();
-}
+
+__attribute__ ((weak))
+void shutdown_keymap(void) {}
 
 void shutdown_user (void) {
-#ifdef RGBLIGHT_ENABLE
-  rgblight_enable_noeeprom();
-  rgblight_mode_noeeprom(1);
-  rgblight_setrgb_red();
-#endif // RGBLIGHT_ENABLE
-#ifdef RGB_MATRIX_ENABLE
-  rgb_led led;
-  for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
-    led = g_rgb_leds[i];
-    if (led.matrix_co.raw < 0xFF) {
-      rgb_matrix_set_color( i, 0xFF, 0x00, 0x00 );
-    }
-  }
-#endif //RGB_MATRIX_ENABLE
+  #ifdef RGBLIGHT_ENABLE
+    rgblight_enable_noeeprom();
+    rgblight_mode_noeeprom(1);
+    rgblight_setrgb_red();
+  #endif // RGBLIGHT_ENABLE
+  #ifdef RGB_MATRIX_ENABLE
+    uint16_t timer_start = timer_read();
+    rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
+    while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
+  #endif //RGB_MATRIX_ENABLE
   shutdown_keymap();
 }
 
+__attribute__ ((weak))
+void suspend_power_down_keymap(void) {}
+
 void suspend_power_down_user(void) {
     suspend_power_down_keymap();
 }
 
+__attribute__ ((weak))
+void suspend_wakeup_init_keymap(void) {}
+
 void suspend_wakeup_init_user(void) {
   suspend_wakeup_init_keymap();
 }
 
 
+__attribute__ ((weak))
+void matrix_scan_keymap(void) {}
+
 // No global matrix scan code, so just run keymap's matrix
 // scan function
 void matrix_scan_user(void) {
@@ -233,172 +184,11 @@ void matrix_scan_user(void) {
 }
 
 
-
-
-// Defines actions tor my global custom keycodes. Defined in drashna.h file
-// Then runs the _keymap's record handier if not processed here
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
-  // If console is enabled, it will print the matrix position and status of each key pressed
-#ifdef KEYLOGGER_ENABLE
-  #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2)
-    xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed);
-  #else
-    xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed);
-  #endif
-#endif //KEYLOGGER_ENABLE
-
-  switch (keycode) {
-  case KC_QWERTY:
-    if (record->event.pressed) {
-      set_single_persistent_default_layer(_QWERTY);
-    }
-    break;
-  case KC_COLEMAK:
-    if (record->event.pressed) {
-      set_single_persistent_default_layer(_COLEMAK);
-    }
-    break;
-  case KC_DVORAK:
-    if (record->event.pressed) {
-      set_single_persistent_default_layer(_DVORAK);
-    }
-    break;
-  case KC_WORKMAN:
-    if (record->event.pressed) {
-      set_single_persistent_default_layer(_WORKMAN);
-    }
-    break;
-
-
-  case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
-    if (!record->event.pressed) {
-      uint8_t temp_mod = get_mods();
-      uint8_t temp_osm = get_oneshot_mods();
-      clear_mods(); clear_oneshot_mods();
-      send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), 10);
-      if (temp_mod & MODS_SHIFT_MASK || temp_osm & MODS_SHIFT_MASK) {
-        #if defined(__ARM__)
-          send_string_with_delay_P(PSTR(":dfu-util"), 10);
-        #elif defined(BOOTLOADER_DFU)
-          send_string_with_delay_P(PSTR(":dfu"), 10);
-        #elif defined(BOOTLOADER_HALFKAY)
-          send_string_with_delay_P(PSTR(":teensy"), 10);
-        #elif defined(BOOTLOADER_CATERINA)
-          send_string_with_delay_P(PSTR(":avrdude"), 10);
-        #endif // bootloader options
-      }
-      #if defined(KEYBOARD_viterbi)
-        send_string_with_delay_P(PSTR(":dfu"), 10);
-      #endif
-      if (temp_mod & MODS_CTRL_MASK || temp_osm & MODS_CTRL_MASK) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), 10); }
-      send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10);
-      set_mods(temp_mod);
-    }
-    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);
-    }
-    break;
-
-// These are a serious of gaming macros.
-// Only enables for the viterbi, basically,
-// to save on firmware space, since it's limited.
-#ifdef MACROS_ENABLED
-  case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
-    if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
-#ifdef RGBLIGHT_ENABLE
-    userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
-#endif //RGBLIGHT_ENABLE
-    break;
-  case KC_SALT:
-    return send_game_macro("Salt, salt, salt...", record, false);
-  case KC_MORESALT:
-    return  send_game_macro("Please sir, can I have some more salt?!", record, false);
-  case KC_SALTHARD:
-    return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
-  case KC_GOODGAME:
-    return send_game_macro("Good game, everyone!", record, false);
-  case KC_GLHF:
-    return send_game_macro("Good luck, have fun!!!", record, false);
-  case KC_SYMM:
-    return send_game_macro("Left click to win!", record, false);
-  case KC_JUSTGAME:
-    return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
-  case KC_TORB:
-    return send_game_macro("That was positively riveting!", record, false);
-  case KC_AIM:
-    send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
-    return send_game_macro("Wait! That aim is TOO good!  You're clearly using an aim hack! CHEATER!", record, false);
-  case KC_C9:
-    return send_game_macro("OMG!!!  C9!!!", record, false);
-  case KC_GGEZ:
-    return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
-#endif // MACROS_ENABLED
-
-
-  case KC_DIABLO_CLEAR:  // reset all Diablo timers, disabling them
-#ifdef TAP_DANCE_ENABLE
-    if (record->event.pressed) {
-      uint8_t dtime;
-      for (dtime = 0; dtime < 4; dtime++) {
-        diablo_key_time[dtime] = diablo_times[0];
-      }
-    }
-#endif // TAP_DANCE_ENABLE
-    break;
-
-
-  case KC_CCCV:                                    // One key copy/paste
-    if(record->event.pressed){
-      copy_paste_timer = timer_read();
-    } else {
-      if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {   // Hold, copy
-        register_code(KC_LCTL);
-        tap_code(KC_C);
-        unregister_code(KC_LCTL);
-      } else {                                // Tap, paste
-        register_code(KC_LCTL);
-        tap_code(KC_V);
-        unregister_code(KC_LCTL);
-      }
-    }
-    break;
-#ifdef UNICODE_ENABLE
-  case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
-    if (record->event.pressed) {
-      send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
-    }
-    break;
-  case UC_TABL: // ┬─┬ノ( º _ ºノ)
-    if (record->event.pressed) {
-      send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
-    }
-    break;
-  case UC_SHRG: // ¯\_(ツ)_/¯
-    if (record->event.pressed) {
-      send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
-    }
-    break;
-  case UC_DISA: // ಠ_ಠ
-    if (record->event.pressed) {
-      send_unicode_hex_string("0CA0 005F 0CA0");
-    }
-    break;
-#endif
-  }
-  return process_record_keymap(keycode, record) &&
-#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
-    process_record_user_rgb(keycode, record) &&
-#endif // RGBLIGHT_ENABLE
-    process_record_secrets(keycode, record);
+__attribute__ ((weak))
+uint32_t layer_state_set_keymap (uint32_t state) {
+  return state;
 }
 
-
-
-// Runs state check and changes underglow color and animation
 // on layer change, no matter where the change was initiated
 // Then runs keymap's layer change check
 uint32_t layer_state_set_user(uint32_t state) {
@@ -410,6 +200,12 @@ uint32_t layer_state_set_user(uint32_t state) {
 }
 
 
+__attribute__ ((weak))
+uint32_t default_layer_state_set_keymap (uint32_t state) {
+  return state;
+}
+
+// Runs state check and changes underglow color and animation
 uint32_t default_layer_state_set_user(uint32_t state) {
   state = default_layer_state_set_keymap(state);
 #ifdef RGBLIGHT_ENABLE
@@ -418,6 +214,8 @@ uint32_t default_layer_state_set_user(uint32_t state) {
   return state;
 }
 
+__attribute__ ((weak))
+void led_set_keymap(uint8_t usb_led) {}
 
 // Any custom LED code goes here.
 // So far, I only have keyboard specific code,
@@ -426,6 +224,9 @@ void led_set_user(uint8_t usb_led) {
   led_set_keymap(usb_led);
 }
 
+__attribute__ ((weak))
+void eeconfig_init_keymap(void) {}
+
 void eeconfig_init_user(void) {
   userspace_config.raw = 0;
   userspace_config.rgb_layer_change = true;
index 06e726714c9b3706755291a3fc7c744f342022ba..0a3d0f632709e7842989785bc60de225564cc2dd 100644 (file)
@@ -19,9 +19,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "quantum.h"
 #include "version.h"
 #include "eeprom.h"
-
-#ifdef RGB_MATRIX_ENABLE
-#include "rgb_matrix.h"
+#include "wrappers.h"
+#include "process_records.h"
+#ifdef TAP_DANCE_ENABLE
+  #include "tap_dances.h"
+#endif // TAP_DANCE_ENABLE
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+  #include "rgb_stuff.h"
 #endif
 
 
@@ -51,17 +55,19 @@ define modifiers here, since MOD_* doesn't seem to work for these
 #define MODS_GUI_MASK  (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))
 
 
-/*
-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
-*/
-
-#ifdef RGBLIGHT_ENABLE
-void rgblight_sethsv_default_helper(uint8_t index);
-#endif // RGBLIGHT_ENABLE
 
 bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed);
 bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
+bool send_game_macro(const char *str, keyrecord_t *record, bool override);
+void matrix_init_keymap(void);
+void shutdown_keymap(void);
+void suspend_power_down_keymap(void);
+void suspend_wakeup_init_keymap(void);
+void matrix_scan_keymap(void);
+uint32_t layer_state_set_keymap (uint32_t state);
+uint32_t default_layer_state_set_keymap (uint32_t state);
+void led_set_keymap(uint8_t usb_led);
+void eeconfig_init_keymap(void);
 
 typedef union {
   uint32_t raw;
@@ -75,110 +81,6 @@ typedef union {
 
 extern userspace_config_t userspace_config;
 
-#if defined(KEYMAP_SAFE_RANGE)
-  #define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
-#else
-  #define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
-#endif
-
-enum userspace_custom_keycodes {
-  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
-  KC_WORKMAN,        // Sets default layer to WORKMAN
-  KC_DIABLO_CLEAR,   // Clears all Diablo Timers
-  KC_OVERWATCH,      // Toggles game macro input mode (so in OW, it defaults to game chat)
-  KC_SALT,           // See drashna.c for details
-  KC_MORESALT,
-  KC_SALTHARD,
-  KC_GOODGAME,
-  KC_SYMM,
-  KC_JUSTGAME,
-  KC_GLHF,
-  KC_TORB,
-  KC_AIM,
-  KC_C9,
-  KC_GGEZ,
-  KC_MAKE,           // Run keyboard's customized make command
-  KC_RGB_T,          // Toggles RGB Layer Indication mode
-  KC_SECRET_1,       // test1
-  KC_SECRET_2,       // test2
-  KC_SECRET_3,       // test3
-  KC_SECRET_4,       // test4
-  KC_SECRET_5,       // test5
-  KC_CCCV,           // Hold to copy, tap to paste
-  KC_NUKE,           // NUCLEAR LAUNCH DETECTED!!!
-  UC_FLIP,           // (ಠ痊ಠ)┻━┻
-  UC_TABL,           // ┬─┬ノ( º _ ºノ)
-  UC_SHRG,           // ¯\_(ツ)_/¯
-  UC_DISA,           // ಠ_ಠ
-  NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
-};
-
-
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-#define ADJUST MO(_ADJUST)
-#define TG_MODS TG(_MODS)
-#define TG_GAME TG(_GAMEPAD)
-
-#define KC_SEC1 KC_SECRET_1
-#define KC_SEC2 KC_SECRET_2
-#define KC_SEC3 KC_SECRET_3
-#define KC_SEC4 KC_SECRET_4
-#define KC_SEC5 KC_SECRET_5
-
-#define QWERTY KC_QWERTY
-#define DVORAK KC_DVORAK
-#define COLEMAK KC_COLEMAK
-#define WORKMAN KC_WORKMAN
-
-#define KC_RESET RESET
-#define KC_RST KC_RESET
-
-#ifdef SWAP_HANDS_ENABLE
-#define KC_C1R3 SH_TT
-#else // SWAP_HANDS_ENABLE
-#define KC_C1R3 KC_BSPC
-#endif // SWAP_HANDS_ENABLE
-
-#define BK_LWER LT(_LOWER, KC_BSPC)
-#define SP_LWER LT(_LOWER, KC_SPC)
-#define DL_RAIS LT(_RAISE, KC_DEL)
-#define ET_RAIS LT(_RAISE, KC_ENTER)
-
-/* OSM keycodes, to keep things clean and easy to change */
-#define KC_MLSF OSM(MOD_LSFT)
-#define KC_MRSF OSM(MOD_RSFT)
-
-#define OS_LGUI OSM(MOD_LGUI)
-#define OS_RGUI OSM(MOD_RGUI)
-#define OS_LSFT OSM(MOD_LSFT)
-#define OS_RSFT OSM(MOD_RSFT)
-#define OS_LCTL OSM(MOD_LCTL)
-#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
-
-#define UC_IRNY UC(0x2E2E)
-#define UC_CLUE UC(0x203D)
-
-#ifdef TAP_DANCE_ENABLE
-enum {
-  TD_D3_1 = 0,
-  TD_D3_2,
-  TD_D3_3,
-  TD_D3_4
-};
-#endif // TAP_DANCE_ENABLE
-
 
 /*
 Custom Keycodes for Diablo 3 layer
@@ -196,172 +98,3 @@ We use custom codes here, so we can substitute the right stuff
 #define KC_D3_3 KC_3
 #define KC_D3_4 KC_4
 #endif // TAP_DANCE_ENABLE
-
-/*
-Since our quirky block definitions are basically a list of comma separated
-arguments, we need a wrapper in order for these definitions to be
-expanded before being used as arguments to the LAYOUT_xxx macro.
-*/
-#if (!defined(LAYOUT) && defined(KEYMAP))
-#define LAYOUT KEYMAP
-#endif
-
-#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 LAYOUT_ortho_4x12_wrapper(...)       LAYOUT_ortho_4x12(__VA_ARGS__)
-
-/*
-Blocks for each of the four major keyboard layouts
-Organized so we can quickly adapt and modify all of them
-at once, rather than for each keyboard, one at a time.
-And this allows for much cleaner blocks in the keymaps.
-For instance Tap/Hold for Control on all of the layouts
-
-NOTE: These are all the same length.  If you do a search/replace
-  then you need to add/remove underscores to keep the
-  lengths consistent.
-*/
-
-#define _________________QWERTY_L1_________________        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
-#define _________________QWERTY_L2_________________        KC_A,    KC_S,    KC_D,    KC_F,    KC_G
-#define _________________QWERTY_L3_________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
-
-#define _________________QWERTY_R1_________________        KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
-#define _________________QWERTY_R2_________________        KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN
-#define _________________QWERTY_R3_________________        KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
-
-
-#define _________________COLEMAK_L1________________       KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
-#define _________________COLEMAK_L2________________       KC_A,    KC_R,    KC_S,    KC_T,    KC_D
-#define _________________COLEMAK_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
-
-#define _________________COLEMAK_R1________________       KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN
-#define _________________COLEMAK_R2________________       KC_H,    KC_N,    KC_E,    KC_I,    KC_O
-#define _________________COLEMAK_R3________________       KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
-
-#define ______________COLEMAK_MOD_DH_L1____________       KC_Q,    KC_W,    KC_F,    KC_P,    KC_B
-#define ______________COLEMAK_MOD_DH_L2____________       KC_A,    KC_R,    KC_S,    KC_T,    KC_G
-#define ______________COLEMAK_MOD_DH_L3____________       KC_Z,    KC_X,    KC_C,    KC_D,    KC_V
-
-#define ______________COLEMAK_MOD_DH_R1____________       KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN
-#define ______________COLEMAK_MOD_DH_R2____________       KC_M,    KC_N,    KC_E,    KC_I,    KC_O
-#define ______________COLEMAK_MOD_DH_R3____________       KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLASH
-
-
-#define _________________DVORAK_L1_________________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
-#define _________________DVORAK_L2_________________        KC_A,    KC_O,    KC_E,   KC_U,     KC_I
-#define _________________DVORAK_L3_________________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
-
-#define _________________DVORAK_R1_________________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
-#define _________________DVORAK_R2_________________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
-#define _________________DVORAK_R3_________________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
-
-
-#define ________________DVORAK_AU_L1_______________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
-#define ________________DVORAK_AU_L2_______________        KC_O,    KC_A,    KC_E,   KC_I,     KC_U
-#define ________________DVORAK_AU_L3_______________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
-
-#define ________________DVORAK_AU_R1_______________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
-#define ________________DVORAK_AU_R2_______________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
-#define ________________DVORAK_AU_R3_______________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
-
-#define _________________WORKMAN_L1________________       KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
-#define _________________WORKMAN_L2________________       KC_A,    KC_S,    KC_H,   KC_T,     KC_G
-#define _________________WORKMAN_L3________________       KC_Z,    KC_X,    KC_M,   KC_C,     KC_V
-
-#define _________________WORKMAN_R1________________       KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN
-#define _________________WORKMAN_R2________________       KC_Y,    KC_N,    KC_E,    KC_O,    KC_I
-#define _________________WORKMAN_R3________________       KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLASH
-
-
-#define _________________NORMAN_L1_________________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
-#define _________________NORMAN_L2_________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
-#define _________________NORMAN_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
-
-#define _________________NORMAN_R1_________________       KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN
-#define _________________NORMAN_R2_________________       KC_Y,    KC_N,    KC_I,    KC_O,    KC_U
-#define _________________NORMAN_R3_________________       KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
-
-
-#define _________________MALTRON_L1________________       KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
-#define _________________MALTRON_L2________________       KC_A,    KC_N,    KC_I,    KC_S,    KC_F
-#define _________________MALTRON_L3________________       KC_SCLN, KC_SLSH, KC_J     KC_G,    KC_COMM
-
-#define _________________MALTRON_R1________________       KC_V,    KC_M,    KC_U,    KC_Z,    KC_L
-#define _________________MALTRON_R2________________       KC_D,    KC_T,    KC_D,    KC_O,    KC_R
-#define _________________MALTRON_R3________________       KC_DOT,  KC_W,    KC_K,    KC_MINS,  KC_X
-
-
-#define _________________EUCALYN_L1________________       KC_SLSH, KC_COMM, KC_DOT,  KC_F,    KC_Q
-#define _________________EUCALYN_L2________________       KC_A,    KC_O,    KC_E,    KC_I,    KC_U
-#define _________________EUCALYN_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_W
-
-#define _________________EUCALYN_R1________________       KC_M,    KC_R,    KC_D,    KC_Y,    KC_P
-#define _________________EUCALYN_R2________________       KC_G,    KC_T,    KC_K,    KC_S,    KC_N
-#define _________________EUCALYN_R3________________       KC_B,    KC_H,    KC_J,    KC_L,    KC_SCLN
-
-
-#define _____________CARPLAX_QFMLWY_L1_____________       KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
-#define _____________CARPLAX_QFMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define _____________CARPLAX_QFMLWY_L3_____________       KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
-
-#define _____________CARPLAX_QFMLWY_R1_____________       KC_Y,    KC_U,    KC_O,    KC_B,    KC_J
-#define _____________CARPLAX_QFMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN
-#define _____________CARPLAX_QFMLWY_R3_____________       KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
-
-
-#define _____________CARPLAX_QGMLWB_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
-#define _____________CARPLAX_QGMLWB_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define _____________CARPLAX_QGMLWB_L3_____________       KC_Z,   KC_X,    KC_C,    KC_F,    KC_J
-
-#define _____________CARPLAX_QGMLWB_R1_____________       KC_B,    KC_Y,    KC_U,    KC_V,    KC_SCLN
-#define _____________CARPLAX_QGMLWB_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H
-#define _____________CARPLAX_QGMLWB_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
-
-
-#define _____________CARPLAX_QGMLWY_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
-#define _____________CARPLAX_QGMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define _____________CARPLAX_QGMLWY_L3_____________       KC_Z,   KC_X,    KC_C,    KC_V,    KC_J
-
-#define _____________CARPLAX_QGMLWY_R1_____________       KC_Y,    KC_F,    KC_U,    KC_B,    KC_SCLN
-#define _____________CARPLAX_QGMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H
-#define _____________CARPLAX_QGMLWY_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
-
-
-#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
-
-#define ___________________BLANK___________________        _______, _______, _______, _______, _______
-
-
-#define _________________LOWER_L1__________________        KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC
-#define _________________LOWER_L2__________________        _________________FUNC_LEFT_________________
-#define _________________LOWER_L3__________________        _________________FUNC_RIGHT________________
-
-#define _________________LOWER_R1__________________        KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-#define _________________LOWER_R2__________________        _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
-#define _________________LOWER_R3__________________        _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
-
-
-
-#define _________________RAISE_L1__________________        ________________NUMBER_LEFT________________
-#define _________________RAISE_L2__________________        ___________________BLANK___________________
-#define _________________RAISE_L3__________________        ___________________BLANK___________________
-
-#define _________________RAISE_R1__________________        ________________NUMBER_RIGHT_______________
-#define _________________RAISE_R2__________________        _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC
-#define _________________RAISE_R3__________________        _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
-
-
-
-#define _________________ADJUST_L1_________________        RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
-#define _________________ADJUST_L2_________________        MU_TOG , CK_TOGG, AU_ON,   AU_OFF,  AG_NORM
-#define _________________ADJUST_L3_________________        RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
-
-#define _________________ADJUST_R1_________________        KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
-#define _________________ADJUST_R2_________________        AG_SWAP, QWERTY,  COLEMAK, DVORAK,  WORKMAN
-#define _________________ADJUST_R3_________________        MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
new file mode 100644 (file)
index 0000000..5e311e6
--- /dev/null
@@ -0,0 +1,175 @@
+#include "drashna.h"
+
+uint16_t copy_paste_timer;
+
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+__attribute__ ((weak))
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+
+// Defines actions tor my global custom keycodes. Defined in drashna.h file
+// Then runs the _keymap's record handier if not processed here
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+  // If console is enabled, it will print the matrix position and status of each key pressed
+#ifdef KEYLOGGER_ENABLE
+  #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2)
+    xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed);
+  #else
+    xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed);
+  #endif
+#endif //KEYLOGGER_ENABLE
+
+  switch (keycode) {
+  case KC_QWERTY:
+    if (record->event.pressed) {
+      set_single_persistent_default_layer(_QWERTY);
+    }
+    break;
+  case KC_COLEMAK:
+    if (record->event.pressed) {
+      set_single_persistent_default_layer(_COLEMAK);
+    }
+    break;
+  case KC_DVORAK:
+    if (record->event.pressed) {
+      set_single_persistent_default_layer(_DVORAK);
+    }
+    break;
+  case KC_WORKMAN:
+    if (record->event.pressed) {
+      set_single_persistent_default_layer(_WORKMAN);
+    }
+    break;
+
+
+  case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
+    if (!record->event.pressed) {
+      uint8_t temp_mod = get_mods();
+      uint8_t temp_osm = get_oneshot_mods();
+      clear_mods(); clear_oneshot_mods();
+      send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), 10);
+      if (temp_mod & MODS_SHIFT_MASK || temp_osm & MODS_SHIFT_MASK) {
+        #if defined(__ARM__)
+          send_string_with_delay_P(PSTR(":dfu-util"), 10);
+        #elif defined(BOOTLOADER_DFU)
+          send_string_with_delay_P(PSTR(":dfu"), 10);
+        #elif defined(BOOTLOADER_HALFKAY)
+          send_string_with_delay_P(PSTR(":teensy"), 10);
+        #elif defined(BOOTLOADER_CATERINA)
+          send_string_with_delay_P(PSTR(":avrdude"), 10);
+        #endif // bootloader options
+      }
+      #if defined(KEYBOARD_viterbi)
+        send_string_with_delay_P(PSTR(":dfu"), 10);
+      #endif
+      if (temp_mod & MODS_CTRL_MASK || temp_osm & MODS_CTRL_MASK) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), 10); }
+      send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10);
+      set_mods(temp_mod);
+    }
+    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);
+    }
+    break;
+
+// These are a serious of gaming macros.
+// Only enables for the viterbi, basically,
+// to save on firmware space, since it's limited.
+#ifdef MACROS_ENABLED
+  case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
+    if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
+#ifdef RGBLIGHT_ENABLE
+    userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
+#endif //RGBLIGHT_ENABLE
+    break;
+  case KC_SALT:
+    return send_game_macro("Salt, salt, salt...", record, false);
+  case KC_MORESALT:
+    return  send_game_macro("Please sir, can I have some more salt?!", record, false);
+  case KC_SALTHARD:
+    return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
+  case KC_GOODGAME:
+    return send_game_macro("Good game, everyone!", record, false);
+  case KC_GLHF:
+    return send_game_macro("Good luck, have fun!!!", record, false);
+  case KC_SYMM:
+    return send_game_macro("Left click to win!", record, false);
+  case KC_JUSTGAME:
+    return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
+  case KC_TORB:
+    return send_game_macro("That was positively riveting!", record, false);
+  case KC_AIM:
+    send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
+    return send_game_macro("Wait! That aim is TOO good!  You're clearly using an aim hack! CHEATER!", record, false);
+  case KC_C9:
+    return send_game_macro("OMG!!!  C9!!!", record, false);
+  case KC_GGEZ:
+    return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
+#endif // MACROS_ENABLED
+
+
+  case KC_DIABLO_CLEAR:  // reset all Diablo timers, disabling them
+#ifdef TAP_DANCE_ENABLE
+    if (record->event.pressed) {
+      uint8_t dtime;
+      for (dtime = 0; dtime < 4; dtime++) {
+        diablo_key_time[dtime] = diablo_times[0];
+      }
+    }
+#endif // TAP_DANCE_ENABLE
+    break;
+
+
+  case KC_CCCV:                                    // One key copy/paste
+    if(record->event.pressed){
+      copy_paste_timer = timer_read();
+    } else {
+      if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {   // Hold, copy
+        register_code(KC_LCTL);
+        tap_code(KC_C);
+        unregister_code(KC_LCTL);
+      } else {                                // Tap, paste
+        register_code(KC_LCTL);
+        tap_code(KC_V);
+        unregister_code(KC_LCTL);
+      }
+    }
+    break;
+#ifdef UNICODE_ENABLE
+  case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
+    if (record->event.pressed) {
+      send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
+    }
+    break;
+  case UC_TABL: // ┬─┬ノ( º _ ºノ)
+    if (record->event.pressed) {
+      send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
+    }
+    break;
+  case UC_SHRG: // ¯\_(ツ)_/¯
+    if (record->event.pressed) {
+      send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
+    }
+    break;
+  case UC_DISA: // ಠ_ಠ
+    if (record->event.pressed) {
+      send_unicode_hex_string("0CA0 005F 0CA0");
+    }
+    break;
+#endif
+  }
+  return process_record_keymap(keycode, record) &&
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+    process_record_user_rgb(keycode, record) &&
+#endif // RGBLIGHT_ENABLE
+    process_record_secrets(keycode, record);
+}
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
new file mode 100644 (file)
index 0000000..620997a
--- /dev/null
@@ -0,0 +1,101 @@
+#pragma once
+#include "drashna.h"
+
+#if defined(KEYMAP_SAFE_RANGE)
+  #define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
+#else
+  #define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
+#endif
+
+enum userspace_custom_keycodes {
+  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
+  KC_WORKMAN,        // Sets default layer to WORKMAN
+  KC_DIABLO_CLEAR,   // Clears all Diablo Timers
+  KC_OVERWATCH,      // Toggles game macro input mode (so in OW, it defaults to game chat)
+  KC_SALT,           // See drashna.c for details
+  KC_MORESALT,
+  KC_SALTHARD,
+  KC_GOODGAME,
+  KC_SYMM,
+  KC_JUSTGAME,
+  KC_GLHF,
+  KC_TORB,
+  KC_AIM,
+  KC_C9,
+  KC_GGEZ,
+  KC_MAKE,           // Run keyboard's customized make command
+  KC_RGB_T,          // Toggles RGB Layer Indication mode
+  KC_SECRET_1,       // test1
+  KC_SECRET_2,       // test2
+  KC_SECRET_3,       // test3
+  KC_SECRET_4,       // test4
+  KC_SECRET_5,       // test5
+  KC_CCCV,           // Hold to copy, tap to paste
+  KC_NUKE,           // NUCLEAR LAUNCH DETECTED!!!
+  UC_FLIP,           // (ಠ痊ಠ)┻━┻
+  UC_TABL,           // ┬─┬ノ( º _ ºノ)
+  UC_SHRG,           // ¯\_(ツ)_/¯
+  UC_DISA,           // ಠ_ಠ
+  NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
+};
+
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
+
+
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+#define TG_MODS TG(_MODS)
+#define TG_GAME TG(_GAMEPAD)
+
+#define KC_SEC1 KC_SECRET_1
+#define KC_SEC2 KC_SECRET_2
+#define KC_SEC3 KC_SECRET_3
+#define KC_SEC4 KC_SECRET_4
+#define KC_SEC5 KC_SECRET_5
+
+#define QWERTY KC_QWERTY
+#define DVORAK KC_DVORAK
+#define COLEMAK KC_COLEMAK
+#define WORKMAN KC_WORKMAN
+
+#define KC_RESET RESET
+#define KC_RST KC_RESET
+
+#ifdef SWAP_HANDS_ENABLE
+#define KC_C1R3 SH_TT
+#else // SWAP_HANDS_ENABLE
+#define KC_C1R3 KC_BSPC
+#endif // SWAP_HANDS_ENABLE
+
+#define BK_LWER LT(_LOWER, KC_BSPC)
+#define SP_LWER LT(_LOWER, KC_SPC)
+#define DL_RAIS LT(_RAISE, KC_DEL)
+#define ET_RAIS LT(_RAISE, KC_ENTER)
+
+/* OSM keycodes, to keep things clean and easy to change */
+#define KC_MLSF OSM(MOD_LSFT)
+#define KC_MRSF OSM(MOD_RSFT)
+
+#define OS_LGUI OSM(MOD_LGUI)
+#define OS_RGUI OSM(MOD_RGUI)
+#define OS_LSFT OSM(MOD_LSFT)
+#define OS_RSFT OSM(MOD_RSFT)
+#define OS_LCTL OSM(MOD_LCTL)
+#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
+
+#define UC_IRNY UC(0x2E2E)
+#define UC_CLUE UC(0x203D)
index 3db068a31dbfcda51ada80cdecf4818d057226e3..065bda9f9ebd1056a1efa24b05fd39b6e38515b4 100644 (file)
@@ -1,4 +1,8 @@
+#pragma once
 #include "quantum.h"
+#ifdef RGB_MATRIX_ENABLE
+  #include "rgb_matrix.h"
+#endif
 
 typedef struct {
     bool enabled;
@@ -13,3 +17,5 @@ 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);
+void rgblight_sethsv_default_helper(uint8_t index);
+void rgb_matrix_set_color_all( uint8_t red, uint8_t green, uint8_t blue );
index 49b1ddae979e0fcdbd629179ebd4a73dd95646fa..5f243b0076493b42765ed515cec370f1821c8ffe 100644 (file)
@@ -1,4 +1,5 @@
-SRC += drashna.c
+SRC += drashna.c \
+       process_records.c
 
 ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
   SRC += secrets.c
index 3466758530ac28b7cdd2f531345c1ee2e4df11c0..cbb3cf54efe5745132736dff2fb19e9870b1b81b 100644 (file)
@@ -1,4 +1,3 @@
-#include "drashna.h"
 #include "tap_dances.h"
 
 
index 8935753f6cf7f587b969ec61271d6d182c8b15fa..41d2bacb7b3daafcb85454f0d9f5a9959f7d1660 100644 (file)
@@ -1,3 +1,6 @@
+#pragma once
+#include "drashna.h"
+
 //define diablo macro timer variables
 extern uint16_t diablo_timer[4];
 extern uint8_t diablo_times[];
@@ -5,3 +8,12 @@ extern uint8_t diablo_key_time[4];
 
 
 void run_diablo_macro_check(void);
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+  TD_D3_1 = 0,
+  TD_D3_2,
+  TD_D3_3,
+  TD_D3_4
+};
+#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
new file mode 100644 (file)
index 0000000..b45359f
--- /dev/null
@@ -0,0 +1,170 @@
+#pragma once
+#include "drashna.h"
+/*
+Since our quirky block definitions are basically a list of comma separated
+arguments, we need a wrapper in order for these definitions to be
+expanded before being used as arguments to the LAYOUT_xxx macro.
+*/
+#if (!defined(LAYOUT) && defined(KEYMAP))
+#define LAYOUT KEYMAP
+#endif
+
+#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 LAYOUT_ortho_4x12_wrapper(...)       LAYOUT_ortho_4x12(__VA_ARGS__)
+
+/*
+Blocks for each of the four major keyboard layouts
+Organized so we can quickly adapt and modify all of them
+at once, rather than for each keyboard, one at a time.
+And this allows for much cleaner blocks in the keymaps.
+For instance Tap/Hold for Control on all of the layouts
+
+NOTE: These are all the same length.  If you do a search/replace
+  then you need to add/remove underscores to keep the
+  lengths consistent.
+*/
+
+#define _________________QWERTY_L1_________________        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
+#define _________________QWERTY_L2_________________        KC_A,    KC_S,    KC_D,    KC_F,    KC_G
+#define _________________QWERTY_L3_________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+#define _________________QWERTY_R1_________________        KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
+#define _________________QWERTY_R2_________________        KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN
+#define _________________QWERTY_R3_________________        KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
+
+
+#define _________________COLEMAK_L1________________       KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
+#define _________________COLEMAK_L2________________       KC_A,    KC_R,    KC_S,    KC_T,    KC_D
+#define _________________COLEMAK_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+#define _________________COLEMAK_R1________________       KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN
+#define _________________COLEMAK_R2________________       KC_H,    KC_N,    KC_E,    KC_I,    KC_O
+#define _________________COLEMAK_R3________________       KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
+
+#define ______________COLEMAK_MOD_DH_L1____________       KC_Q,    KC_W,    KC_F,    KC_P,    KC_B
+#define ______________COLEMAK_MOD_DH_L2____________       KC_A,    KC_R,    KC_S,    KC_T,    KC_G
+#define ______________COLEMAK_MOD_DH_L3____________       KC_Z,    KC_X,    KC_C,    KC_D,    KC_V
+
+#define ______________COLEMAK_MOD_DH_R1____________       KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN
+#define ______________COLEMAK_MOD_DH_R2____________       KC_M,    KC_N,    KC_E,    KC_I,    KC_O
+#define ______________COLEMAK_MOD_DH_R3____________       KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLASH
+
+
+#define _________________DVORAK_L1_________________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define _________________DVORAK_L2_________________        KC_A,    KC_O,    KC_E,   KC_U,     KC_I
+#define _________________DVORAK_L3_________________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
+
+#define _________________DVORAK_R1_________________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define _________________DVORAK_R2_________________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
+#define _________________DVORAK_R3_________________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
+
+
+#define ________________DVORAK_AU_L1_______________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define ________________DVORAK_AU_L2_______________        KC_O,    KC_A,    KC_E,   KC_I,     KC_U
+#define ________________DVORAK_AU_L3_______________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
+
+#define ________________DVORAK_AU_R1_______________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define ________________DVORAK_AU_R2_______________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
+#define ________________DVORAK_AU_R3_______________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
+
+#define _________________WORKMAN_L1________________       KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
+#define _________________WORKMAN_L2________________       KC_A,    KC_S,    KC_H,   KC_T,     KC_G
+#define _________________WORKMAN_L3________________       KC_Z,    KC_X,    KC_M,   KC_C,     KC_V
+
+#define _________________WORKMAN_R1________________       KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN
+#define _________________WORKMAN_R2________________       KC_Y,    KC_N,    KC_E,    KC_O,    KC_I
+#define _________________WORKMAN_R3________________       KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLASH
+
+
+#define _________________NORMAN_L1_________________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
+#define _________________NORMAN_L2_________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
+#define _________________NORMAN_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+#define _________________NORMAN_R1_________________       KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN
+#define _________________NORMAN_R2_________________       KC_Y,    KC_N,    KC_I,    KC_O,    KC_U
+#define _________________NORMAN_R3_________________       KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
+
+
+#define _________________MALTRON_L1________________       KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
+#define _________________MALTRON_L2________________       KC_A,    KC_N,    KC_I,    KC_S,    KC_F
+#define _________________MALTRON_L3________________       KC_SCLN, KC_SLSH, KC_J     KC_G,    KC_COMM
+
+#define _________________MALTRON_R1________________       KC_V,    KC_M,    KC_U,    KC_Z,    KC_L
+#define _________________MALTRON_R2________________       KC_D,    KC_T,    KC_D,    KC_O,    KC_R
+#define _________________MALTRON_R3________________       KC_DOT,  KC_W,    KC_K,    KC_MINS,  KC_X
+
+
+#define _________________EUCALYN_L1________________       KC_SLSH, KC_COMM, KC_DOT,  KC_F,    KC_Q
+#define _________________EUCALYN_L2________________       KC_A,    KC_O,    KC_E,    KC_I,    KC_U
+#define _________________EUCALYN_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_W
+
+#define _________________EUCALYN_R1________________       KC_M,    KC_R,    KC_D,    KC_Y,    KC_P
+#define _________________EUCALYN_R2________________       KC_G,    KC_T,    KC_K,    KC_S,    KC_N
+#define _________________EUCALYN_R3________________       KC_B,    KC_H,    KC_J,    KC_L,    KC_SCLN
+
+
+#define _____________CARPLAX_QFMLWY_L1_____________       KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
+#define _____________CARPLAX_QFMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
+#define _____________CARPLAX_QFMLWY_L3_____________       KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
+
+#define _____________CARPLAX_QFMLWY_R1_____________       KC_Y,    KC_U,    KC_O,    KC_B,    KC_J
+#define _____________CARPLAX_QFMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN
+#define _____________CARPLAX_QFMLWY_R3_____________       KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
+
+
+#define _____________CARPLAX_QGMLWB_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
+#define _____________CARPLAX_QGMLWB_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
+#define _____________CARPLAX_QGMLWB_L3_____________       KC_Z,   KC_X,    KC_C,    KC_F,    KC_J
+
+#define _____________CARPLAX_QGMLWB_R1_____________       KC_B,    KC_Y,    KC_U,    KC_V,    KC_SCLN
+#define _____________CARPLAX_QGMLWB_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H
+#define _____________CARPLAX_QGMLWB_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
+
+
+#define _____________CARPLAX_QGMLWY_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
+#define _____________CARPLAX_QGMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
+#define _____________CARPLAX_QGMLWY_L3_____________       KC_Z,   KC_X,    KC_C,    KC_V,    KC_J
+
+#define _____________CARPLAX_QGMLWY_R1_____________       KC_Y,    KC_F,    KC_U,    KC_B,    KC_SCLN
+#define _____________CARPLAX_QGMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H
+#define _____________CARPLAX_QGMLWY_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
+
+
+#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
+
+#define ___________________BLANK___________________        _______, _______, _______, _______, _______
+
+
+#define _________________LOWER_L1__________________        KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC
+#define _________________LOWER_L2__________________        _________________FUNC_LEFT_________________
+#define _________________LOWER_L3__________________        _________________FUNC_RIGHT________________
+
+#define _________________LOWER_R1__________________        KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
+#define _________________LOWER_R2__________________        _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
+#define _________________LOWER_R3__________________        _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
+
+
+
+#define _________________RAISE_L1__________________        ________________NUMBER_LEFT________________
+#define _________________RAISE_L2__________________        ___________________BLANK___________________
+#define _________________RAISE_L3__________________        ___________________BLANK___________________
+
+#define _________________RAISE_R1__________________        ________________NUMBER_RIGHT_______________
+#define _________________RAISE_R2__________________        _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC
+#define _________________RAISE_R3__________________        _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+
+
+
+#define _________________ADJUST_L1_________________        RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
+#define _________________ADJUST_L2_________________        MU_TOG , CK_TOGG, AU_ON,   AU_OFF,  AG_NORM
+#define _________________ADJUST_L3_________________        RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
+
+#define _________________ADJUST_R1_________________        KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
+#define _________________ADJUST_R2_________________        AG_SWAP, QWERTY,  COLEMAK, DVORAK,  WORKMAN
+#define _________________ADJUST_R3_________________        MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT