From 2ec1ab2b3585adca78e2fde0bd4f92df4d0311cc Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Wed, 13 Dec 2017 21:02:48 -0800 Subject: [PATCH] Update Drashna keymaps (#2145) * Change overwatch to Gamepad * Remove secrets file * Add sample sensitive.h file * Borrow @colinta's secrets.h include method * Remove unnessary placeholder for macros * Set secrets to use PROGMEM for char string * Add readme files to my keymaps and userspace --- .../ergodox_ez/keymaps/drashna/README.md | 25 +++++ keyboards/ergodox_ez/keymaps/drashna/keymap.c | 24 ++-- .../woodpad/keymaps/drashna/README.md | 25 +++++ keyboards/orthodox/keymaps/drashna/README.md | 26 +++++ keyboards/viterbi/keymaps/drashna/keymap.c | 4 +- users/drashna/drashna.c | 17 ++- users/drashna/drashna.h | 11 +- users/drashna/readme.md | 106 ++++++++++++++++-- users/drashna/sensitive.h | 8 -- 9 files changed, 204 insertions(+), 42 deletions(-) create mode 100644 keyboards/ergodox_ez/keymaps/drashna/README.md create mode 100644 keyboards/handwired/woodpad/keymaps/drashna/README.md create mode 100644 keyboards/orthodox/keymaps/drashna/README.md delete mode 100644 users/drashna/sensitive.h diff --git a/keyboards/ergodox_ez/keymaps/drashna/README.md b/keyboards/ergodox_ez/keymaps/drashna/README.md new file mode 100644 index 000000000..e77defc91 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/drashna/README.md @@ -0,0 +1,25 @@ +Overview +======== + +This is my personal Ergodox EZ configuration, and my daily driver. + +Most of the code resides in my userspace, rather than here, as I have multiple keyboards. + +How to build +------------ +make ergodox_ez:drashna:teensy + +Layers +------ +* QWERTY/DVORAK/COLEMAK/WORKMAN: basic layout, default set like the OLKB boards. Default is set and persists on power cycle. +* SYMB: F keys across the top, symbols on the left and numpad on the right. +* GAMEPAD: This is the QWERTY layout shifted to the right for FPS type games. Destiny and Overwatch are the primary games for this. +* DIABLO: This contains a Diablo 3 layout, that requires much less reaching or shifting. If Tap Dance is enabled, then it has a "spam" feature. See Userspace for details. +* MOUSE: mouse navigation + +All layers have RGB specific indicators, so you can see what layer you're on by the underglow. + +Ergodox Specific Code +--------------------- + +Aside from my userspace code, this includes LED indications for Shift (Green LED), Ctrl (Red LED), and Alt (Blue LED). diff --git a/keyboards/ergodox_ez/keymaps/drashna/keymap.c b/keyboards/ergodox_ez/keymaps/drashna/keymap.c index abfbb5e33..8743ae282 100644 --- a/keyboards/ergodox_ez/keymaps/drashna/keymap.c +++ b/keyboards/ergodox_ez/keymaps/drashna/keymap.c @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(_DIABLO), KC_BSPACE, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSHIFT, LCTL_T(KC_Z),KC_X, KC_C, KC_V, KC_B, TG(_OVERWATCH), + KC_LSHIFT, LCTL_T(KC_Z),KC_X, KC_C, KC_V, KC_B, TG(_GAMEPAD), LT(_SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI, KC_LBRACKET,KC_RBRACKET, ALT_T(KC_APPLICATION), KC_LGUI, @@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, TG(_DIABLO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_QUOTE), - TG(_OVERWATCH), KC_N, KC_M, KC_COMMA, KC_DOT, RCTL_T(KC_SLASH),KC_RSHIFT, + TG(_GAMEPAD), KC_N, KC_M, KC_COMMA, KC_DOT, RCTL_T(KC_SLASH),KC_RSHIFT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), KC_RGUI, CTL_T(KC_ESCAPE), KC_PGUP, @@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(_DIABLO), KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, - KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(_OVERWATCH), + KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(_GAMEPAD), LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, ALT_T(KC_APP), KC_LGUI, KC_HOME, @@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(_DIABLO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, KC_H, KC_N, KC_E, KC_I, KC_O, GUI_T(KC_QUOTE), - TG(_OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, + TG(_GAMEPAD),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), KC_RGUI, CTL_T(KC_ESC), KC_PGUP, @@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(_DIABLO), KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, - KC_LSFT, LCTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(_OVERWATCH), + KC_LSFT, LCTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(_GAMEPAD), LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET, KC_RBRACKET, ALT_T(KC_APP), KC_LEAD, KC_HOME, @@ -167,7 +167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, TG(_DIABLO), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, - TG(_OVERWATCH),KC_B, KC_M, KC_W, KC_V, RCTL_T(KC_Z), KC_RSHIFT, + TG(_GAMEPAD),KC_B, KC_M, KC_W, KC_V, RCTL_T(KC_Z), KC_RSHIFT, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, TT(_SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, @@ -201,7 +201,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, TG(_DIABLO), KC_BSPC, KC_A, KC_S, KC_H, KC_T, KC_G, - KC_LSFT, LCTL_T(KC_Z), KC_X, KC_M, KC_C, KC_V, TG(_OVERWATCH), + KC_LSFT, LCTL_T(KC_Z), KC_X, KC_M, KC_C, KC_V, TG(_GAMEPAD), LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, ALT_T(KC_APP), KC_LEAD, KC_HOME, @@ -210,7 +210,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(_DIABLO), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOTE, - TG(_OVERWATCH),KC_K, KC_L, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, + TG(_GAMEPAD),KC_K, KC_L, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, @@ -279,7 +279,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | H | | | | | * `--------------------' `--------------------' */ - [_OVERWATCH] = LAYOUT_ergodox( + [_GAMEPAD] = LAYOUT_ergodox( KC_ESCAPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, @@ -291,9 +291,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - TG(_OVERWATCH), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, + TG(_GAMEPAD), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDOWN, KC_DELETE, KC_ENTER diff --git a/keyboards/handwired/woodpad/keymaps/drashna/README.md b/keyboards/handwired/woodpad/keymaps/drashna/README.md new file mode 100644 index 000000000..f24d2c48f --- /dev/null +++ b/keyboards/handwired/woodpad/keymaps/drashna/README.md @@ -0,0 +1,25 @@ +Overview +======== + +This is my personal Numpad (Woodpad) configuration, and my daily driver. + +Most of the code resides in my userspace, rather than here, as I have multiple keyboards. + +How to build +------------ +make handwired/woodpad:drashna:avrdude + +Layers +------ +* NUMLOCK: Num pad, locked to NUM LOCK enabled. +* NAV: Navigation codes without needing to enable numlock. +* DIABLO: This contains a Diablo 3 layout, that requires much less reaching or shifting. If Tap Dance is enabled, then it has a "spam" feature. See Userspace for details. +* MACROS: This layer contains a bunch of macros for spamming chat, with a toggle on what key to open up chat with. +* MEDIA: Media and RGB commands + +All layers have RGB specific indicators, so you can see what layer you're on by the underglow. + +Woodpad Specific Code +--------------------- + +Aside from my userspace code, this includes LED indications for numlock and macro mode. It also forces NUMLOCK to be enabled. diff --git a/keyboards/orthodox/keymaps/drashna/README.md b/keyboards/orthodox/keymaps/drashna/README.md new file mode 100644 index 000000000..c61161774 --- /dev/null +++ b/keyboards/orthodox/keymaps/drashna/README.md @@ -0,0 +1,26 @@ +Overview +======== + +This is my personal Orthodox configuration, and my daily driver. + +Most of the code resides in my userspace, rather than here, as I have multiple keyboards. + +How to build +------------ +make orthodox/rev1:drashna:teensy + +Layers +------ +* QWERTY/DVORAK/COLEMAK/WORKMAN: basic layout, default set like the OLKB boards. Default is set and persists on power cycle. +* RAISE: Contains function keys and unshifted symbols +* LOWER: Contains function keys and shifted symbols +* ADJUST: contains special codes (layout defaults, RGB codes, Audio codes, and volume control) + +All layers have RGB specific indicators, so you can see what layer you're on by the underglow. + +Orthodox Specific Code +---------------------- + +Left side is designed to have RGB underglow and Faux Clicking enabled, while the right has Audio enabled. + +The make commend ensures that the correct settings are retained. diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c index 3002af038..4b41d4977 100644 --- a/keyboards/viterbi/keymaps/drashna/keymap.c +++ b/keyboards/viterbi/keymaps/drashna/keymap.c @@ -17,7 +17,7 @@ extern keymap_config_t keymap_config; #define LMACRO TG(_MACROS) #define DIABLO TG(_DIABLO) -#define GAMEPAD TG(_OVERWATCH) +#define GAMEPAD TG(_GAMEPAD) #define MEDIA TG(_MEDIA) #define COVECUBE TG(_COVECUBE) @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ ), - [_OVERWATCH] = KEYMAP( // Game pad layout designed primarily for Overwatch + [_GAMEPAD] = KEYMAP( // Game pad layout designed primarily for Overwatch LMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index b7ca84faf..95fb793a7 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -19,7 +19,18 @@ along with this program. If not, see . #include "quantum.h" #include "action.h" #include "version.h" -#include "sensitive.h" + +#if (__has_include("secrets.h")) +#include "secrets.h" +#else +PROGMEM const char secret[][64] = { + "test1", + "test2", + "test3", + "test4", + "test5" +}; +#endif #ifdef TAP_DANCE_ENABLE //define diablo macro timer variables @@ -486,7 +497,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; case KC_SECRET_1 ... KC_SECRET_5: if (!record->event.pressed) { - send_string(secret[keycode - KC_SECRET_1]); + send_string_P(secret[keycode - KC_SECRET_1]); } return false; break; @@ -538,7 +549,7 @@ uint32_t layer_state_set_user(uint32_t state) { rgblight_set_green; rgblight_mode(22); break; - case _OVERWATCH: + case _GAMEPAD: rgblight_set_orange; rgblight_mode(17); break; diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index 4fd42acb9..0b9347f1d 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h @@ -19,7 +19,6 @@ along with this program. If not, see . #define USERSPACE #include "quantum.h" -#include "song_list.h" // Define layer names #define _QWERTY 0 @@ -30,7 +29,7 @@ along with this program. If not, see . #define _NAV 5 #define _COVECUBE 6 #define _SYMB 8 -#define _OVERWATCH 9 +#define _GAMEPAD 9 #define _DIABLO 10 #define _MOUS 11 #define _MACROS 12 @@ -55,14 +54,14 @@ along with this program. If not, see . #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); +#define rgblight_set_white rgblight_sethsv (0x00, 0x00, 0xFF); #endif extern bool is_overwatch; extern bool rgb_layer_change; -enum userrpace_custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - EPRM, +enum userspace_custom_keycodes { + EPRM = SAFE_RANGE, // can always be here VRSN, KC_QWERTY, KC_COLEMAK, @@ -105,7 +104,7 @@ enum { #endif -#define QMK_KEYS_PER_SCAN 4 +#define QMK_KEYS_PER_SCAN 8 #ifdef RGBLIGHT_ENABLE #define RGBLIGHT_SLEEP diff --git a/users/drashna/readme.md b/users/drashna/readme.md index 0d553f08e..0523be2a6 100644 --- a/users/drashna/readme.md +++ b/users/drashna/readme.md @@ -1,14 +1,98 @@ -Copyright 2017 Christopher Courtney @drashna +Overview +======== -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 is my personal userspace file. Most of my code exists here, as it's heavily shared. -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 . +Custom handlers +--------------- + +All (most) `_user` functions are handled here instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead. + +This allows for keyboard specific configuration while maintaining the ability to customize the board. + +My Ergodox EZ Keymap is a good example of this, as it uses the LEDs as modifier indicators. + +Custom Keycodes +--------------- + +Keycods are defined in the drashna.h file and need to be included in the keymap.c files, so that they can be used there. + +A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards. + +Included is a custom macro for compiling my keyboards. This includes the bootloader target (`:teensy`, `:avrdude`, or `:dfu`), and keeps RGBLIGHT, AUDIO and/or FAUXCLICKY enabled, if it previously was (regardless of the rules file). + +This also includes a modified RESET keycode as well, that sets the underglow to red. + +Layer Indication +---------------- + +This uses the `layer_state_set_*` command to change the layer color, to indicate which layer it is on. This includes the default keymap, as well. + +Since this is done via userspace, it is the same between all systems. + +Additionally, there is a custom keycode to toggle layer indication. And all RGB keycodes disable layer indication by default, as well. This way, I can leave special effects doing when I want. + +Also. I use `rgblight_sethsv` since it works with animation modes (that support it). + + +Diablo Layer +------------ + +This layer has some special handling. + +When Tap Dances are enabled, this layer has the ability to "spam" keypresses. + +For instance, tapping the TD "1" twice causes the layer to hit "1" ever 1 second (appoximately). This is useful for auto-hotkeying skills (such as bone armor or devour). + +Tappind once disables this, and switching layers temporarily disables this, until you switch back to the layer. + +For critics that think this is cheating, search "diablo 3 num lock auto cast". This is just a simpler method, since I no longer own a normal (non QMK) numpad. + +Secret Macros +------------- + +With help from gitter and Colinta, this adds the ability to add hidden strings to be used for macros. + +I have a number of long strings that I need to use that are semi-private. This uses the `__has_include` function to check for the file. If it exists, then it includes the custom text. Otherwise, it uses some default values. + +If you would *also* like to take advantage of this feature, you'll first want to make sure your "secrets" file isn't included in the repo. Open `.git/info/exclude` and add `secrets.h` to that file, below the comments. + +###### .git/info/exclude +``` +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ +/users/drashna/secrets.h +``` + +Then you can create this file and add your macro strings to it: + +###### secrets.h +``` +PROGMEM const char secret[][64] = { + "secret1", + "secret2", + "secret3", + "secret4", + "secret5" +}; +``` + +Replacing the strings with the codes that you need. + + +These are called in the `process_record_user` function, using this block: +``` + case KC_SECRET_1 ... KC_SECRET_5: + if (!record->event.pressed) { + send_string_P(secret[keycode - KC_SECRET_1]); + } + return false; + break; +``` + +And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined, as well. diff --git a/users/drashna/sensitive.h b/users/drashna/sensitive.h deleted file mode 100644 index bf47263bd..000000000 --- a/users/drashna/sensitive.h +++ /dev/null @@ -1,8 +0,0 @@ -const char secret[][64] = { - "test1", - "test2", - "test3", - "test4", - "test5" -}; -