Linux 中的鍵盤映射如何運作?

Linux 中的鍵盤映射如何運作?

我一直很難理解 Linux 中鍵盤映射和相關事物的組合方式。

當事情出現問題時,如果我必須在無數過時的郵件列表和論壇帖子中篩選才能找到,我會感到熱血沸騰。一個命令或 inputrc 行可以解決我的問題。

Ctrl在切換終端類型之前,有一些經典問題,例如 vim 中的退格鍵不起作用,或者bash 中的 + 箭頭不起作用。或者我最近遇到的一個問題,在新的 Debian 安裝@密鑰中實際上打印", 並"打印@(鍵盤佈局錯誤?)

僅僅查看文件和工具並沒有太大幫助。輸入rc? xmodmap?設定xkbmap?控制台設定?我實際上從哪裡開始理解它是如何運作的,這樣我就不必嘗試別人的可疑命令來解決我的鍵盤問題?

答案1

這比應有的要複雜得多,但這是我的嘗試。

在最基本的層面上,核心知道如何識別鍵盤設備,並且理解鍵盤的概念。控制台鍵盤映射。這是配置鍵盤的最簡單方法,只需考慮一個變量,但這些設定僅會影響 Linux 文字控制台上的鍵盤輸入。

一旦你進入 Xorg,事情就會變得有點複雜,但它確實有意義。 Xorg 有幾個特定的概念,理解這些概念非常重要。

  • Xorg 直接與鍵盤裝置對話,繞過核心並忽略控制台上指定的鍵盤映射。
  • Xorg 允許您在 xorg.conf 檔案中為鍵盤設定一些特定選項,儘管當前的 Linux 發行版盡力在沒有任何 xorg.conf 檔案的情況下運行。根據您的 Xorg 版本,您可能需要在一個InputClass部分(對於較新版本的 Xorg)或一個InputDevice部分(對於舊版本)內指定您的 XkbLayout。
  • 當按鍵時,Xorg 中有幾個特定的解釋層。
  1. 在最基本的層面上,每個按鍵事件都以數字鍵碼表示。
  2. XkbModel 與 XkbLayout 結合用於將給定的鍵碼與實際的鍵事件相關聯。例如,在我的鍵盤上,鍵碼 50 生成Shift_L.
  3. 您可以選擇為鍵盤指定多個 XkbLayout,然後使用XkbOptions(通常儲存在 中的完整清單/usr/share/X11/xkb/rules)來設定如何切換佈局。 (如果您想自學德沃夏克,或者您想在英語和俄語鍵盤佈局之間切換,這很有用)。
  4. 每個鍵碼都可以用多種方式解釋,這取決於所持有的修飾符。xmodmap讓您可以看到根據所持有的修飾符將發送哪些關鍵事件。

答案2

如今,控制台和 X 實際上可以協同工作。

我不知道這是否完全標準化,但在 Debian Unstable(可能還有其他具有最新 Xorg 和控制台工具的發行版)中,/etc/default/keyboard允許您使用 X 樣式語法在控制台和 X - at 中設置鍵盤至少如果您使用控制台工具和控制台設定。其餘的就如克利所描述的。

答案3

有一些經典的問題,例如 vim 中退格鍵不起作用...

也許您正在談論 vim 的行為,即僅使用退格鍵刪除您在當前版本中鍵入的字符,並阻止您對進入編輯模式之前已經存在的字符執行此操作。

透過設定可以更改該行為:

set backspace=indent,eol,start

相關內容