Add keyIsInjected helper

So that the bits don't have to be masked and checked manually, like with the other helpers.

Signed-off-by: Florian Bruhin <me@the-compiler.org>
pull/1082/head
Florian Bruhin 3 years ago
parent 5b876f3e0f
commit 4a6aea650d

@ -127,7 +127,7 @@ EventHandlerResult AutoShift::onKeyswitchEvent(KeyEvent &event) {
// If event.addr is not a physical key, ignore it; some other plugin injected
// it. This check should be unnecessary.
if (!event.addr.isValid() || (event.state & INJECTED) != 0) {
if (!event.addr.isValid() || keyIsInjected(event.state)) {
return EventHandlerResult::OK;
}

@ -56,7 +56,7 @@ EventHandlerResult Cycle::onNameQuery() {
}
EventHandlerResult Cycle::onKeyEvent(KeyEvent &event) {
if (event.state & INJECTED)
if (keyIsInjected(event.state))
return EventHandlerResult::OK;
if (!isCycle(event.key)) {

@ -33,7 +33,7 @@ EventHandlerResult EscapeOneShot::onKeyEvent(KeyEvent &event) {
// sticky. Last, only if there are no OneShot keys currently being held.
if (event.key == cancel_oneshot_key_ &&
keyToggledOn(event.state) &&
(event.state & INJECTED) == 0 &&
!keyIsInjected(event.state) &&
::OneShot.isActive()) {
// Cancel all OneShot keys
::OneShot.cancel(true);

@ -144,7 +144,7 @@ EventHandlerResult Heatmap::onKeyEvent(KeyEvent &event) {
return EventHandlerResult::OK;
// if it is a synthetic key, skip it
if (event.state & INJECTED)
if (keyIsInjected(event.state))
return EventHandlerResult::OK;
// if the key is not toggled on, skip it

@ -68,7 +68,7 @@ EventHandlerResult AlphaSquareEffect::onKeyEvent(KeyEvent &event) {
if (::LEDControl.get_mode_index() != led_mode_id_)
return EventHandlerResult::OK;
if (event.state & INJECTED)
if (keyIsInjected(event.state))
return EventHandlerResult::OK;
if (event.key < Key_A || event.key > Key_0)

@ -215,7 +215,7 @@ EventHandlerResult OneShot::onKeyEvent(KeyEvent& event) {
// hook functions generate (by calling `injectNormalKey()` via one of the
// `*OneShot()` functions). There are more robust ways to do this, but since
// OneShot is intended to react to only physical keypresses, this is adequate.
if (event.state & INJECTED)
if (keyIsInjected(event.state))
return EventHandlerResult::OK;
bool temp = temp_addrs_.read(event.addr);

@ -48,7 +48,7 @@ EventHandlerResult Qukeys::onKeyswitchEvent(KeyEvent &event) {
}
// If event.addr is not a physical key, ignore it; some other plugin injected it.
if (! event.addr.isValid() || (event.state & INJECTED) != 0) {
if (! event.addr.isValid() || keyIsInjected(event.state)) {
return EventHandlerResult::OK;
}

@ -100,7 +100,7 @@ EventHandlerResult SpaceCadet::onKeyswitchEvent(KeyEvent &event) {
// If event.addr is not a physical key, ignore it; some other plugin injected
// it. This check should be unnecessary.
if (!event.addr.isValid() || (event.state & INJECTED) != 0) {
if (!event.addr.isValid() || keyIsInjected(event.state)) {
return EventHandlerResult::OK;
}

@ -68,7 +68,7 @@ EventHandlerResult Syster::onKeyEvent(KeyEvent &event) {
// Always ignore events marked as artificially injected (it might actually be
// better to drop this, but it's not really clear).
if (event.state & INJECTED)
if (keyIsInjected(event.state))
return EventHandlerResult::OK;
// If a Syster key gets pressed while we're reading an input sequence, ignore

@ -83,7 +83,7 @@ EventHandlerResult TapDance::onKeyswitchEvent(KeyEvent &event) {
}
// If event.addr is not a physical key, ignore it; some other plugin injected it.
if (! event.addr.isValid() || (event.state & INJECTED) != 0) {
if (! event.addr.isValid() || keyIsInjected(event.state)) {
return EventHandlerResult::OK;
}

@ -50,3 +50,9 @@
* "key-up" event.
*/
#define keyToggledOff(keyState) (keyWasPressed(keyState) && ! keyIsPressed(keyState))
/* keyIsInjected(): This is true if the key was marked as injected by another
* plugin, i.e. it was generated artificially instead of corresponding to a
* "real" keypress.
*/
#define keyIsInjected(keyState) ((keyState) & INJECTED)

@ -44,7 +44,7 @@ namespace plugin {
class OneShotInsert : public Plugin {
public:
EventHandlerResult onKeyEvent(KeyEvent &event) {
if (keyToggledOn(event.state) && (event.state & INJECTED) == 0 &&
if (keyToggledOn(event.state) && !keyIsInjected(event.state) &&
event.key == Key_Insert && live_keys[event.addr] != event.key)
::OneShot.setPending(event.addr);
return EventHandlerResult::OK;

Loading…
Cancel
Save