
我一直很難理解 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 中有幾個特定的解釋層。
- 在最基本的層面上,每個按鍵事件都以數字鍵碼表示。
- XkbModel 與 XkbLayout 結合用於將給定的鍵碼與實際的鍵事件相關聯。例如,在我的鍵盤上,鍵碼 50 生成
Shift_L
. - 您可以選擇為鍵盤指定多個 XkbLayout,然後使用
XkbOptions
(通常儲存在 中的完整清單/usr/share/X11/xkb/rules
)來設定如何切換佈局。 (如果您想自學德沃夏克,或者您想在英語和俄語鍵盤佈局之間切換,這很有用)。 - 每個鍵碼都可以用多種方式解釋,這取決於所持有的修飾符。
xmodmap
讓您可以看到根據所持有的修飾符將發送哪些關鍵事件。
答案2
如今,控制台和 X 實際上可以協同工作。
我不知道這是否完全標準化,但在 Debian Unstable(可能還有其他具有最新 Xorg 和控制台工具的發行版)中,/etc/default/keyboard
允許您使用 X 樣式語法在控制台和 X - at 中設置鍵盤至少如果您使用控制台工具和控制台設定。其餘的就如克利所描述的。
答案3
有一些經典的問題,例如 vim 中退格鍵不起作用...
也許您正在談論 vim 的行為,即僅使用退格鍵刪除您在當前版本中鍵入的字符,並阻止您對進入編輯模式之前已經存在的字符執行此操作。
透過設定可以更改該行為:
set backspace=indent,eol,start