// ====================================================================== void ListHookedConsumer::Item::apply(const Params_KeyboardSpecialEventCallback& params) { if (params.key >= ConsumerKeyCode::VK__BEGIN__) { // Invalid keycode IOLOG_ERROR("%s invalid key:%d\n", __PRETTY_FUNCTION__, params.key.get()); return; } if (params.flags.isVirtualModifiersOn()) { IOLOG_ERROR("%s invalid flags:%d\n", __PRETTY_FUNCTION__, params.flags.get()); return; } // ------------------------------------------------------------ KeyboardSpecialEventCallback callback = orig_keyboardSpecialEventAction_; if (! callback) return; OSObject* target = orig_keyboardSpecialEventTarget_; if (! target) return; OSObject* sender = OSDynamicCast(OSObject, device_); if (! sender) return; const AbsoluteTime& ts = CommonData::getcurrent_ts(); OSObject* refcon = NULL; params.log("sending"); callback(target, params.eventType.get(), params.flags.get(), params.key.get(), params.flavor, params.guid, params.repeat, ts, sender, refcon); }
void remap_KeyboardSpecialEventCallback(Params_KeyboardSpecialEventCallback& params) { params.log(); RemapConsumerParams remapParams(params); // ------------------------------------------------------------ RemapClassManager::remap_consumer(remapParams); // ---------------------------------------- if (! remapParams.isremapped) { Params_KeyboardSpecialEventCallback::auto_ptr ptr(Params_KeyboardSpecialEventCallback::alloc(params.eventType, FlagStatus::makeFlags(), params.key, params.flavor, params.guid, false)); if (ptr) { KeyboardRepeat::set(*ptr); EventOutputQueue::FireConsumer::fire(*ptr); } } RemapFunc::PointingRelativeToScroll::cancelScroll(); }