Ejemplo n.º 1
0
  // ======================================================================
  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);
  }
Ejemplo n.º 2
0
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();
}