NAME
keymaps - 對 鍵 盤 映 射 文 件 的 描 述
描 述 (DESCRIPTION)
loadkeys(1) 能 夠 通 過 調 入 指 定 的 文 件 修 改 鍵 盤 翻 譯 表 , 鍵 盤 翻 譯 表 通 常 用 於 內 核 的 鍵 盤 驅 動 程 序 ; 另 外 dumpkeys(1) 可 以 根 據 鍵 盤 翻 譯 表 產 生 這 些 文 件 . 這 些 文 件 的 結 構 大 體 上 和 xmodmap(1) 的 輸 入 文 件 類 似 . 文 件 由 字 符 集 (charset), 鍵 定 義 (key), 和 串 定 義 組 成 , 可 以 包 含 註 釋 . 註 釋 行 以 ! 或 # 字 符 開 始 , 到 行 尾 結 束 , 忽 略 其 中 任 何 字 符 . 注 意 , 註 釋 行 不 需 要 從 第 一 列 開 始 , 而 xmodmap(1) 有 這 個 要 求 . 鍵 盤 映 射 (keymap)文 件 是 面 向 行 定 義 的 ; 一 個 完 整 的 定 義 必 須 在 一 個 邏 輯 行 上 闡 明 . 不 過 邏 輯 行 可 以 分 割 在 多 個 物 理 行 上 , 只 需 在 各 個 物 理 行 尾 添 加 一 個 反 斜 槓 (\) 即 可 .
包 含 文 件 (INCLUDE FILES)
一 個 鍵 盤 映 射 表 可 以 包 含 其 他 鍵 盤 映 射 表 , 就 象 這 樣 :
include "pathname"
字 符 集 定 義 (CHARSET DEFINITIONS)
字 符 集 定 義 的 格 式 是 :
charset "iso-8859-x" 它 指 出 如 何 解 釋 後 面 的 keysym. 例 如 , 在 iso-8859-1 中 , 符 號 mu (或 micro) 的 代 碼 是 0265, 而 iso-8859-7 中 的 mu 是 0354.
鍵 值 的 完 整 定 義 (COMPLETE KEYCODE DEFINITIONS)
鍵 值 (keycode) 的 完 整 定 義 形 式 如 下 :
keycode keynumber = keysym keysym keysym...
keynumber 是 按 鍵 的 內 部 標 識 值 , 大 致 相 當 於 它 的 掃 描 碼 (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 個 修 飾 鍵 , 它 們 是 (任 意 順 序 ) Shift, AltGr, Control, Alt, ShiftL, ShiftR, CtrlL 和 CtrlR. 下 面 的 表 格 列 出 各 個 修 飾 鍵 對 應 的 權 值 , 權 值 是 2 的 指 數 :
修 飾 鍵 權 值 |
||
Shift |
1
AltGr |
2 |
|||
Control |
4 |
|||
Alt |
8 |
|||
ShiftL |
16 |
|||
ShiftR |
32 |
|||
CtrlL |
64 |
|||
CtrlR |
128 |
按 鍵 的 有 效 動 作 通 過 加 權 值 獲 得 , 加 權 值 是 有 效 修 飾 鍵 的 權 值 和 . 缺 省 情 況 下 沒 有 使 用 修 飾 鍵 , 對 應 的 動 作 代 碼 是 0, 也 就 是 說 , 當 一 個 鍵 按 下 或 彈 起 時 , 相 應 動 作 位 於 鍵 定 義 行 的 第 一 列 . 又 如 , 如 果 Shift 和 Alt 鍵 處 於 有 效 狀 態 , 產 生 的 動 作 代 碼 是 9 (對 應 第 十 列 ). 通 過 編 聯 適 當 的 動 作 , 我 們 可 以 改 變 有 效 的 修 飾 鍵 . 例 如 , 如 果 對 某 個 鍵 編 聯 了 名 稱 Shift, 當 這 個 鍵 按 下 時 , shift 修 飾 鍵 就 生 效 , 當 這 個 鍵 彈 起 時 , shift 修 飾 鍵 狀 態 就 解 除 . 如 果 對 某 個 鍵 編 聯 了 名 稱 AltGr_Lock, 當 按 下 這 個 鍵 時 , AltGr 修 飾 鍵 就 生 效 , 再 次 按 下 這 個 鍵 就 解 除 AltGr 修 飾 鍵 狀 態 . (缺 省 情 況 下 , Shift, AltGr, Control 和 Alt 編 聯 到 同 名 按 鍵 上 ; AltGr 指 右 側 Alt 鍵 .) 注 意 , 編 聯 修 飾 鍵 時 應 該 非 常 小 心 , 否 則 鍵 盤 映 射 可 能 無 法 使 用 . 例 如 , 如 果 某 個 鍵 的 第 一 列 定 義 爲 Control, 其 他 列 定 義 爲 VoidSymbol, 你 就 有 麻 煩 了 . 因 爲 按 下 這 個 鍵 使 Control 修 飾 鍵 生 效 , 隨 後 的 動 作 應 該 來 自 第 五 列 (見 上 表 ). 因 此 當 這 個 鍵 彈 起 時 , 第 五 列 的 動 作 被 採 用 , 但 這 裏 是 VoidSymbol, 什 麼 都 不 發 生 . 這 意 味 着 儘 管 你 已 經 鬆 開 了 這 個 鍵 , 可 是 Control 修 飾 鍵 仍 然 有 效 . 反 覆 敲 擊 這 個 鍵 也 無 濟 於 事 . 要 避 免 這 樣 的 事 情 , 你 應 該 把 所 有 的 列 定 義 爲 相 同 的 修 飾 符 , 爲 此 後 面 將 要 介 紹 一 個 常 用 的 縮 寫 .
keysym 可 以 採 用 十 進 制 數 , 八 進 制 數 , 十 六 進 制 數 或 者 符 號 表 示 法 . 數 字 表 示 的 形 式 和 keynumber 一 樣 , 而 符 號 表 示 類 似 於 xmodmap(1) 中 用 的 . 需 要 注 意 數 字 符 號 的 區 別 . 數 字 符 號 ’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’, 或 者 是 一 個 大 寫 字 母 , 表 示 爲 ’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 |
單 一 修 飾 鍵 定 義 (SINGLE MODIFIER DEFINITIONS)
上 述 鍵 定 義 行 的 格 式 總 要 定 義 全 部 M+1 個 可 能 的 組 合 , 無 論 該 行 是 不 是 真 的 有 那 麼 多 動 作 . 然 而 還 有 另 一 種 語 法 定 義 , 用 來 說 明 只 產 生 一 個 動 作 的 特 定 鍵 組 合 . 如 果 你 的 鍵 盤 映 射 只 有 少 數 不 符 合 需 要 , 如 AltGr+function 鍵 , 這 個 功 能 就 特 別 有 用 . 你 可 以 製 作 一 個 小 型 文 件 , 在 調 入 鍵 盤 映 射 文 件 後 重 定 義 所 需 的 映 射 . 這 種 形 式 的 語 法 是 :
{ 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" 指 該 鍵
的 基 本 動 作 (就
是 說 , 沒 有 使 用
修 飾 鍵 時 ), 不 影
響 該 鍵 的 其 他
修 飾 鍵 組 合 .
字 符 串 定 義 (STRING DEFINITIONS)
除 了 註 釋 和 鍵 定 義 行 , 鍵 盤 映 射 表 還 包 含 字 符 串 定 義 . 它 們 用 於 定 義 各 個 功 能 鍵 (function key) 的 動 作 碼 輸 出 些 什 麼 . 字 符 串 定 義 的 語 法 是 :
string keysym = "text"
text 包 括 文 本 字 符 , 八 進 制 字 符 , 或 者 三 個 escape 序 列 : \n, \\, 和 \", 分 別 代 表 換 行 , 反 斜 槓 , 和 引 號 . 八 進 制 字 符 的 格 式 是 反 斜 槓 後 面 列 出 的 八 進 制 數 字 , 最 多 三 個 八 進 制 數 字 .
組 合 定 義 (COMPOSE DEFINITIONS)
組 合 (鍵 )定 義 的 語 法 是 :
compose ’char’ ’char’ to ’char’ 描 述 兩 個 字 節 怎 樣 組 合 成 第 三 者 (當 使 用 少 見 的 聲 調 符 或 組 合 鍵 時 ). 它 常 用 來 在 標 準 鍵 盤 上 輸 入 聲 調 符 之 類 .
縮 寫 (ABBREVIATIONS)
從 kbd-0.96 開 始 可 以 使 用 多 種 縮 寫 .
strings as usual
定 義 常 用 字 符
串 (而 不 是 它 們
編 聯 的 鍵 ).
compose as usual for "iso-8859-1" 定
義 常 用 compose 組 合 .
如 果 想 要 知 道
哪 些 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 下 面 是
一 個 示 範 , 將 字
符 串 "du\ndf\n" 和 AltGr-D
編 聯 . 我 們 使 用
了 "空 閒 的 " 動
作 碼 F100, 通 常 它 沒
有 被 使 用 :
altgr keycode
32 = F100
string F100 = "du\ndf\n"
另 見 (SEE ALSO)
loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1)
[中 文 版 維 護 人 ]
徐 明 <xuming [AT] users.net>
[中 文 版 最 新 更 新 ]
2003/05/13
《 中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 》
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh