void DropAllKeys::cancelEventOutputQueueItems(EventOutputQueue::Item& item) { if (!doCancel_) { return; } auto& paramsBase = item.getParamsBase(); // Do not drop any modifier flags. if (paramsBase.isModifier()) return; { auto params = paramsBase.get_Params_KeyboardEventCallBack(); if (params && dropKey_) { dropKey(item); } } { auto params = paramsBase.get_Params_KeyboardSpecialEventCallback(); if (params && dropConsumerKey_) { dropKey(item); } } { auto params = paramsBase.get_Params_RelativePointerEventCallback(); if (params && dropPointingButton_) { if (modifierMatched_ && !(params->buttons).isNONE()) { item.cancel(); return; } } } }
void DropAllKeys::cancelEventOutputQueueItems(void) { if (!doCancel_) { return; } for (EventOutputQueue::Item* p = static_cast<EventOutputQueue::Item*>(EventOutputQueue::getQueue().safe_front()); p; p = static_cast<EventOutputQueue::Item*>(p->getnext())) { if (EventInputQueue::currentSerialNumber() != p->getEventInputQueueSerialNumber()) { continue; } // Do not cancel events which are pushed before this __DropAllKeys__. if (p->getAutogenId() < autogenId_) { continue; } auto& paramsBase = p->getParamsBase(); // Do not drop any modifier flags. if (paramsBase.isModifier()) continue; { auto params = paramsBase.get_Params_KeyboardEventCallBack(); if (params && dropKey_) { dropKey(*p); } } { auto params = paramsBase.get_Params_KeyboardSpecialEventCallback(); if (params && dropConsumerKey_) { dropKey(*p); } } { auto params = paramsBase.get_Params_RelativePointerEventCallback(); if (params && dropPointingButton_) { if (modifierMatched_ && !(params->buttons).isNONE()) { p->cancel(); return; } } } } doCancel_ = false; }
void DropKey::settle(RemapParams& remapParams) { if (fromModifierFlags_.empty()) { IOLOG_WARN("Ignore __DropKey__ with no ModifierFlag.\n"); return; } if (remapParams.isremapped) return; // Do not drop any modifier flags. if (remapParams.paramsBase.isModifier()) return; { auto params = remapParams.paramsBase.get_Params_KeyboardEventCallBack(); if (params && dropKey_) { dropKey(remapParams); return; } } { auto params = remapParams.paramsBase.get_Params_KeyboardSpecialEventCallback(); if (params && dropConsumerKey_) { dropKey(remapParams); return; } } { auto params = remapParams.paramsBase.get_Params_RelativePointerEventCallback(); if (params && dropPointingButton_) { if (FlagStatus::globalFlagStatus().isOn(fromModifierFlags_) && !(params->buttons).isNONE()) { remapParams.isremapped = true; return; } } } }