2016-02-29 96 views
1

當按下某個按鍵時,鍵盤發送信號給設備驅動程序,中斷CPU和中斷處理程序運行。按下的鍵存儲在映射到鍵盤中斷的地址處。我的問題是:如果有多個進程說,編輯器和shell,內核如何確定接收到的按鍵屬於哪一個?我的意思是這個按鍵是如何到達目的地的?發送按鍵到應用程序

當按鍵進入多個進程時,還有辦法嗎?

+0

您是否在談論一個可以選擇多個應用程序的窗口系統,或者多個進程正在對同一個終端[窗口]執行I/O的情況? – user3344003

+0

它可以是任何有多個進程可以從鍵盤接收字符的系統。例如,在傳統的unix機器上,說gvim和shell是開放的。我的問題是內核決定如何顯示接收到的gvim或shell的字符。 –

+0

你需要閱讀窗口管理器和X11 – Matt

回答

1

我建議閱讀evdev和X11,evdev是Linux內核中用於調度輸入事件(比如鍵盤)的機制。X11是窗口管理器。

在多窗口環境(即不是VT)中,窗口管理器(X11)確定按鍵路由的位置。像xdotool這樣的應該能夠發送擊鍵到多個窗口一次。 Wayland將取代X11我不太瞭解它是如何工作的,但它也使用evdev。

1

這是我讀了一些資源後發現:

有一種叫做前臺進程組,最多的會話的過程組中,其中一個可能是會議的前臺進程組。 tty輸入和tty信號(由^ C,^ Z等生成)轉到該前臺進程組中的進程。

相關問題