Provided by: manpages-zh_1.5.1-1_all bug

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)