summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2022-03-17 14:19:34 -0700
committerGitHub <noreply@github.com>2022-03-17 21:19:34 +0000
commit02655690f48ec64ba982499cd3272ee6076b73b3 (patch)
treed7c0530d0142f93c99b895120460a5ac2303c453
parent2749346a539c2385218a32937ae7992cf80fb263 (diff)
[Core] Add compile/make macro to core (#15959)
* [Core] Add KC_MAKE keycode to core fix linting fix testing error work around test idiocyncracies fix more lint something something stupid tests add doc * updates based on feedback * Add bad names * Fixup docs * semantics but cleaner Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Hide oneshot checks behind preprocessors * Move no-compile option around * Fix formatting * make shift optional * Make opt in * fix formatting * update send string function name Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> Co-authored-by: Joel Challis <git@zvecr.com>
-rw-r--r--docs/config_options.md2
-rw-r--r--docs/keycodes.md11
-rw-r--r--docs/quantum_keycodes.md11
-rw-r--r--quantum/quantum.c20
-rw-r--r--quantum/quantum_keycodes.h2
5 files changed, 36 insertions, 10 deletions
diff --git a/docs/config_options.md b/docs/config_options.md
index 838c4d86fd..8227a0e074 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -131,6 +131,8 @@ If you define these options you will disable the associated feature, which can s
If you define these options you will enable the associated feature, which may increase your code size.
+* `#define ENABLE_COMPILE_KEYCODE`
+ * Enables the `QK_MAKE` keycode
* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* `#define STRICT_LAYER_RELEASE`
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 58ce43d309..942e0a6616 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -219,11 +219,12 @@ See also: [Basic Keycodes](keycodes_basic.md)
See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
-|Key |Aliases |Description |
-|-----------------|---------|-------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
-|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|
+|Key |Aliases |Description |
+|-----------------|---------|---------------------------------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
+|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
## Audio Keys :id=audio-keys
diff --git a/docs/quantum_keycodes.md b/docs/quantum_keycodes.md
index 8e29e05886..46a8b7de19 100644
--- a/docs/quantum_keycodes.md
+++ b/docs/quantum_keycodes.md
@@ -8,8 +8,9 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes :id=qmk-keycodes
-|Key |Aliases |Description |
-|-----------------|---------|-------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
-|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|
+|Key |Aliases |Description |
+|-----------------|---------|---------------------------------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
+|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
diff --git a/quantum/quantum.c b/quantum/quantum.c
index ef6e5ac1df..d4e91ddd37 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -358,6 +358,26 @@ bool process_record_quantum(keyrecord_t *record) {
oneshot_disable();
break;
#endif
+#ifdef ENABLE_COMPILE_KEYCODE
+ case QK_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
+ {
+# ifdef NO_ACTION_ONESHOT
+ const uint8_t temp_mod = mod_config(get_mods());
+# else
+ const uint8_t temp_mod = mod_config(get_mods() | get_oneshot_mods());
+ clear_oneshot_mods();
+# endif
+ clear_mods();
+
+ SEND_STRING_DELAY("qmk", TAP_CODE_DELAY);
+ if (temp_mod & MOD_MASK_SHIFT) { // if shift is held, flash rather than compile
+ SEND_STRING_DELAY(" flash ", TAP_CODE_DELAY);
+ } else {
+ SEND_STRING_DELAY(" compile ", TAP_CODE_DELAY);
+ }
+ SEND_STRING_DELAY("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP SS_TAP(X_ENTER), TAP_CODE_DELAY);
+ }
+#endif
}
}
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 2552c48165..dacfe5bdcd 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -595,6 +595,8 @@ enum quantum_keycodes {
MAGIC_TOGGLE_CONTROL_CAPSLOCK,
+ QK_MAKE,
+
// Start of custom keycode range for keyboards and keymaps - always leave at the end
SAFE_RANGE
};