57 lines
2.0 KiB

# OneShot Meta Keys
This plugin provides support for two special OneShot keys:
`OneShot_MetaStickyKey` & `OneShot_ActiveStickyKey`, each of which can be used
to make any key on the keyboard (not just modifiers and layer shift keys)
"sticky", so that they remain active even after the key has been released.
These are both `Key` values that can be used as entries in your sketch's keymap.
Any keys made sticky in this way can be released just like OneShot modifier
keys, by tapping them again to cancel the effect.
## The `OneShot_MetaStickyKey`
This special OneShot key behaves like other OneShot keys, but its affect is to
make the next key pressed sticky. Tap `OneShot_MetaStickyKey`, then tap `X`, and
`X` will become sticky. Tap `X` again to deactivate it.
Double-tapping `OneShot_MetaStickyKey` will make it sticky, just like any other
OneShot key. A third tap will release the key.
## The `OneShot_ActiveStickyKey`
This special key doesn't act like a OneShot key, but instead makes any key(s)
currently held (or otherwise active) sticky. Press (and hold) `X`, tap
`OneShot_ActiveStickyKey`, then release `X`, and `X` will stay active until it
is tapped again to deactivate it.
## Using the plugin
To use the plugin, just include one of the two special OneShot keys somewhere in
your keymap, and add both OneShot and OneShotMetaKeys to your sketch:
```c++
#include <Kaleidoscope-OneShot.h>
#include <Kaleidoscope-OneShotMetaKeys.h>
// somewhere in the keymap...
OneShot_MetaStickyKey, OneShot_ActiveStickyKey
KALEIDOSCOPE_INIT_PLUGINS(OneShot, OneShotMetaKeys);
```
Important note: OneShotMetaKeys _must_ be registered after OneShot in
`KALEIDOSCOPE_INIT_PLUGINS()` in order to function properly.
## Dependencies
* [Kaleidoscope-OneShot](Kaleidoscope-OneShot.md)
* [Kaleidoscope-Ranges](Kaleidoscope-Ranges.md)
## Further reading
Starting from the [example][plugin:example] is the recommended way of getting
started with the plugin.
[plugin:example]: /examples/Keystrokes/OneShotMetaKeys/OneShotMetaKeys.ino