當您按下鍵盤上的額外按鍵時會發生什麼?

當您按下鍵盤上的額外按鍵時會發生什麼?

我有興趣了解帶有額外按鍵的鍵盤如何運作。例如,假設我有以下鍵盤:

在此輸入影像描述

您可以看到它有額外的按鍵。現在說我按了沉默的關鍵,這種情況下會發生什麼事?

這就是我認為發生的情況:

  • 訊號將被發送到計算機。
  • 鍵盤裝置驅動程式將接收該訊號。
  • 鍵盤裝置驅動程式將看到該訊號是靜音訊號,因此它不會將其傳遞給作業系統,而是呼叫作業系統函數/系統呼叫來使電腦上的聲音靜音。

我對麼?

答案1

輸入層的非常簡短的概述:

您的鍵盤裝置以某種方式連接到 PC,例如透過 USB 或 PS/2 連接埠。此機制的核心驅動程式知道如何在按下鍵盤上的按鍵時處理通訊。

對於 USB 鍵盤,有一個標準稱為高壓氣體放電管(人機介面設備)存在。這不僅適用於鍵盤,也適用於滑鼠、操縱桿和其他輸入裝置。所以該設備將有一個描述符告訴核心它可以發出什麼樣的訊號,以及很多鍵的程式碼,包括沉默的是標準化的。

儘管如此,某些鍵盤的按鍵並未標準化(例如Fn某些鍵盤上的按鍵),這取決於製造商如何向這些按鍵發出信號。

核心中有一個特殊層用於處理 HID 設備。此層使原始 HID 通訊在 處可用/dev/hidrawX,然後繼續將 HID 事件轉換為核心輸入事件。

內核輸入層採用掃碼(與實體密鑰相對應的數字,該設備唯一)並將它們轉換為關鍵程式碼(與所有設備上標準化的邏輯鍵相對應的數字)。兩者都作為事件提供/dev/input/eventX。您可以使用evdev檢視這些事件, 和showkey等待dumpkeys檢視轉換表。

X 伺服器(或 Wayland)讀取所有這些事件,並將它們轉換為關鍵符號(如 等aá或特殊的,如AudioMute)。 X 應用程式可以接收此符號,並採取相應的行動。您可以使用 see application來查看該層,並xev使用.xmodmapxkbdxorg.conf

為了對 做出反應AudioMute,需要一些應用程式。通常,這是視窗管理器,但如果您的視窗管理器不這樣做,單獨的應用程式也可以工作。

所以沒有單一的“鍵盤驅動程式”,它要複雜得多,並且沒有特別要求“靜音”。

答案2

一般來說,你的理解是正確的。當您按下某個按鍵時,鍵盤會發送一個掃描碼,基本上是識別每個按鍵的數字序列。掃描碼映射到鍵碼。每個鍵碼對應一個函數,該函數定義程式應如何對特定按鍵做出反應。請注意,Xorg 和控制台使用不同的鍵碼集。我對 Wayland 不太了解,但也許它也使用自己的一組鍵碼。鍵碼映射到鍵符號。鍵符號允許開發人員在更高的抽象層級上使用鍵盤。

showkey --scancode您可以透過分別執行和在控制台上看到掃描碼和鍵碼showkey --keycode。在 Xorg 中,您應該使用xev後者。

這些抽象層級可讓您建立靈活且複雜的映射方案,從而影響 Linux 環境的不同部分。這ArchWiki 文章包含大量有關繪圖技術的信息,如果您想了解更多信息,請閱讀它。

還有很多文章網路上解釋鍵盤如何在底層運作的。文章是在 1999 年還是 2010 年撰寫並不重要 - 從那時起,鍵盤方面並沒有發生太多變化,但請記住,USB HID 設備的工作方式與“經典”PS/2 鍵盤不同。

相關內容