onKeyDown en un servicio? (Teclas de acceso rápido globales)

Lo que básicamente estoy tratando de lograr es teclas de acceso rápido globales personalizadas o, en otras palabras, "las cosas sucederán cuando presione ciertos botones sin importar qué programa esté actualmente en la parte superior".
Supongo que se necesita un servicio.

Tengo una prueba rápida y sucia que solo me dice qué 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 la ventana o entro en un cuadro de texto, no funciona. Si lo pego directamente a un servicio (o un servicio de método de imput) y ejecuto dicho servicio, no sucede nada. (¿Se requieren algunos permisos tal vez?) ¿Alguna sugerencia en la que me estoy equivocando? ¿O una mejor manera de capturar qué botón se presiona?

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta