Cuando se presiona una tecla, el teclado envía una señal al controlador del dispositivo que interrumpe la CPU y se ejecuta el controlador de interrupciones. La tecla presionada se almacena en la dirección asignada a la interrupción del teclado. Mi pregunta es: si hay varios procesos, por ejemplo, editor y shell, ¿cómo decide el núcleo a cuál pertenece la pulsación de tecla recibida? Quiero decir, ¿cómo llega esta pulsación de tecla a su destino?
¿También hay alguna manera cuando la pulsación de tecla va a múltiples procesos?
Sugeriría leer sobre evdev y X11, evdev es el mecanismo dentro del kernel de Linux para enviar eventos de entrada (como el teclado) X11 es el administrador de ventanas.
En un entorno de ventanas múltiples (es decir, no en un VT), el administrador de ventanas (X11) también determina dónde se enruta la pulsación de tecla. Algo como xdotool debería poder enviar pulsaciones de teclas a varias ventanas a la vez. Wayland está programado para reemplazar a X11. No sé mucho sobre cómo funciona, pero también usa evdev.
Esto es lo que encontré después de leer algunos recursos:
Hay algo llamado grupos de procesos en primer plano, donde entre los grupos de procesos en una sesión, como máximo, uno puede ser el grupo de procesos en primer plano de esa sesión. La entrada tty y las señales tty (generadas por ^C, ^Z, etc.) van a procesos en este grupo de procesos en primer plano.