Imported upstream version 1.5
[manpages-zh.git] / src / man1 / xmodmap.1
blobcd949f23ecf90689a9e44804586ec44a3a2baeec
1 .\" $TOG: xmodmap.man /main/27 1997/04/02 09:22:54 kaleb $
2 .\" Copyright (c) 1988, 1989, 1990  X Consortium
3 .\" Copyright 1987 Sun Microsystems, Inc.
4 .\" 
5 .\" Permission is hereby granted, free of charge, to any person obtaining
6 .\" a copy of this software and associated documentation files (the
7 .\" "Software"), to deal in the Software without restriction, including
8 .\" without limitation the rights to use, copy, modify, merge, publish,
9 .\" distribute, sublicense, and/or sell copies of the Software, and to
10 .\" permit persons to whom the Software is furnished to do so, subject to
11 .\" the following conditions:
12 .\" 
13 .\" The above copyright notice and this permission notice shall be included
14 .\" in all copies or substantial portions of the Software.
15 .\" 
16 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 .\" OTHER DEALINGS IN THE SOFTWARE.
23 .\" 
24 .\" Except as contained in this notice, the name of the X Consortium shall
25 .\" not be used in advertising or otherwise to promote the sale, use or
26 .\" other dealings in this Software without prior written authorization
27 .\" from the X Consortium.
28 .\" $XFree86: xc/programs/xmodmap/xmodmap.man,v 1.1.1.3.2.2 1997/07/05 15:55:55 dawes Exp $
29 .de EX          \"Begin example
30 .ne 5
31 .if n .sp 1
32 .if t .sp .5
33 .nf
34 .in +.5i
36 .de EE
37 .fi
38 .in -.5i
39 .if n .sp 1
40 .if t .sp .5
42 .TH XMODMAP 1 "Release 6.3" "X Version 11"
43 .SH NAME
44 xmodmap - 在 X 环境中调节键盘映射和鼠标键映射
46 .SH "总览 (SYNOPSIS)"
47 .B xmodmap
48 [-options ...] [filename]
50 .SH "描述 (DESCRIPTION)"
51 .PP
52 \fIxmodmap\fP 用来 编辑 或 显示 键盘的
53 \fI修饰键映射(modifier map)\fP 和 \fI键盘映射表(keymap table)\fP,
54 客户程序 用 它们 把 键码(keycode) 事件 转换为 keysym. 通常 在 用户会话 的 
55 启动脚本 中 使用 \fIxmodmap\fP, 把 键盘 配置成 用户 喜爱的 风格.
57 .SH "选项 (OPTIONS)"
58 .PP
59 \fIxmodmap\fP 可以 使用 下列 选项:
60 .TP 8
61 .B \-display \fIdisplay\fP
62 这个选项 指定 主机 和 显示器.
64 .TP 8
65 .B \-help
66 这个选项 在 标准错误设备 显示 命令行参数 的 说明. 如果 出现了 无法识别 的
67 参数, 
68 .I xmodmap 
69 也会 执行 这个 功能.
71 .TP 8
72 .B \-grammar
73 这个选项 在 标准错误设备 显示 表达式 的 语法. 该语法 适用于 文件 或
74 \-e expression 选项.
76 .TP 8
77 .B \-verbose
78 这个选项 要求
79 .I xmodmap
80 在 分析 输入数据 的 时候 显示 日志信息.
82 .TP 8
83 .B \-quiet
84 这个选项 要求 关闭 verbose 日志信息. 这是 缺省选项.
86 .TP 8
87 .B \-n
88 这个选项 不要求
89 .I xmodmap
90 真的改变 (键盘,鼠标) 映射, 而只是 显示出 它 可能 做什么, 如同
91 \fImake(1)\fP 的 相同 选项 一样.
93 .TP 8
94 .B \-e \fIexpression\fB
95 这个选项 执行 一个 给定的 表达式. 命令行上 可以 指定 任何 数量 的 表达式.
97 .TP 8
98 .B \-pm
99 这个选项 要求 在 标准输出设备 显示 当前的 修饰键(modifier)映射.
101 .TP 8
102 .B \-pk
103 这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap).
105 .TP 8
106 .B \-pke
107 这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap). 输出格式
108 能够 作为 \fIxmodmap\fP 的 输入.
110 .TP 8
111 .B \-pp
112 这个选项 要求 在 标准输出设备 显示 当前的 鼠标(pointer)映射.
114 .TP 8
115 .B \-
116 单独的 短横线(-) 说明 把 标准输入设备 作为 输入文件 使用.
119 \fIfilename\fP 指定 一个文件, 其中 包含 \fIxmodmap\fP 将要 执行的 表达式.
120 这个文件 通常 命名为 \fI.xmodmaprc\fP, 存放在 用户的 根目录下.
122 .SH "语法 (EXPRESSION GRAMMAR)"
124 .I xmodmap
125 读入 一连串的 表达式, 在 执行 它们 以前, 对 所有 表达式 进行 分析.
126 这样 就可以 不用担心 重定义 的 keysym 出现 名字冲突.
128 .TP 8
129 .B keycode \fINUMBER\fP = \fIKEYSYMNAME ...\fP
130 把 这一串 keysym 赋于 指定的 键码.
131 (键码 可以是 十进制数, 十六进制数, 八进制数, 可以用 
132 .I xev 
133 程序 测出.)
135 .TP 8
136 .B keycode any = \fIKEYSYMNAME ...\fP
137 如果 不存在 分配了 上述 keysym 序列 的 键, \fIxmodmap\fP 就 选择 键盘上 的 
138 空闲键, 把 这些 keysym 分配 给 它. keysym 可以是 十进制数, 十六进制数 或者
139 八进制数.
141 .TP 8
142 .B keysym \fIKEYSYMNAME\fP = \fIKEYSYMNAME ...\fP
143 左边的 \fIKEYSYMNAME\fP 翻译为 对应的 键码, 该键码 应用于 相应的 
144 键码表达式集.
145 你 可以 在 头文件 \fI<X11/keysymdef.h>\fP 中 找到 keysym 的 名称列表
146 (去掉 \fIXK_\fP 前缀), 也可以 查 keysym 数据库 \fI<XRoot>/lib/X11/XKeysymDB\fP,
147 这里的 <XRoot> 指 X11 的 安装树. 注意, 如果 多个 键码 编联(bind)了 相同的 
148 keysym, 那么 每个 对应的 键码 都要 执行 这个 表达式.
150 .TP 8
151 .B clear \fIMODIFIERNAME\fP
152 删除 给定 修饰键 在 修饰键映射表 中 的 所有 表项, 修饰键 的 名字 有:
153 .BR Shift ,
154 .BR Lock ,
155 .BR Control ,
156 .BR Mod1 ,
157 .BR Mod2 ,
158 .BR Mod3 ,
159 .BR Mod4 ,
160 和 \fBMod5\fP (修饰键名字 不分 大小写, 但是 其他 名字 对 大小写 敏感).
161 例如, ``clear Lock'' 将 删除 所有 编联为 shift lock 的 键.
163 .TP 8
164 .B add \fIMODIFIERNAME\fP = \fIKEYSYMNAME ...\fP
165 这条语句 把 所有 包含 给定 keysym 的 键 加入到 指定的 修饰键映射表 中.
166 读取完 全部 输入表达式 之后, xmodmap 才分析 这些 keysym, 这样 有利于 
167 编写 一些 交换 键位 的 表达式. (见 EXAMPLES 节)
169 .TP 8
170 .B remove \fIMODIFIERNAME\fP = \fIKEYSYMNAME ...\fP
171 这条语句 在 指定的 修饰键映射表 中 删除 所有 包含 指定 keysym 的 键. 和
172 .B add
173 不同, xmodmap 每 读取 一行 就 执行 一行. 这样 可以 避免 考虑 这些键
174 是否 被 重分配过.
176 .TP 8
177 .B "pointer = default"
178 这条语句 把 鼠标映射 设置为 缺省值 (按键1 产生 代码1, 按键2 产生 代码2, 等等).
180 .TP 8
181 .B pointer = \fINUMBER ...\fP
182 这条语句 把 鼠标映射 设置为 指定的 按键代码. 这个 代码列表 总是 从 第一个
183 按键 开始.
186 注释行 以 感叹号(!) 开始.
189 如果 你 打算 改变 某个 修饰键 的 编联, 你 必须 把它 从 相应的
190 修饰键映射表 中 同时 删除.
192 .SH "示例 (EXAMPLE)"
194 大多数 鼠标 设计成 右手 食指 按 第一个键, 左撇子 却觉得 如果 把 按键
195 代码 反过来, 使 左手 食指 按上 主键 会 更舒服些. 对于 三键鼠标 可以 这样:
197 %  xmodmap -e "pointer = 3 2 1"
201 很多 应用程序 支持 Meta 键,
202 然而, 有些 服务器 的 键盘映射表 中 没有 提供 Meta keysym, 因此 需要 手工
203 添加. 下面的 命令 将把 Meta 附加到 Multi-language 键上 (有时也 称为
204 Compose Character).  另一个 有利方面 是, 需要 Meta 键 的 程序 只是要求 获得 
205 键码, 不要求 keysym 位于 键盘映射表 的 第一列.
206 这 意味着 需要 Multi_key 的 程序 不会 发觉 有 任何 变化.
208 %  xmodmap -e "keysym Multi_key = Multi_key Meta_L"
212 类似的, 有些 键盘 只有 Alt 键, 而没有 Meta 键. 这种情况下 可以 用:
214 %  xmodmap -e "keysym Alt_L = Meta_L Alt_L"
218 \fIxmodmap\fP 最简单, 也是 最合适的 用途 之一 是 设置 键盘的 "rubout" 键,
219 产生 替换的 keysym.  它 经常 用于 交换 Backspace 和 Delete 键.
220 如果 \fIxterm\fP 的 \fIttyModes\fP 资源 也 做了 同样的 设置,
221 所有的 终端模拟窗口 将 用 相同的键 删除 字符.
223 %  xmodmap -e "keysym BackSpace = Delete"
224 %  echo "XTerm*ttyModes:  erase ^?" | xrdb -merge
227 有些键盘 按下 shift 键 和 逗号, 句号键 时, 不能 产生 小于号 和 大于号.
228 这个现象 可以 通过 重新编联 逗号键 和 句号键 矫正:
231 ! make shift-, be < and shift-. be >
233 keysym comma = comma less
234 keysym period = period greater
238 键盘间 最烦人 的 区别 之一 就是 Control 和 Shift Lock 键 的 位置.  
239 \fIxmodmap\fP 的 一个 常用功能 就是 交换 这两个 键, 象这样:
242 ! Swap Caps_Lock and Control_L
244 remove Lock = Caps_Lock
245 remove Control = Control_L
246 keysym Control_L = Caps_Lock
247 keysym Caps_Lock = Control_L
248 add Lock = Caps_Lock
249 add Control = Control_L
252 如果 要 对 多个 键码 分配 同一个 keysym, 可以 使用 \fIkeycode\fP 命令.
253 尽管 这个做法 不能 移植, 但是 你可以 用它 写一段 脚本, 把 键盘 复位为
254 已知状态.
255 下面的 脚本 把 backspace 设为 Delete (如上所示), 清除 cap lock 的 编联,
256 把 CapsLock 设为 Control 键, F5 设为 Escape, Break/Reset 设为 shift lock.
259 ! On the HP, the following keycodes have key caps as listed:
261 !     101  Backspace
262 !      55  Caps
263 !      14  Ctrl
264 !      15  Break/Reset
265 !      86  Stop
266 !      89  F5
268 keycode 101 = Delete
269 keycode 55 = Control_R
270 clear Lock
271 add Control = Control_R
272 keycode 89 = Escape
273 keycode 15 = Caps_Lock
274 add Lock = Caps_Lock
277 .SH "环境变量 (ENVIRONMENT)"
279 .TP 8
280 .B DISPLAY
281 指示 缺省的 主机 和 显示器号.
283 .SH "另见 (SEE ALSO)"
284 X(1), xev(1), \fIXlib\fP 关于 键盘 和 鼠标 事件 的 文档.
286 .SH BUGS
288 服务器 每执行 一个 \fBkeycode\fP 表达式, 就要在 每一个 客户机 上 产生 一个
289 \fIMappingNotify\fP 事件. 这可能 导致 某些 异常情况. 所有的 改变 都应该
290 收集 在一起, 然后 一次 完成. 那些 接收了 键盘输入, 却 忽略了 
291 \fIMappingNotify\fP 事件 的 客户机 将 无法 注意到 对 键盘映射 的 任何 改变.
294 如果 编联了 某个 修饰键 的 键码 发生 变化, 
295 .I Xmodmap
296 将 自动 产生 "add" 和 "remove" 表达式.
299 应该 有 某种办法, 当你 确实 搞乱了 键盘映射 的 时候, 使
300 .I remove
301 表达式 接受 键码 以及 keysym.
303 .SH "作者 (AUTHOR)"
304 Jim Fulton, MIT X 协会, 根据 David Rosenthal 在 Sun Microsystems 中 的 
305 早期版本 改写.
307 .SH "[中文版维护人]"
308 .B 徐明 <xuming@users.sourceforge.net>
309 .SH "[中文版最新更新]"
310 .BR 2003/05/13
311 .SH "《中国Linux论坛man手册页翻译计划》"
312 .BI http://cmpp.linuxforum.net