<!--  As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->

### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->

* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:**
  * v7.0.0-nightly.20190614
* **Operating System:**
  * macOS 10.14.5
* **Last Known Working Electron version:**
  * none

### Expected Behavior
* Using an accelerator without a modifier to activate a menu item (e.g. pressing key 'B') should result in `triggeredByAccelerator: true`.
* Clicking on a menu item with a menu item (e.g. Shift+Click) should result in `triggeredByAccelerator:false`.

### Actual Behavior
* Using an accelerator without a modifier to activate a menu item (e.g. pressing key 'B') results in `triggeredByAccelerator: false`.
* Clicking on a menu item while holding down a modifier key (e.g. Shift+Click) results in `triggeredByAccelerator:true`.

### To Reproduce
Electron Fiddle gist: https://gist.github.com/19163d031cf3e35bb7b163bd2c39305c
```
{
    label: "Blade",
    id: "blade",
    accelerator: "B",
    click(a, b, e) {
        console.log(e);
    }
}
```
<!--
Your best chance of getting this bug looked at quickly is to provide a REPOSITORY that can be cloned and run.
-->

<!--
You can fork electron-quick-start (https://github.com/electron/electron-quick-start) and include a link to the branch with your changes.
-->

<!--
If you provide a URL, please list the commands required to clone/setup/run your repo e.g.
```sh
$ git clone $YOUR_URL -b $BRANCH
$ npm install
$ npm start || electron .
```
-->

### Screenshots
![image](https://user-images.githubusercontent.com/8472721/59542262-c5321b00-8eb9-11e9-9e8b-c891b20cfe77.png)

<!-- If applicable, add screenshots to help explain your problem. -->

### Additional Information
<!-- Add any other context about the problem here. -->
The property is currently derived from some event modifier flags (on Mac: `NSEvent.modifierFlags`). When using an accelerator with a modifier key, these flags are set and the property works as expected.

See:
```cpp
v8::Local<v8::Object> CreateEventFromFlags(v8::Isolate* isolate, int flags) {
  mate::Dictionary obj = mate::Dictionary::CreateEmpty(isolate);
  obj.Set("shiftKey", static_cast<bool>(flags & ui::EF_SHIFT_DOWN));
  obj.Set("ctrlKey", static_cast<bool>(flags & ui::EF_CONTROL_DOWN));
  obj.Set("altKey", static_cast<bool>(flags & ui::EF_ALT_DOWN));
  obj.Set("metaKey", static_cast<bool>(flags & ui::EF_COMMAND_DOWN));
  obj.Set("triggeredByAccelerator", static_cast<bool>(flags));
  return obj.GetHandle();
}
```
https://github.com/electron/electron/blob/master/atom/browser/api/event_emitter.cc#L85 

However, either triggering an accelerator without a modifier key (or clicking an accelerator with a modifier key) will give an invalid result. The `triggeredByAccelerator` logic should be decoupled from the modifier flags.

A better approach covering the edge case of not using a modifier is to use `NSEvent.type` to distinguish between a click or a keydown. Fix should go [here](https://github.com/electron/electron/blob/6f91af93433df4e9c0e7fb592e5b2dcb0b1c7888/atom/browser/ui/cocoa/atom_menu_controller.mm#L307).

cc @codebytere @erickzhao 
shell/browser/api/event_emitter.cc
v8::Isolate* isolate,
    v8::Local<v8::Object> object,
    content::RenderFrameHost* sender,
    base::Optional<electron::mojom::ElectronBrowser::MessageSyncCallback>
        callback) {
  v8::Local<v8::Object> event;
  bool use_native_event = sender && callback;
  if (use_native_event) {
    mate::Handle<mate::Event> native_event = mate::Event::Create(isolate);
    native_event->SetSenderAndMessage(sender, std::move(callback));
    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,