将按键发送到应用程序

时间:2016-02-29 00:06:36

标签: linux keyboard operating-system kernel interrupt-handling

当按下某个键时,键盘会向设备驱动程序发送信号,该驱动程序会中断CPU并运行中断处理程序。按下的键存储在映射到键盘中断的地址中。我的问题是:如果有多个进程说,编辑器和shell,内核如何决定接收到的按键属于哪一个?我的意思是这个按键是如何进入它的目的地的?

当按键进入多个进程时还有办法吗?

2 个答案:

答案 0 :(得分:1)

我建议阅读evdev和X11,evdev是linux内核中用于调度输入事件的机制(如键盘)X11是窗口管理器。

在多窗口环境(即非VT)中,窗口管理器(X11)也确定按键的路由位置。像xdotool这样的东西应该能够一次向多个窗口发送击键。 Wayland将取代X11我不太了解它是如何工作的,但它也使用了evdev。

答案 1 :(得分:1)

这是我在阅读一些资源后发现的:

有一种叫做Foreground进程组的东西,其中一个会话中的进程组中最多只有一个可以是该进程的前台进程组。 tty输入和tty信号(由^ C,^ Z等生成)进入此前台进程组中的进程。