diff options
| author | Drashna Jaelre <drashna@live.com> | 2017-12-13 21:02:48 -0800 |
|---|---|---|
| committer | Jack Humbert <jack.humb@gmail.com> | 2017-12-14 00:02:48 -0500 |
| commit | 2ec1ab2b3585adca78e2fde0bd4f92df4d0311cc (patch) | |
| tree | d1e7ebaff5f0d9e0f319a744a6b1098f7bf133cf /users/drashna/readme.md | |
| parent | 557745ba9f1155660026ff8043fc32282264c8c7 (diff) | |
| download | qmk_firmware-2ec1ab2b3585adca78e2fde0bd4f92df4d0311cc.tar.gz qmk_firmware-2ec1ab2b3585adca78e2fde0bd4f92df4d0311cc.zip | |
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
Diffstat (limited to 'users/drashna/readme.md')
| -rw-r--r-- | users/drashna/readme.md | 106 |
1 files changed, 95 insertions, 11 deletions
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 @@ | |||
| 1 | Copyright 2017 Christopher Courtney <drashna@live.com> @drashna | 1 | Overview |
| 2 | ======== | ||
| 2 | 3 | ||
| 3 | This program is free software: you can redistribute it and/or modify | 4 | This is my personal userspace file. Most of my code exists here, as it's heavily shared. |
| 4 | it under the terms of the GNU General Public License as published by | ||
| 5 | the Free Software Foundation, either version 2 of the License, or | ||
| 6 | (at your option) any later version. | ||
| 7 | 5 | ||
| 8 | This program is distributed in the hope that it will be useful, | ||
| 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | GNU General Public License for more details. | ||
| 12 | 6 | ||
| 13 | You should have received a copy of the GNU General Public License | 7 | Custom handlers |
| 14 | along with this program. If not, see <http://www.gnu.org/licenses/>. | 8 | --------------- |
| 9 | |||
| 10 | 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. | ||
| 11 | |||
| 12 | This allows for keyboard specific configuration while maintaining the ability to customize the board. | ||
| 13 | |||
| 14 | My Ergodox EZ Keymap is a good example of this, as it uses the LEDs as modifier indicators. | ||
| 15 | |||
| 16 | Custom Keycodes | ||
| 17 | --------------- | ||
| 18 | |||
| 19 | 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. | ||
| 20 | |||
| 21 | 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. | ||
| 22 | |||
| 23 | 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). | ||
| 24 | |||
| 25 | This also includes a modified RESET keycode as well, that sets the underglow to red. | ||
| 26 | |||
| 27 | Layer Indication | ||
| 28 | ---------------- | ||
| 29 | |||
| 30 | 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. | ||
| 31 | |||
| 32 | Since this is done via userspace, it is the same between all systems. | ||
| 33 | |||
| 34 | 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. | ||
| 35 | |||
| 36 | Also. I use `rgblight_sethsv` since it works with animation modes (that support it). | ||
| 37 | |||
| 38 | |||
| 39 | Diablo Layer | ||
| 40 | ------------ | ||
| 41 | |||
| 42 | This layer has some special handling. | ||
| 43 | |||
| 44 | When Tap Dances are enabled, this layer has the ability to "spam" keypresses. | ||
| 45 | |||
| 46 | 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). | ||
| 47 | |||
| 48 | Tappind once disables this, and switching layers temporarily disables this, until you switch back to the layer. | ||
| 49 | |||
| 50 | 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. | ||
| 51 | |||
| 52 | Secret Macros | ||
| 53 | ------------- | ||
| 54 | |||
| 55 | With help from gitter and Colinta, this adds the ability to add hidden strings to be used for macros. | ||
| 56 | |||
| 57 | 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. | ||
| 58 | |||
| 59 | 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. | ||
| 60 | |||
| 61 | ###### .git/info/exclude | ||
| 62 | ``` | ||
| 63 | # git ls-files --others --exclude-from=.git/info/exclude | ||
| 64 | # Lines that start with '#' are comments. | ||
| 65 | # For a project mostly in C, the following would be a good set of | ||
| 66 | # exclude patterns (uncomment them if you want to use them): | ||
| 67 | # *.[oa] | ||
| 68 | # *~ | ||
| 69 | /users/drashna/secrets.h | ||
| 70 | ``` | ||
| 71 | |||
| 72 | Then you can create this file and add your macro strings to it: | ||
| 73 | |||
| 74 | ###### secrets.h | ||
| 75 | ``` | ||
| 76 | PROGMEM const char secret[][64] = { | ||
| 77 | "secret1", | ||
| 78 | "secret2", | ||
| 79 | "secret3", | ||
| 80 | "secret4", | ||
| 81 | "secret5" | ||
| 82 | }; | ||
| 83 | ``` | ||
| 84 | |||
| 85 | Replacing the strings with the codes that you need. | ||
| 86 | |||
| 87 | |||
| 88 | These are called in the `process_record_user` function, using this block: | ||
| 89 | ``` | ||
| 90 | case KC_SECRET_1 ... KC_SECRET_5: | ||
| 91 | if (!record->event.pressed) { | ||
| 92 | send_string_P(secret[keycode - KC_SECRET_1]); | ||
| 93 | } | ||
| 94 | return false; | ||
| 95 | break; | ||
| 96 | ``` | ||
| 97 | |||
| 98 | And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined, as well. | ||
