**Is your feature request related to a problem? Please describe.**
The Caps Lock and Fn keys are useful to some, and not others. I would greatly enjoy being able to use these keys as modifiers for something more useful to me.

**Describe the solution you'd like**
Add global shortcuts support for the cap locks and fn keys. While these keys are not useless and are not proper modifier keys, I feel that the design choice should be left to the app developer.

**Describe alternatives you've considered**
The only alternative would be to use a keypress listener/sender to 'remap' the key to something Electron supports; or substitute electron's shortcut functionality completely.

**Additional context**
Using a 3rd party keypress listener does not feel safe.
atom/common/keyboard_util.cc
int flags = 0;
  if (modifiers & blink::WebInputEvent::kShiftKey)
    flags |= ui::EF_SHIFT_DOWN;
  if (modifiers & blink::WebInputEvent::kControlKey)
    flags |= ui::EF_CONTROL_DOWN;
  if (modifiers & blink::WebInputEvent::kAltKey)
    flags |= ui::EF_ALT_DOWN;
  if (modifiers & blink::WebInputEvent::kMetaKey)
    flags |= ui::EF_COMMAND_DOWN;
  if (modifiers & blink::WebInputEvent::kCapsLockOn)
    flags |= ui::EF_CAPS_LOCK_ON;
  if (modifiers & blink::WebInputEvent::kNumLockOn)
    flags |= ui::EF_NUM_LOCK_ON;
  if (modifiers & blink::WebInputEvent::kScrollLockOn)
    flags |= ui::EF_SCROLL_LOCK_ON;
  if (modifiers & blink::WebInputEvent::kLeftButtonDown)
    flags |= ui::EF_LEFT_MOUSE_BUTTON;
  if (modifiers & blink::WebInputEvent::kMiddleButtonDown)
    flags |= ui::EF_MIDDLE_MOUSE_BUTTON;
  if (modifiers & blink::WebInputEvent::kRightButtonDown)
    flags |= ui::EF_RIGHT_MOUSE_BUTTON;
  if (modifiers & blink::WebInputEvent::kIsAutoRepeat)
    flags |= ui::EF_IS_REPEAT;
  return flags;
}
}