summaryrefslogtreecommitdiffstats
path: root/users/drashna/readme.md
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-07-17 03:04:32 +0200
committerJack Humbert <jack.humb@gmail.com>2018-07-17 03:04:32 +0200
commitb2877470ced1deb9651ecb39f6a82f5ef380b399 (patch)
treeba4c9e0a9c86526cf4bc002b732be0dce37acd5b /users/drashna/readme.md
parente0c9cfad86a7c17863db08574472e866aa3d37b7 (diff)
downloadqmk_firmware-b2877470ced1deb9651ecb39f6a82f5ef380b399.tar.gz
qmk_firmware-b2877470ced1deb9651ecb39f6a82f5ef380b399.tar.xz
Update to drashna userspace and keymaps (#3172)
* Use string with delay * Add skipped region to ergodox * Add send string config * Use default_layer_state instead of function * Fully generalize keyboards * old iris cleanup * Fix Drashna keymap compile issues By checking to see if secret.c exists before actually trying to add it * Remove unnecessary references * Add 4x12 ortho board * Update userspace readme for secrets * Make RGB more modular * Fix iris keymap, since we don't need the lower left (Function keys) * Fix includes * Add Blanks * Fix Ergodox lower layer * Add suspend commands * Add Maltron Layout * Add additional layouts * Finish adding gamepad to Iris * Tweaks to iris gamepag layer * make gaming layers more friendly * minor gaming layer tweak * Add Carplax * Add modded key timer function * Cleanup and macro documentation * Add QMK DFU info * Add 'old' keymap for 12 LED spare * Update Pro Micro documentation * Disable twinkling so it fits in firmware space * Switch to QMK DFU bootloader, since it's better anyhow * Write default layer state colors to EEPROM Since we are writing to EEPROM anyways, and this way, it sticks on reboot * Fix QMK DFU bootloader options * More updates for QMK DFU support * Use matrix scanning hack for startup_user until #3113 gets merged * Fix indicator light consistency issue * Add/readd ifdefs to indicators * Add/readd alt indicator * Remove RGB Twinkling from Viterbi macro pad * Fix default layer color detection * Fix rebase and detection issues * Cleanup code so it will compile if RGBLIGHT is disabled * Revert vsode settings * Use Pragma Once instead of boilerplate code
Diffstat (limited to 'users/drashna/readme.md')
-rw-r--r--users/drashna/readme.md94
1 files changed, 63 insertions, 31 deletions
diff --git a/users/drashna/readme.md b/users/drashna/readme.md
index 0aa73ece9..179960322 100644
--- a/users/drashna/readme.md
+++ b/users/drashna/readme.md
@@ -75,11 +75,12 @@ For critics that think this is cheating, search "diablo 3 num lock auto cast".
Secret Macros
-------------
-With help from gitter and Colinta, this adds the ability to add hidden strings to be used for macros.
+With help from gitter and Colinta, this adds the ability to add hidden macros from other users.
-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.
+First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open `.git/info/exclude` and add `secrets.c` and `secrets.h` to that file, below the comments.
+
+And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined in your `<name>.h` file to define the keycodes for the new macros.
-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
```
@@ -89,10 +90,44 @@ If you would *also* like to take advantage of this feature, you'll first want to
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
+/users/drashna/secrets.c
/users/drashna/secrets.h
```
-Then you can create this file and add your macro strings to it:
+Then you can create these files:
+
+###### secrets.c
+
+```c
+#include "drashna.h" // replace with your keymap's "h" file, or whatever file stores the keycodes
+
+#if (__has_include("secrets.h") && !defined(NO_SECRETS))
+#include "secrets.h"
+#else
+// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware
+// And I'm not familiar enough to know which is better or why...
+static const char * const secret[] = {
+ "test1",
+ "test2",
+ "test3",
+ "test4",
+ "test5"
+};
+#endif
+
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo
+ if (!record->event.pressed) {
+ clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
+ send_string_with_delay(secret[keycode - KC_SECRET_1], MACRO_TIMER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+```
###### secrets.h
```c
@@ -107,36 +142,33 @@ static const char * const secrets[] = {
Replacing the strings with the codes that you need.
+###### name.c
+
In the `<name>.c` file, you will want to add this to the top:
```c
-
-#if (__has_include("secrets.h") && !defined(NO_SECRETS))
-#include "secrets.h"
-#else
-// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware
-// And I'm not familiar enough to know which is better or why...
-static const char * const secrets[] = {
- "test1",
- "test2",
- "test3",
- "test4",
- "test5"
-};
-#endif
+__attribute__ ((weak))
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
```
+This is so that the function can be called here, and replaced in the `secrets.c` file, and so it won't error out if it doesn't exist.
+
-And then, in the `process_record_user` function, you'll want to add this block:
+And then, in the `process_record_user` function, assuming you have `return process_record_keymap(keycode, record)` here, you'll want to replace the "final" return with the following. Otherwise, you want to replace the `return true;` with `return process_record_secrets(keycode, record);`
```c
- case KC_SECRET_1 ... KC_SECRET_5:
- if (!record->event.pressed) {
- send_string_P(secret[keycode - KC_SECRET_1]);
- }
- return false;
- break;
+ return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
+}
```
-And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined in your `<name>.h` file fo the new macros, as well.
+###### rules.mk
+
+Here, you want your `/users/<name>/rules.mk` file to "detect" the existence of the `secrets.c` file, and only add it if the file exists. To do so, add this block:
+```c
+ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
+ SRC += secrets.c
+endif
+```
Additionally, if you want to make sure that you can disable the function without messing with the file, you need to add this to your `/users/<name>/rules.mk`, so that it catches the flag:
```c
@@ -181,15 +213,15 @@ Pro Micro Hacking
Well, you can get the QMK DFU bootloader working on the ProMicro. But you need to change fuses.
-What worked to get into the firmware properly was:
+What worked to get into the firmware properly was:
```
-Low: 0x5E High: 0x99 Extended: 0xF3 Lock: 0xFF
+Low: 0x5E High: 0xD9 Extended: 0xC3 Lock: 0x3F
```
-But some of the columns and rows didn't work, like the pin mapping was wrong. Even when setting the bootloader settings.
-
- This is here for future reference. And the default fuse settings I believe were:
+The reason that there was some issues before, is that JTAG was still enabled, and using some of the pins that the keyboard uses. Disabling JTAG (either by fuse, or modifying the matrix code for splits fixes the issue).
+
+And for reference, if you want to go back to caterina, the default fuse settings I believe were:
```
Low: 0xFF High: 0xD8 Extended: 0xC3 Lock: 0x3F