linux键盘映射默认,Linux 中的键盘映射【转】
對于英語來說,鍵盤上的字母鍵直接和英語字母表中的字母對應(yīng),但是對于非英語的語種來說,情況就不太一樣了。例如,德語中的“?”字母就沒有直接的鍵和它對應(yīng),為此,Linux 提供“鍵盤映射”或“鍵盤翻譯”,利用鍵盤映射可將某些鍵轉(zhuǎn)換為特殊鍵。
前面提到,X Window 直接處理了鍵盤的輸入輸出端口,因此,在 Linux 虛擬控制臺下和 X Window 下使用不同的鍵盤映射方法。在 Linux 虛擬控制臺上,可利用 loadkeys 命令將特殊按鍵映射為特殊字符;而在 X Window 中,必須使用 xmodmap 命令完成鍵盤映射。這些命令均按照字符映射表文件(文本文件)中的規(guī)定完成相應(yīng)的轉(zhuǎn)換。在 X Window 啟動時,它會參考 Linux 文本模式下的字符映射表,因此可獲得某些一致的鍵映射。
字符映射表文件保存在 /usr/lib/kbd/keytables 目錄下,defkeymap.map 是默認(rèn)的字符映射表文件。利用命令:
$ loadkeys fr.map
可裝入 fr.map 所規(guī)定的字符映射表。這時,按下“.”會顯示“:”。命令
$ loadkeys –d
可裝入默認(rèn)字符映射表。對于非默認(rèn)的鍵盤映射,可在啟動時在 shell 腳本中裝入特殊的映射表。
對X Window 而言,它對鍵盤的處理過程分如下兩個步驟:
1.X Server 首先將鍵碼轉(zhuǎn)換為鍵符號名(keysym)。文件 /usr/include/X11/keysymdef.h 中包含所有的符號名。X Server 能夠區(qū)分修飾鍵帶來的不同,因為 keysymdef.h 中區(qū)分了兩種不同的鍵,例如對“a”和“A”,分別用“KS_a”和“KS_A”定義。
2.X Server 將鍵符號翻譯為 ASCII 字符串。對于大多數(shù)的鍵來說,該字符串只包含一個字符,而對于功能鍵等特殊按鍵來說,則包含多個字符。例如,F5 鍵對應(yīng)的默認(rèn) ASCII 字符串為 “5~”。
利用 xmodmap 工具可修改鍵盤和鍵符號名之間的對應(yīng)關(guān)系。例如,X Window 中“A”的鍵碼為 30,而“Q”的鍵碼為16。如果建立文件 maptest:
keycode 38 = A
keycode 24 = Q
在 xterm 中運行
$ xmodmap maptest
之后,將發(fā)現(xiàn)“A”鍵和“Q”鍵交換了過來。
上述的 maptest 文件實際就是一個簡單的 X Window 映射文件。但需要注意的是,文件中的 keycode 和 Linux 內(nèi)核對鍵值的定義是不一樣的,一般而言,X Window 中的鍵碼要比內(nèi)核的鍵值大 8。利用 showkey 命令可以查看內(nèi)核對鍵值的定義。例如,運行 showkey 并前后按下“A”和“Q”后,程序的輸出為:
$ showkey
kb mode was RAW
...
keycode 30 press
keycode 30 press
keycode 16 press
keycode 16 press
該程序給出的是“A”和“Q”的內(nèi)核鍵值。
在 XF86Config 文件中,Keyboard 段用來指定鍵盤參數(shù),一般而言,這些參數(shù)不需要特殊設(shè)置:
Section “Keyboard”
Protocol??? “Standard”
AutoRepeat 500 5
EndSection
總結(jié)
以上是生活随笔為你收集整理的linux键盘映射默认,Linux 中的键盘映射【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虽然不舍但是事实 —— 纪念下 Java
- 下一篇: OpenGL ES 3.1 Androi