diff options
author | Drashna Jael're <drashna@live.com> | 2022-11-12 17:10:04 -0800 |
---|---|---|
committer | Drashna Jael're <drashna@live.com> | 2022-11-12 17:10:04 -0800 |
commit | 731633e133de428408cd313fbd65fb0a36145672 (patch) | |
tree | b788a9fe150a353ce20d338848d3dab2bbc42879 /users/ericgebhart/extensions/oneshot.h | |
parent | 6cc9513ab0cd5e21354c51ab83a89af9f2eb517e (diff) | |
parent | 2e39647618295e4a2ba685cfb8e3ab36622e92ee (diff) |
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'users/ericgebhart/extensions/oneshot.h')
-rw-r--r-- | users/ericgebhart/extensions/oneshot.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/users/ericgebhart/extensions/oneshot.h b/users/ericgebhart/extensions/oneshot.h new file mode 100644 index 0000000000..774dc4ab39 --- /dev/null +++ b/users/ericgebhart/extensions/oneshot.h @@ -0,0 +1,37 @@ +#define ENABLE_ONESHOT +#ifdef ENABLE_ONESHOT +#pragma once + +typedef enum { + ONESHOT_LCTL = 0, + ONESHOT_LSFT = 1, + ONESHOT_LALT = 2, + ONESHOT_LGUI = 3, + ONESHOT_RCTL = 4, + ONESHOT_RSFT = 5, + ONESHOT_RALT = 6, + ONESHOT_RGUI = 7, + ONESHOT_NONE = 8, + ONESHOT_MOD_COUNT = 8, +} oneshot_mod; + + +// This function should be called inside proces_record_user and does everything needed to get one shot modifiers working. +// Returns true if the keycode needs further handling, false otherwise. +int8_t update_oneshot_modifiers(uint16_t keycode, keyrecord_t *record, int8_t keycode_consumed); +int8_t turnoff_oneshot_modifiers(void); + +// TO BE IMPLEMENTED BY THE USER +// This function should return one of the oneshot_mod enumerations (see keymap.c implementation) +oneshot_mod get_modifier_for_trigger_key(uint16_t keycode); + +// TO BE IMPLEMENTED BY THE USER +// This function should return true for keycodes that must be ignored in the oneshot modifier behaviour. +// You probably want to ignore layer keys. Trigger keys don't need to be specified here. +bool is_oneshot_modifier_ignored_key(uint16_t keycode); + +// TO BE IMPLEMENTED BY THE USER +// This function should return true for keycodes that should reset all oneshot modifiers. +bool is_oneshot_modifier_cancel_key(uint16_t keycode); + +#endif |