diff options
author | roguepullrequest <roguepullrequest@users.noreply.github.com> | 2019-04-14 13:32:11 -0500 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-04-14 11:32:11 -0700 |
commit | e7e13ebdd7dfa6b89326cc1b915539492153b648 (patch) | |
tree | 070d4a61f5eb8aef09ffa99f655f214b2db5090c /docs/feature_macros.md | |
parent | 02b74d521bf84ba776a5920289887ad418806311 (diff) | |
download | qmk_firmware-e7e13ebdd7dfa6b89326cc1b915539492153b648.tar.gz |
[Docs] Adding Alt↯Tab example macro (#5616)
Diffstat (limited to 'docs/feature_macros.md')
-rw-r--r-- | docs/feature_macros.md | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/docs/feature_macros.md b/docs/feature_macros.md index 743fc3ad5..fe45016e3 100644 --- a/docs/feature_macros.md +++ b/docs/feature_macros.md @@ -195,6 +195,49 @@ This will clear all mods currently pressed. This will clear all keys besides the mods currently pressed. +## Advanced Example: + +### Super ALT↯TAB + +This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows. + +```c +bool is_alt_tab_active = false; # ADD this near the begining of keymap.c +uint16_t alt_tab_timer = 0; # we will be using them soon. + +enum custom_keycodes { # Make sure have the awesome keycode ready + ALT_TAB = SAFE_RANGE, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { # This will do most of the grunt work with the keycodes. + case ALT_TAB: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { # The very important timer. + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + unregister_code16(LALT(KC_TAB)); + is_alt_tab_active = false; + } + } +} +``` + +--- ## **(DEPRECATED)** The Old Way: `MACRO()` & `action_get_macro` @@ -273,7 +316,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ``` -### Advanced Example: Single-Key Copy/Paste +## Advanced Example: + +### Single-Key Copy/Paste This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released. |