src/experimentations/README.md
| API | supports modifiers-only shortcuts | event propagation | works through Secure Input | can work from background thread | Requires Input Monitoring permission |
|---|---|---|---|---|---|
CGEvent.tapCreate | Yes | Can propagate or not | No (modifiers work) | Yes | No |
RegisterEventHotKey/InstallEventHandler | No | Can't propagate; but not needed | Yes | No | No |
NSEvent.addGlobalMonitorForEvents | Yes | Can't propagate | No (modifiers work) | No | No |
CGSSetHotModifierWithExclusion + CGSSetHotKeyWithExclusion | Yes | Can't propagate | Yes | No | No |
IOHIDManagerRegisterInputValueCallback | Yes | ? | No (modifiers work) | Yes | Yes |
Also to consider:
shift.
Calling NSEvent.modifierFlags can return that shift is down, or that it's not down. It's data-racy.