Skip to content

Commit

Permalink
Update Drashna keymaps (#2145)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
drashna authored and jackhumbert committed Dec 14, 2017
1 parent 557745b commit 2ec1ab2
Show file tree
Hide file tree
Showing 9 changed files with 204 additions and 42 deletions.
25 changes: 25 additions & 0 deletions keyboards/ergodox_ez/keymaps/drashna/README.md
Original file line number Diff line number Diff line change
@@ -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).
24 changes: 12 additions & 12 deletions keyboards/ergodox_ez/keymaps/drashna/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand Down
25 changes: 25 additions & 0 deletions keyboards/handwired/woodpad/keymaps/drashna/README.md
Original file line number Diff line number Diff line change
@@ -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.
26 changes: 26 additions & 0 deletions keyboards/orthodox/keymaps/drashna/README.md
Original file line number Diff line number Diff line change
@@ -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.
4 changes: 2 additions & 2 deletions keyboards/viterbi/keymaps/drashna/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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, \
Expand Down
17 changes: 14 additions & 3 deletions users/drashna/drashna.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
11 changes: 5 additions & 6 deletions users/drashna/drashna.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USERSPACE

#include "quantum.h"
#include "song_list.h"

// Define layer names
#define _QWERTY 0
Expand All @@ -30,7 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define _NAV 5
#define _COVECUBE 6
#define _SYMB 8
#define _OVERWATCH 9
#define _GAMEPAD 9
#define _DIABLO 10
#define _MOUS 11
#define _MACROS 12
Expand All @@ -55,14 +54,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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,
Expand Down Expand Up @@ -105,7 +104,7 @@ enum {
#endif


#define QMK_KEYS_PER_SCAN 4
#define QMK_KEYS_PER_SCAN 8

#ifdef RGBLIGHT_ENABLE
#define RGBLIGHT_SLEEP
Expand Down
106 changes: 95 additions & 11 deletions users/drashna/readme.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,98 @@
Copyright 2017 Christopher Courtney <drashna@live.com> @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 <http://www.gnu.org/licenses/>.
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.
8 changes: 0 additions & 8 deletions users/drashna/sensitive.h

This file was deleted.

0 comments on commit 2ec1ab2

Please sign in to comment.