X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=docs%2Ffeature_macros.md;h=67315308127f10cb381a708ab254a4f77cec1cda;hb=303f425c6b4f9ab6056f863e515c71c9325f2bfa;hp=f9a4e69d18b9c97c25f2b46a5bb57973295b3f3c;hpb=7b0356d1d49da6574570e110f61f95692afdb3d0;p=qmk_firmware.git diff --git a/docs/feature_macros.md b/docs/feature_macros.md index f9a4e69d1..673153081 100644 --- a/docs/feature_macros.md +++ b/docs/feature_macros.md @@ -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 ahold 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; @@ -75,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ### TAP, DOWN and UP You may want to use keys in your macros that you can't write down, such as `Ctrl` or `Home`. -You can send arbitary keycodes by wrapping them in: +You can send arbitrary keycodes by wrapping them in: * `SS_TAP()` presses and releases a key. * `SS_DOWN()` presses (but does not release) a key. @@ -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: @@ -245,7 +242,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) {