I need a low level keypress detection

I’m working on a window system and I need a centralized place that I can always detect if a key is pressed. I cannot use the PlayerController because when input mode is UIOnly the PlayerController does not get keypresses passed to it. I know that widgets do get keypresses in UIOnly mode, but only if the widget has focus. I need a place that can always detect a keypress regardless of input mode or focus.

Is there a way in C++ or Slate that I can get this?
Can I get it from the main application window / client viewport etc?
Any ideas would be much appreciated!

Thanks