Thanks for the great work you do on Electron. 🙏We love using Electron.

I'm setting up a MenuItem with an "accelerators" (keyboard shortcuts). I'm specifying the [`click` option](https://electronjs.org/docs/api/menu-item#new-menuitemoptions) to provide custom handling. In my analytics, I'd like to report the method the user used to trigger the MenuItem—mouse click or keyboard shortcut.

The `click` function I provide is called with these arguments: `(menuItem, browserWindow, event)`. The value of `event` is `{ shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }`. For accelerators that happen to include one of the keys in `event`, I'm able to derive that the user hit the keyboard shortcut (i.e. if the user hits the keyboard shortcut for `Command-C`, `event` will contain `metaKey: true`.

But some of my keyboard shortcuts are: `Up`, `Down`, `Enter`. If the user hits these keyboard shortcuts, I have no way to differentiate whether the user clicked the menu item with the mouse or hit the keyboard shortcut.

Is there a reliable way to differentiate mouse clicks vs. keyboard shortcut hits in a MenuItem?
atom/browser/api/event_emitter.cc
v8::Local<v8::Object> object,
                                    content::RenderFrameHost* sender,
                                    IPC::Message* message) {
  v8::Local<v8::Object> event;
  bool use_native_event = sender && message;
  if (use_native_event) {
    mate::Handle<mate::Event> native_event = mate::Event::Create(isolate);
    native_event->SetSenderAndMessage(sender, message);
    event = v8::Local<v8::Object>::Cast(native_event.ToV8());
  } else {
    event = CreateEventObject(isolate);
  }
  mate::Dictionary dict(isolate, event);
  dict.Set("sender", object);
  if (sender)
    dict.Set("frameId", sender->GetRoutingID());
  return event;
}
v8::Local<v8::Object> CreateCustomEvent(v8::Isolate* isolate,