diff options
Diffstat (limited to 'docs/feature_macros.md')
-rw-r--r-- | docs/feature_macros.md | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/docs/feature_macros.md b/docs/feature_macros.md index 92afe68c2..f9a4e69d1 100644 --- a/docs/feature_macros.md +++ b/docs/feature_macros.md | |||
@@ -6,7 +6,7 @@ Macros allow you to send multiple keystrokes when pressing just one key. QMK has | |||
6 | **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. | 6 | **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. |
7 | {% endhint %} | 7 | {% endhint %} |
8 | 8 | ||
9 | ## The new way: `SEND_STRING()` & `process_record_user` | 9 | ## The New Way: `SEND_STRING()` & `process_record_user` |
10 | 10 | ||
11 | Sometimes you just want a key to type out words or phrases. For the most common situations we've provided `SEND_STRING()`, which will type out your string (i.e. a sequence of characters) for you. All ASCII characters that are easily translated to a keycode are supported (e.g. `\n\t`). | 11 | Sometimes you just want a key to type out words or phrases. For the most common situations we've provided `SEND_STRING()`, which will type out your string (i.e. a sequence of characters) for you. All ASCII characters that are easily translated to a keycode are supported (e.g. `\n\t`). |
12 | 12 | ||
@@ -105,13 +105,13 @@ They can be used like this: | |||
105 | 105 | ||
106 | Which would send LCTRL+a (LCTRL down, a, LCTRL up) - notice that they take strings (eg `"k"`), and not the `X_K` keycodes. | 106 | Which would send LCTRL+a (LCTRL down, a, LCTRL up) - notice that they take strings (eg `"k"`), and not the `X_K` keycodes. |
107 | 107 | ||
108 | ### Alternative keymaps | 108 | ### Alternative Keymaps |
109 | 109 | ||
110 | By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap: | 110 | By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap: |
111 | 111 | ||
112 | #include <sendstring_colemak.h> | 112 | #include <sendstring_colemak.h> |
113 | 113 | ||
114 | ### Strings in memory | 114 | ### Strings in Memory |
115 | 115 | ||
116 | If for some reason you're manipulating strings and need to print out something you just generated (instead of being a literal, constant string), you can use `send_string()`, like this: | 116 | If for some reason you're manipulating strings and need to print out something you just generated (instead of being a literal, constant string), you can use `send_string()`, like this: |
117 | 117 | ||
@@ -129,7 +129,7 @@ send_string(my_str); | |||
129 | SEND_STRING(".."SS_TAP(X_END)); | 129 | SEND_STRING(".."SS_TAP(X_END)); |
130 | ``` | 130 | ``` |
131 | 131 | ||
132 | ## The old way: `MACRO()` & `action_get_macro` | 132 | ## The Old Way: `MACRO()` & `action_get_macro` |
133 | 133 | ||
134 | {% hint style='info' %} | 134 | {% hint style='info' %} |
135 | This is inherited from TMK, and hasn't been updated - it's recommend that you use `SEND_STRING` and `process_record_user` instead. | 135 | This is inherited from TMK, and hasn't been updated - it's recommend that you use `SEND_STRING` and `process_record_user` instead. |
@@ -166,7 +166,7 @@ A macro can include the following commands: | |||
166 | * W() wait (milliseconds). | 166 | * W() wait (milliseconds). |
167 | * END end mark. | 167 | * END end mark. |
168 | 168 | ||
169 | ### Mapping a Macro to a key | 169 | ### Mapping a Macro to a Key |
170 | 170 | ||
171 | Use the `M()` function within your `KEYMAP()` to call a macro. For example, here is the keymap for a 2-key keyboard: | 171 | Use the `M()` function within your `KEYMAP()` to call a macro. For example, here is the keymap for a 2-key keyboard: |
172 | 172 | ||
@@ -192,7 +192,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { | |||
192 | 192 | ||
193 | When you press the key on the left it will type "Hi!" and when you press the key on the right it will type "Bye!". | 193 | When you press the key on the left it will type "Hi!" and when you press the key on the right it will type "Bye!". |
194 | 194 | ||
195 | ### Naming your macros | 195 | ### Naming Your Macros |
196 | 196 | ||
197 | If you have a bunch of macros you want to refer to from your keymap while keeping the keymap easily readable you can name them using `#define` at the top of your file. | 197 | If you have a bunch of macros you want to refer to from your keymap while keeping the keymap easily readable you can name them using `#define` at the top of your file. |
198 | 198 | ||
@@ -207,7 +207,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
207 | }; | 207 | }; |
208 | ``` | 208 | ``` |
209 | 209 | ||
210 | ## Advanced macro functions | 210 | ## Advanced Macro Functions |
211 | 211 | ||
212 | There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple. | 212 | There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple. |
213 | 213 | ||
@@ -243,7 +243,7 @@ This will clear all mods currently pressed. | |||
243 | 243 | ||
244 | This will clear all keys besides the mods currently pressed. | 244 | This will clear all keys besides the mods currently pressed. |
245 | 245 | ||
246 | ## Advanced Example: Single-key copy/paste | 246 | ## Advanced Example: Single-Key Copy/Paste |
247 | 247 | ||
248 | This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released. | 248 | This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released. |
249 | 249 | ||
@@ -262,5 +262,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { | |||
262 | return MACRO_NONE; | 262 | return MACRO_NONE; |
263 | }; | 263 | }; |
264 | ``` | 264 | ``` |
265 | |||
266 | |||