Provided by:
manpages-zh_1.5.1-1_all 
NAME
keymaps - 對鍵盤映射檔案的描z
yz (DESCRIPTION)
loadkeys(1) 能夠 通過 調入 指定的 檔案 蚹 鍵盤翻譯表, 鍵盤翻譯表 通常
用於 核心的 鍵盤驅動程式; 另外 dumpkeys(1) 可以 根據 鍵盤翻譯表 產生
這些檔案.
這些檔案 的 結構 大體上 和 xmodmap(1) 的 輸入檔案 類似. 檔案 由
字符集(charset), 鍵定義(key), 和 串定義 組成, 可以 包含 注釋.
注釋行 以 ! 或 # 字符 開始, 到 行尾 結束, 忽略 其中 任何 字符. 注意,
注釋行 不需n 從 第一列 開始, 而 xmodmap(1) 有 這 n求.
鍵盤映射(keymap)檔案 是 惘V行 定義 的; 一 完整的定義 必須 在 一
邏輯行 上 闡明. 不過 邏輯行 可以 分割 在 多 物理行 上, 只需 在 各
物理行尾 添加 一 反斜槓 (\) 即可.
]t (INCLUDE FILES)
一 鍵盤映射表 可以 包含 其他 鍵盤映射表, 就像這樣:
include "pathname"
rwq (CHARSET DEFINITIONS)
字符集 定義 的 格式 是:
charset "iso-8859-x"
它 指出 如何 解釋 後悸 keysym. 例如, 在 iso-8859-1 中, 符號 mu (或
micro) 的 代碼是 0265, 而 iso-8859-7 中的 mu 是 0354.
wq (COMPLETE KEYCODE DEFINITIONS)
鍵(keycode) 的 完整定義 形式 如下:
keycode keynumber = keysym keysym keysym...
keynumber 是 按鍵的 內部 標識, 大P 相當於 它的 掃描碼(scan code).
keynumber 可以 用 十進制數, 八進制數, 或 十六進制數 表示. 八進制數 以
零 開始, 十六進制數 以 0x 開始.
keysym 表示 鍵盤 動作(action), 單 按鍵 可以 編聯(bind) 多至 256
動作. 動作 指 輸出 Latin1 字符 或 字符序列, 切換 控制台 或 鍵盤映射,
以及 垮珧 機器 等. (可以 用 dumpkeys(1) 獲得 完整的 列表, 如 dumpkeys
-l .)
在 keysym 前 加上 前綴 '+' (加號) 表明 這 keysym 是 字符, 因而 能夠
受到 CapLock 的 影響, 就像 Shift 的 作用 一樣 (CapLock 反轉 Shift 的
狀態). 預設情況下, 配合 CapLock 能夠 產生 ASCII 字母 'a'-'z' 和
'A'-'Z'. 如果 Shift+CapsLock 無法 產生 小寫字母, 試在 映射檔案 中 加入
keycode 30 = +a A
當 一 按鍵 按下時, 發生 什麼 事件 取決於 當時 袡Ⅸ(modifier)
起作用. 鍵盤驅動程式 支持 8 袡Ⅸ, 它怓O (任意順序) Shift, AltGr,
Control, Alt, ShiftL, ShiftR, CtrlL 和 CtrlR. 下 的 表格 列出 各
袡Ⅸ 對應的 權, 權 是 2 的 指數:
v_
Shift 1
AltGr 2
Control 4
Alt 8
ShiftL 16
ShiftR 32
CtrlL 64
CtrlR 128
按鍵 的 有效動作 通過 加權 獲得, 加權 是 有效袡Ⅸ 的 權M.
預設情況下 沒有 使用 袡Ⅸ, 對應的 動作代碼 是 0, 也就是說, 當一蚆
按下 或 彈起 時, 相應 動作 位於 鍵定義行 的 第一列. 又如, 如果 Shift 和
Alt 鍵 處於 有效狀態, 產生的 動作代碼 是 9 (對應 第十列).
通過 編聯 適當的 動作, 我 可以 改變 有效的 袡Ⅸ. 例如, 如果 對 某蚆
編聯了 名稱 Shift, 當 這蚆 按下 時, shift 袡Ⅸ 就 生效, 當 這蚆 彈起
時, shift 袡Ⅸ 狀態 就 解除. 如果 對 某蚆 編聯了 名稱 AltGr_Lock, 當
按下 這蚆 時, AltGr 袡Ⅸ 就 生效, 再次 按下 這蚆 就 解除 AltGr 袡Ⅸ
狀態. (預設情況下, Shift, AltGr, Control 和 Alt 編聯到 同名 按鍵 上;
AltGr 指 右側 Alt 鍵.)
注意, 編聯 袡Ⅸ 時 應該 非常 小心, 否則 鍵盤映射 可能 無法 使用.
例如, 如果 某蚆 的 第一列 定義為 Control, 其他列 定義為 VoidSymbol, 你
就 有麻煩 了. 因為 按下 這蚆 使 Control 袡Ⅸ 生效, 隨後 的 動作 應該
來自 第丹C (見上表). 因此 當 這蚆 彈起 時, 第丹C 的 動作 被 採用, 但
這裏 是 VoidSymbol, 什麼 都 不發生. 這意味著 儘管 你 已經 鬆開了 這蚆,
可是 Control 袡Ⅸ 仍然 有效. 反復 敲擊 這蚆 也 無濟於事. n 避免 這樣
的 事情, 你 應該 把 所有的 列 定義為 相同的 袡3, 為此 後 將n 介紹
一 常用的 縮寫.
keysym 可以 採用 十進制數, 八進制數, 十六進制數 或者 符號表示法.
數字表示 的 形式 和 keynumber 一樣, 而 符號表示 類似於 xmodmap(1) 中
用的. 需n注意 數字符號 的 區別. 數字符號 '0', ..., '9' 在 xmodmap(1)
中 被換成 對應的 單詞 'zero', 'one', ... 'nine', 防止 和 數字表示法
混淆.
在 keysym 中 使用 數字表示法 非常 不利於 移植, 這是 因為 不同 的
核心版本 之間, 各鍵 的 動作代碼 可能 不一樣, 因此 不鼓勵 使用
數字表示法, 除非 核心 支持的 某項 鍵盤動作 在 當前的 loadkeys(1) 中
沒有 對應的 符號名稱.
下 介紹 一些 縮寫 標記, 它 能夠 增加 可讀性, 減少 輸入量, 同時 也能
減少 輸入錯誤.
漸, 你 可以 給出 一 映射說明行, 如
keymaps 0-2,4-5,8,12
表明 鍵定義行 並不 使用 全部的 256 列, 而 只用 指定的 列. (本例為:
映射 plain, Shift, AltGr, Control, Control+Shift, Alt 和 Control+Alt,
只有 7 列, 而非 256 列.) 如果 沒有 定義 這樣的 映射說明行, 將 產生
預設 定義 keymaps 0-M, 此處的 M+1 是 所有 鍵定義行 中 發現 的 最大項數.
其次, 鍵定義行尾 的 VoidSymbol 項 可以 不出現. VoidSymbol 表示 一
鍵盤動作, 它 不產生 輸出, 也不出現 其他 效果. 例如, 把 30 號鍵 定義為
輸出 'a', 按下 Shift 時 輸出 'A', 按下 其他 袡Ⅸ 如 AltGr 之類 則
什麼都 不做, 你 可以 寫成
keycode 30 = a A
來 代替 冗長的
keycode 30 = a A VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol ...
為了方便, 你 可以 用 更簡潔 的 定義. 如果 鍵定義行 中, 等號 後 只有
一 動作碼, 它 就可以 擁有 額外的 含義. 如果 這 動作碼 (數字 或 符號
形式) 不是 一 ASCII 字符, 這 意味著 該 動作碼 在 所有 定義了的 行 上
有效. 反過來, 如果 動作碼 是 ASCII 字符, 位於 'a', ..., 'z' 或 'A',
..., 'Z' 之間, 對於 不同的 袡Ⅸ銌捰X, 有 如下 定義 (下表 列出 兩種
可能情況: 動作碼 是 一 小寫字母, 表示為 'x', 或者是 一 大寫字母,
表示為 'Y'.)
modifier symbol
none x Y
Shift X y
AltGr x Y
Shift+AltGr X y
Control Control_x Control_y
Shift+Control Control_x Control_y
AltGr+Control Control_x Control_y
Shift+AltGr+Control Control_x Control_y
Alt Meta_x Meta_Y
Shift+Alt Meta_X Meta_y
AltGr+Alt Meta_x Meta_Y
Shift+AltGr+Alt Meta_X Meta_y
Control+Alt Meta_Control_x Meta_Control_y
Shift+Control+Alt Meta_Control_x Meta_Control_y
AltGr+Control+Alt Meta_Control_x Meta_Control_y
Shift+AltGr+Control+Alt Meta_Control_x Meta_Control_y
@wq (SINGLE MODIFIER DEFINITIONS)
上z 鍵定義行 的 格式 總n 定義 全部 M+1 可能的 組合, 無論 該行 是不是
真的 有 那麼多 動作. 然而 還有 另一種 語法定義, 用來說明 只產生 一
動作 的 特定鍵組合. 如果 你的 鍵盤映射 只有 少數 不符合 需n, 如
AltGr+function 鍵, 這 弁 就特別 有用. 你 可以 製作 一 小型檔案, 在
調入 鍵盤映射檔案 後 咿w義 所需的 映射. 這種 形式 的 語法 是:
{ plain | <modifier sequence> } keycode keynumber = keysym
例如:
plain keycode 14 = BackSpace
control alt keycode 83 = Boot
alt keycode 105 = Decr_Console
alt keycode 106 = Incr_Console
這裏的 "plain" 指 該鍵的 基本動作 (就是說, 沒有 使用 袡Ⅸ 時), 不影響
該鍵 的 其他 袡Ⅸ 組合.
rwq (STRING DEFINITIONS)
除了 注釋 和 鍵定義行, 鍵盤映射表 還包含 字符串定義. 它 用於 定義 各
弁鉡(function key) 的 動作碼 輸出 些 什麼. 字符串定義 的 語法 是:
string keysym = "text"
text 包括 文本字符, 八進制字符, 或者 三 escape 序列: \n, \\, 和 \",
分別 代表 換行, 反斜槓, 和 引號. 八進制字符 的 格式 是 反斜槓 後
列出的 八進制數字, 最多 三 八進制數字.
Xwq (COMPOSE DEFINITIONS)
組合(鍵)定義 的 語法 是:
compose 'char' 'char' to 'char'
描z 兩 字節 怎樣 組合成 第三者 (當 使用 少見的 聲調符 或 組合鍵 時).
它 常用來 在 標準鍵盤 上 輸入 聲調符 之類.
Yg (ABBREVIATIONS)
從 kbd-0.96 開始 可以 使用 多種 縮寫.
strings as usual
定義 常用 字符串 (而不是 它 編聯的 鍵).
compose as usual for "iso-8859-1"
定義 常用 compose 組合.
如果 想n 知道 些 keysym 能夠 用在 鍵盤映射表 中, 請 使用
dumpkeys --long-info
遺憾的是, 目前 仍然 沒有 對 各 符號 的 說明. 您 可以 從 符號名稱 上
推測, 或者 參考 核心源程式.
(EXAMPLES)
(小心 使用 keymaps 行, 如 `dumpkeys` 顯示的 第一行, 或者 "keymaps 0-15"
之類)
下悸 輸入項 交換 左側 Control 鍵 和 Caps Lock 鍵 的 弁:
keycode 58 = Control
keycode 29 = Caps_Lock
正常的時, 鍵 58 是 Caps Lock, 鍵 29 是 Control 鍵.
下悸 輸入項 使 Shift 鍵 和 CapsLock 鍵 更好用 一點, 像 老式 打字機.
就是說, 按下 Caps Lock 鍵 (一次 多次 皆可) 使 鍵盤 進入 CapsLock 狀態,
按 任一 Shift 鍵 解除 該 狀態:
keycode 42 = Uncaps_Shift
keycode 54 = Uncaps_Shift
keycode 58 = Caps_On
下悸 輸入項 設置 增強形鍵盤 的 編輯鍵, 使 它 更像是 VT200 系列 終端:
keycode 102 = Insert
keycode 104 = Remove
keycode 107 = Prior
shift keycode 107 = Scroll_Backward
keycode 110 = Find
keycode 111 = Select
control alt keycode 111 = Boot
control altgr keycode 111 = Boot
下惇O 一 示範, 將 字符串 "du\ndf\n" 和 AltGr-D 編聯. 我 使用了
"空閒的" 動作碼 F100, 通常 它 沒有被 使用:
altgr keycode 32 = F100
string F100 = "du\ndf\n"
t (SEE ALSO)
loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1)
[]
} <xuming@users.sourceforge.net>
[]
2003/05/13
mLinuxanhttp://cmpp.linuxforum.net
24 April 1998 KEYMAPS(5)