linux键盘映射默认,Linux 中的键盘映射【转】
對(duì)于英語來說,鍵盤上的字母鍵直接和英語字母表中的字母對(duì)應(yīng),但是對(duì)于非英語的語種來說,情況就不太一樣了。例如,德語中的“?”字母就沒有直接的鍵和它對(duì)應(yīng),為此,Linux 提供“鍵盤映射”或“鍵盤翻譯”,利用鍵盤映射可將某些鍵轉(zhuǎn)換為特殊鍵。
前面提到,X Window 直接處理了鍵盤的輸入輸出端口,因此,在 Linux 虛擬控制臺(tái)下和 X Window 下使用不同的鍵盤映射方法。在 Linux 虛擬控制臺(tái)上,可利用 loadkeys 命令將特殊按鍵映射為特殊字符;而在 X Window 中,必須使用 xmodmap 命令完成鍵盤映射。這些命令均按照字符映射表文件(文本文件)中的規(guī)定完成相應(yīng)的轉(zhuǎn)換。在 X Window 啟動(dòng)時(shí),它會(huì)參考 Linux 文本模式下的字符映射表,因此可獲得某些一致的鍵映射。
字符映射表文件保存在 /usr/lib/kbd/keytables 目錄下,defkeymap.map 是默認(rèn)的字符映射表文件。利用命令:
$ loadkeys fr.map
可裝入 fr.map 所規(guī)定的字符映射表。這時(shí),按下“.”會(huì)顯示“:”。命令
$ loadkeys –d
可裝入默認(rèn)字符映射表。對(duì)于非默認(rèn)的鍵盤映射,可在啟動(dòng)時(shí)在 shell 腳本中裝入特殊的映射表。
對(duì)X Window 而言,它對(duì)鍵盤的處理過程分如下兩個(gè)步驟:
1.X Server 首先將鍵碼轉(zhuǎn)換為鍵符號(hào)名(keysym)。文件 /usr/include/X11/keysymdef.h 中包含所有的符號(hào)名。X Server 能夠區(qū)分修飾鍵帶來的不同,因?yàn)?keysymdef.h 中區(qū)分了兩種不同的鍵,例如對(duì)“a”和“A”,分別用“KS_a”和“KS_A”定義。
2.X Server 將鍵符號(hào)翻譯為 ASCII 字符串。對(duì)于大多數(shù)的鍵來說,該字符串只包含一個(gè)字符,而對(duì)于功能鍵等特殊按鍵來說,則包含多個(gè)字符。例如,F5 鍵對(duì)應(yīng)的默認(rèn) ASCII 字符串為 “5~”。
利用 xmodmap 工具可修改鍵盤和鍵符號(hào)名之間的對(duì)應(yīng)關(guān)系。例如,X Window 中“A”的鍵碼為 30,而“Q”的鍵碼為16。如果建立文件 maptest:
keycode 38 = A
keycode 24 = Q
在 xterm 中運(yùn)行
$ xmodmap maptest
之后,將發(fā)現(xiàn)“A”鍵和“Q”鍵交換了過來。
上述的 maptest 文件實(shí)際就是一個(gè)簡單的 X Window 映射文件。但需要注意的是,文件中的 keycode 和 Linux 內(nèi)核對(duì)鍵值的定義是不一樣的,一般而言,X Window 中的鍵碼要比內(nèi)核的鍵值大 8。利用 showkey 命令可以查看內(nèi)核對(duì)鍵值的定義。例如,運(yùn)行 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
- 下一篇: linux下运行springboot项目