summaryrefslogtreecommitdiffstats
path: root/tmk_core/common/action.c
AgeCommit message (Collapse)AuthorFilesLines
2018-05-14Allow one-shot modifiers to be chainedGergely Nagy1-3/+3
Many a times one would want to use multiple modifiers with the same key, preferably without having to hold anything, like `Ctrl+Shift+C` or `Ctrl+Shift+V` to copy/paste in GNOME Terminal. To make this possible, we need to be able to chain one-shot modifiers, so that we can have multiple of them active at the same time. The easiest way to accomplish this is that whenever we activate a one-shot modifier, we apply it on top of the existing set, instead of re-setting the state. When deactivating, either due to an interrupt, or due to a timeout, we deactivate all oneshots anyway, so the clearing part is covered. When we turn the one-shot modifier into a toggle, that will also clear all one-shot modifiers first, so we covered that case too. Fixes #2796, #1580, and #856. Signed-off-by: Gergely Nagy <qmk@gergo.csillger.hu>
2018-03-22Generate API docs from source code comments (#2491)skullydazed1-5/+58
* Generate api docs from source code * Add a bunch of doxygen comments * more doxygen comments * Add the in-progress api docs * script to generate docs from travis * Add doc generation to the travis job * make travis_docs.sh commit the work it does * make sure the docs script exits cleanly
2018-03-16Fix swap-hands tapping.Joe Wasson1-4/+40
This is an inelegant hack for #2522 but makes things work. Basically we give `action.c` a chance to handle the hold event early so that we can swap the keyboard for later keys. Later, to allow the hold to happen again quickly we nuke the key record so that tapping is reset. I tried to find a cleaner way, honestly.
2018-03-16Rename ONEHAND_ENABLE to SWAP_HANDS_ENABLE for consistencyJoe Wasson1-3/+3
2018-01-01backlight breathing overhaul (#2187)Balz Guenat1-2/+5
* add breathing to bananasplit * backlight breathing overhaul * fix the backlight_tick thing. * fix for vision_division backlight * fix a few keymaps and probably break breathing for some weirdly set-up boards. * remove BL_x keycodes because they made unreasonable assumptions * some fixes for BL keycodes * integer cie lightness scaling * use cie lightness for non-breathing backlight and make breathing able to reach true max brightness
2017-10-31RETRO_TAPPING (#1922)tsankuanglee1-3/+36
* add RETRO_TAP: tap anyway, even after TAP_TERM, if no interruption * consistent variable name * add option doc * change name for consistency * make RETRO_TAPPING default to off
2017-10-10#1792 added in waits from tmk for locking switchesJoe Martin1-0/+3
fixes #1792
2017-06-18Remove noisy debug lineCarlos Quiroz1-1/+0
2017-06-18Deactivate oneshot mods once timedoutCarlos Quiroz1-0/+3
2017-05-29Re-enable mouse buttonsJack Humbert1-4/+6
2017-05-26- Added integration of IBM Trackpointdbroqua1-4/+30
2017-05-20Workaround for the macOS caps lock delay (#1308)jerryen1-0/+4
* Add 80ms delay for KC_CAPS when used as a tap key Workaround for the macOS caps lock delay * Revert "Increase TAPPING_TERM for the Clueboard" This reverts commit a74e69e9fa889113ee31fbc8dc7e6848fdb07576.
2017-05-10Call led_set for layer action events to update LEDs on layer changesNephiel1-0/+15
2017-04-13Fix warnings when ACTION_ONESHOT is disabledFred Sundvik1-1/+1
2017-02-13Implement faux-clicky featurePriyadi Iman Nurcahyo1-0/+13
2017-01-29moved oneshot cancellation code outside of process_record.SjB1-8/+8
The oneshot cancellation code do not depend on the action_tapping_process and since process_record get called via the action_tapping_process logic moved the oneshot cancellation code into the action_exec function just before the action_tapping_process call
2017-01-16oneshot timeout would only timeout after an event.SjB1-7/+7
After setting a ONESHOT_TIMEOUT value, the oneshot layer state would not expire without an event being triggered (key pressed). The reason was that in the process_record function we would return priort to execute the process_action function if it detected a NOEVENT cycle. The process_action contained the codes to timeout the oneshot layer state. The codes to clear the oneshot layer state have been move just in front of where we check for the NOEVENT cycle in the process_record function.
2016-09-23Fix issue #772 Meh and Hyper not workingDidier Loiseau1-3/+4
2016-08-21Improve one-hand support by adding more actions and tap keys.Joe Wasson1-4/+53
2016-08-21Add one-hand support.Joe Wasson1-0/+33
This adds an action, `ACTION_SWAP_HANDS`, that swaps the the keys on the keyboard across a keymap-defined hemisphere in order to support one-hand typing without requiring a separate one-handed layer. See updated `doc/keymap.md` for more information.
2016-05-15splits process_action up to handle records separately (#329)Jack Humbert1-21/+26
* implements leader key for planck experimental * allows override of leader timeout * adds ability to use the leader key in seq * fixes leader keycode * adds chording prototype * fixes keycode detection * moves music mode to quantum.c * disables chording by default * adds music sequencer functionality * implements audio/music functions in quantum.c * splits up process_action to allow independent processing of actions * merging?
2016-05-15Leader key implementation (#326)Erez Zukerman1-2/+5
* implements leader key for planck experimental * allows override of leader timeout * adds ability to use the leader key in seq * fixes leader keycode * adds chording prototype * fixes keycode detection * moves music mode to quantum.c * disables chording by default * updates process_action functions to return bool
2016-05-06Adds oneshot layer and oneshot tap toggling (#308)Thiago Alves1-8/+89
This commit is mostly a cherry-pick from `ahtn` at https://github.com/tmk/tmk_keyboard/pull/255. These are the changes: * Adds ACTION_LAYER_ONESHOT * Adds ONESHOT_TAP_TOGGLE * Mentions sticky keys in the docs on oneshot.
2016-04-29stops forcing debug_actionJack Humbert1-4/+4
2016-04-17Fixed many compiler warnings related to print being disabledIBNobody1-4/+4
2016-04-06Merge pull request #182 from Vifon/modifier-release-fixErez Zukerman1-1/+17
Fix the layer-dependent modifiers handling
2016-04-06Fix issue #221: LGUI(KC_LSFT) does not workDidier Loiseau1-2/+12
on mod keys, register LGUI, LSFT etc. as normal mods instead of weak mods: - they won't be cleared when pressing another key (#188) - they won't be cleared by layer switching - LSFT(KC_LGUI) will now have the same behavior as LGUI(KC_LSFT)
2016-04-05Refactor the source layer cache encodingWojciech Siewierski1-41/+0
2016-04-03Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware into ↵Wojciech Siewierski1-0/+10
modifier-release-fix
2016-04-02Cleanup after mergeWojciech Siewierski1-7/+13
- remove a superfluous parenthesis - wrap lines longer than 80 characters - add const specifiers where appropriate - remove unnecessary casts
2016-04-02Update action.celtang1-1/+1
2016-04-02Update action.celtang1-1/+1
2016-04-02Update action.celtang1-1/+1
2016-04-02Update action.celtang1-1/+1
2016-04-02Update action.celtang1-1/+1
2016-04-02Update action.celtang1-1/+2
2016-04-02Update action.cEric-L-T1-1/+1
2016-04-02Update action.cEric-L-T1-8/+8
2016-04-02Update action.cEric-L-T1-6/+6
2016-04-01Update action.cEric-L-T1-1/+1
2016-04-01Update action.cEric-L-T1-4/+15
2016-03-28Rename function to be keyboard-specificDamien Pollet1-2/+2
2016-03-28Add per-event user hook function to QMKDamien Pollet1-0/+5
2016-03-27Cut the memory consumption of PREVENT_STUCK_MODIFIERS in halfWojciech Siewierski1-3/+3
2016-03-15Expose the pressed_actions_cache global variableWojciech Siewierski1-4/+3
2016-03-15Always provide an implementation of process_action_nocacheWojciech Siewierski1-0/+5
2016-03-13process_action may be called either with key cache or without itWojciech Siewierski1-0/+15
If one wants to temporarily disable the key cache (for example because it interferes with a macro), `disable_action_cache` must be set to `true`. `process_action_nocache` is a simple wrapper doing just that for a single call.
2016-03-08Fix #156: clear weak mods on every key pressDidier Loiseau1-0/+5
- new macro_mods bit field for mods applied by macros - weak_mods now only used for ACT_{L,R}MODS (i.e. LSFT, RSFT, LCTL etc.) - clear the _weak_ mods on every key *pressed* such that LSFT etc. can no more interfere with the next key
2016-03-08Document the issue of stuck modifiersWojciech Siewierski1-1/+1
2016-03-05Fix the layer-dependent modifiers handlingWojciech Siewierski1-1/+21
Closes #181.