Keyboard

鍵盤輸入編碼

  • January 11, 2020

我正在嘗試學習 Unicode 和 UTF-8 的基礎知識,到目前為止進展非常順利。我知道打開文件時可以選擇文件的編碼。

當我在文本編輯器( GeditVim )或命令提示符中使用鍵盤鍵入文本時,鍵盤向應用程序發送的編碼是什麼?Windows機器上有什麼不同嗎?可以配置嗎?

請參閱鍵盤輸入和文本輸出如何工作?有關該主題的概述。這取決於應用程序是在終端中執行還是直接與 GUI 環境對話。

在終端中,終端軟體(一般是本世紀的終端仿真器)決定了字元的編碼。它通過設置locale環境變數來傳達字元編碼(輸入和輸出相同)LC_CTYPE。如果此變數未設置或設置為C,則終端不提供任何資訊,因此應用程序無法知道編碼是什麼。在終端中,字元作為字元發送到應用程序;非字元輸入(功能鍵、游標鍵、帶有修飾符的鍵Alt等)作為轉義序列發送(其中一些作為控製字元)。

X11應用程序以KeyPress 事件的形式接收輸入。KeyPresss 事件包含一個低級指示(keycode大致對應於鍵的物理位置,並且state對活動修飾符進行編碼)。應用程序可以呼叫諸如XLookupString(傳統函式,僅限於 Latin-1)或XmbLookupString(支持其他單字節編碼的XwcLookupString函式)或(支持多字節編碼的函式)或Xutf8LookupString(現代 UTF-8 函式)之類的函式來將此原始資訊轉換為字元串.

從鍵到字元的映射可以在各個級別進行更改;鍵盤輸入和文本輸出如何工作?有一個概述。

引用自:https://unix.stackexchange.com/questions/358371