]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - docs/feature_macros.md
Keyboard: Helix five_rows keymap reduced size (#4082)
[qmk_firmware.git] / docs / feature_macros.md
index a9c138e815daf5cbed79afbb5b5734eb2fda75f3..ba5d91882fb7e8080ea31ace73fc64bc70969730 100644 (file)
@@ -1,10 +1,8 @@
 # Macros
 
-Macros allow you to send multiple keystrokes when pressing just one key. QMK has a number of ways to define and use macros. These can do anything you want: type common phrases for you, copypasta, repetitive game movements, or even help you code. 
+Macros allow you to send multiple keystrokes when pressing just one key. QMK has a number of ways to define and use macros. These can do anything you want: type common phrases for you, copypasta, repetitive game movements, or even help you code.
 
-{% hint style='danger' %}
-**Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.
-{% endhint %}
+!> **Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.
 
 ## The New Way: `SEND_STRING()` & `process_record_user`
 
@@ -22,7 +20,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                switch(keycode) {
                        case MY_CUSTOM_MACRO:
                                SEND_STRING("QMK is the best thing ever!"); // this is our macro!
-                               return false; break;
+                               return false;
                }
        }
        return true;
@@ -56,10 +54,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                switch(keycode) {
                        case MY_CUSTOM_MACRO:
                                SEND_STRING("QMK is the best thing ever!");
-                               return false; break;
+                               return false;
                        case MY_OTHER_MACRO:
                                SEND_STRING(SS_LCTRL("ac")); // selects all and copies
-                               return false; break;
+                               return false;
                }
        }
        return true;
@@ -97,6 +95,7 @@ There's also a couple of mod shortcuts you can use:
 * `SS_LGUI(string)`
 * `SS_LALT(string)`
 * `SS_LSFT(string)`
+* `SS_RALT(string)`
 
 These press the respective modifier, send the supplied string and then release the modifier.
 They can be used like this:
@@ -131,9 +130,7 @@ SEND_STRING(".."SS_TAP(X_END));
 
 ## The Old Way: `MACRO()` & `action_get_macro`
 
-{% hint style='info' %}
-This is inherited from TMK, and hasn't been updated - it's recommend that you use `SEND_STRING` and `process_record_user` instead.
-{% endhint %}
+?> This is inherited from TMK, and hasn't been updated - it's recommend that you use `SEND_STRING` and `process_record_user` instead.
 
 By default QMK assumes you don't have any macros. To define your macros you create an `action_get_macro()` function. For example:
 
@@ -231,6 +228,10 @@ This sends the `<kc>` keydown event to the computer. Some examples would be `KC_
 
 Parallel to `register_code` function, this sends the `<kc>` keyup event to the computer. If you don't use this, the key will be held down until it's sent.
 
+### `tap_code(<kc>);`
+
+This will send `register_code(<kc>)` and then `unregister_code(<kc>)`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
+
 ### `clear_keyboard();`
 
 This will clear all mods and keys currently pressed.
@@ -245,7 +246,7 @@ This will clear all keys besides the mods currently pressed.
 
 ## Advanced Example: Single-Key Copy/Paste
 
-This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released. 
+This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released.
 
 ```c
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {