OnKeyDown en un servicio? (Teclas directas globales)

Lo que básicamente estoy tratando de lograr es la personalización de teclas de acceso rápido globales o en otras palabras "las cosas sucederán cuando presiono ciertos botones no importa qué programa está actualmente en la parte superior".
Supongo que un servicio es necesario.

Tengo una prueba rápida y sucia que sólo me dice lo que se ha presionado que funcionará si es la ventana activa.

public boolean onKeyDown(int keyCode, KeyEvent event) { char pop; pop = (char)event.getUnicodeChar(); Toast.makeText(this, Character.toString(pop) , Toast.LENGTH_SHORT).show(); return super.onKeyDown(keyCode, event); } 

Pero, obviamente, si cambio de ventana o entrar en un cuadro de texto no funciona. Si lo pego directamente en un servicio (o un imputmethodservice) y lanzar dicho servicio no pasa nada. (Algunos permisos requeridos tal vez?) ¿Alguna sugerencia donde me voy mal? O una mejor manera de capturar qué botón se presiona?

¡Gracias!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.