Manpages

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手 册 页 翻 译 计 划 》

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh