class AppDeleatate: NSObject, NSApplicationDelegate { fileprivate var optionalMenuItems = [NSMenuItem]() //... func applicationDidFinishLaunching(_ aNotification: Notification) { //... let specialItem = NSMenuItem(title: MenuBarItemLabelText.specialItem, action: #selector(doNeatAction), keyEquivalent: "") specialItem.isHidden = true optionalMenuItems.append(specialItem) //... } } //MARK: NSMenuDelegate + Option key shows additional menu items extension AppDelegate: NSMenuDelegate { func menuWillOpen(_ menu: NSMenu) { if menuObserver == nil { menuObserver = CFRunLoopObserverCreateWithHandler(nil, CFRunLoopActivity.beforeWaiting.rawValue, true, 0, { (observer, activity) in self.menuRecievedEvents() }) CFRunLoopAddObserver(CFRunLoopGetCurrent(), menuObserver, CFRunLoopMode.commonModes) } } func menuDidClose(_ menu: NSMenu) { guard menuObserver != nil else { return } CFRunLoopObserverInvalidate(menuObserver) menuObserver = nil } /// Will update the active menu. Used to update for events such as `OPTION` key presses. fileprivate func menuRecievedEvents() { // Get global modifier key flags let event = CGEvent(source: nil) let flags: CGEventFlags = event!.flags let optionKeyIsPressed = CGEventFlags(rawValue: flags.rawValue & CGEventFlags.maskAlternate.rawValue) == CGEventFlags.maskAlternate for item in optionalMenuItems { item.isHidden = !optionKeyIsPressed } } }