plucky (1) xmodmap.1.gz

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

NAME

       xmodmap - 在 X 环境中调节键盘映射和鼠标键映射

总览 (SYNOPSIS)

       xmodmap [-options ...] [filename]

描述 (DESCRIPTION)

       xmodmap  用来  编辑 或 显示 键盘的 修饰键映射(modifier map)键盘映射表(keymap table), 客户程序 用 它们
       把 键码(keycode) 事件 转换为 keysym. 通常 在 用户会话 的 启动脚本 中 使用 xmodmap, 把 键盘 配置成 用户 喜
       爱的 风格.

选项 (OPTIONS)

       xmodmap 可以 使用 下列 选项:

       -display display
               这个选项 指定 主机 和 显示器.

       -help   这个选项 在 标准错误设备 显示 命令行参数 的 说明. 如果 出现了 无法识别 的 参数, xmodmap 也会 执行
               这个 功能.

       -grammar
               这个选项 在 标准错误设备 显示 表达式 的 语法. 该语法 适用于 文件 或 -e expression 选项.

       -verbose
               这个选项 要求 xmodmap 在 分析 输入数据 的 时候 显示 日志信息.

       -quiet  这个选项 要求 关闭 verbose 日志信息. 这是 缺省选项.

       -n      这个选项 不要求 xmodmap 真的改变 (键盘,鼠标) 映射, 而只是 显示出 它 可能 做什么, 如同 make(1)  的
               相同 选项 一样.

       -e expression
               这个选项 执行 一个 给定的 表达式. 命令行上 可以 指定 任何 数量 的 表达式.

       -pm     这个选项 要求 在 标准输出设备 显示 当前的 修饰键(modifier)映射.

       -pk     这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap).

       -pke    这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap). 输出格式 能够 作为 xmodmap 的 输入.

       -pp     这个选项 要求 在 标准输出设备 显示 当前的 鼠标(pointer)映射.

       -       单独的 短横线(-) 说明 把 标准输入设备 作为 输入文件 使用.

       filename 指定 一个文件, 其中 包含 xmodmap 将要 执行的 表达式.  这个文件 通常 命名为 .xmodmaprc, 存放在 用
       户的 根目录下.

语法 (EXPRESSION GRAMMAR)

       xmodmap 读入 一连串的 表达式, 在 执行 它们 以前, 对 所有 表达式 进行 分析.  这样 就可以  不用担心  重定义
       的 keysym 出现 名字冲突.

       keycode NUMBER = KEYSYMNAME ...
               把  这一串 keysym 赋于 指定的 键码.  (键码 可以是 十进制数, 十六进制数, 八进制数, 可以用 xev 程序
               测出.)

       keycode any = KEYSYMNAME ...
               如果 不存在 分配了 上述 keysym 序列 的 键, xmodmap 就 选择 键盘上 的 空闲键, 把 这些 keysym  分配
               给 它. keysym 可以是 十进制数, 十六进制数 或者 八进制数.

       keysym KEYSYMNAME = KEYSYMNAME ...
               左边的  KEYSYMNAME  翻译为  对应的  键码,  该键码  应用于 相应的 键码表达式集.  你 可以 在 头文件
               <X11/keysymdef.h>  中  找到  keysym  的  名称列表  (去掉  XK_  前缀),  也可以  查  keysym  数据库
               <XRoot>/lib/X11/XKeysymDB,  这里的 <XRoot> 指 X11 的 安装树. 注意, 如果 多个 键码 编联(bind)了 相
               同的 keysym, 那么 每个 对应的 键码 都要 执行 这个 表达式.

       clear MODIFIERNAME
               删除 给定 修饰键 在 修饰键映射表 中 的 所有 表项, 修饰键 的 名字 有: Shift, Lock, Control,  Mod1,
               Mod2, Mod3, Mod4, 和 Mod5 (修饰键名字 不分 大小写, 但是 其他 名字 对 大小写 敏感).  例如, ``clear
               Lock'' 将 删除 所有 编联为 shift lock 的 键.

       add MODIFIERNAME = KEYSYMNAME ...
               这条语句 把 所有 包含 给定 keysym 的 键 加入到 指定的 修饰键映射表 中.  读取完 全部 输入表达式 之
               后, xmodmap 才分析 这些 keysym, 这样 有利于 编写 一些 交换 键位 的 表达式. (见 EXAMPLES 节)

       remove MODIFIERNAME = KEYSYMNAME ...
               这条语句 在 指定的 修饰键映射表 中 删除 所有 包含 指定 keysym 的 键. 和 add 不同, xmodmap 每 读取
               一行 就 执行 一行. 这样 可以 避免 考虑 这些键 是否 被 重分配过.

       pointer = default
               这条语句 把 鼠标映射 设置为 缺省值 (按键1 产生 代码1, 按键2 产生 代码2, 等等).

       pointer = NUMBER ...
               这条语句 把 鼠标映射 设置为 指定的 按键代码. 这个 代码列表 总是 从 第一个 按键 开始.

       注释行 以 感叹号(!) 开始.

       如果 你 打算 改变 某个 修饰键 的 编联, 你 必须 把它 从 相应的 修饰键映射表 中 同时 删除.

示例 (EXAMPLE)

       大多数 鼠标 设计成 右手 食指 按 第一个键, 左撇子 却觉得 如果 把 按键 代码 反过来, 使 左手 食指 按上  主键
       会 更舒服些. 对于 三键鼠标 可以 这样:
       %  xmodmap -e "pointer = 3 2 1"

       很多  应用程序  支持 Meta 键, 然而, 有些 服务器 的 键盘映射表 中 没有 提供 Meta keysym, 因此 需要 手工 添
       加. 下面的 命令 将把 Meta 附加到 Multi-language 键上 (有时也 称为 Compose  Character).   另一个  有利方面
       是,  需要  Meta  键  的 程序 只是要求 获得 键码, 不要求 keysym 位于 键盘映射表 的 第一列.  这 意味着 需要
       Multi_key 的 程序 不会 发觉 有 任何 变化.
       %  xmodmap -e "keysym Multi_key = Multi_key Meta_L"

       类似的, 有些 键盘 只有 Alt 键, 而没有 Meta 键. 这种情况下 可以 用:
       %  xmodmap -e "keysym Alt_L = Meta_L Alt_L"

       xmodmap 最简单, 也是 最合适的 用途 之一 是 设置 键盘的 "rubout" 键, 产生 替换的 keysym.  它 经常 用于  交
       换 Backspace 和 Delete 键.  如果 xtermttyModes 资源 也 做了 同样的 设置, 所有的 终端模拟窗口 将 用 相
       同的键 删除 字符.
       %  xmodmap -e "keysym BackSpace = Delete"
       %  echo "XTerm*ttyModes:  erase ^?" | xrdb -merge

       有些键盘 按下 shift 键 和 逗号, 句号键 时, 不能 产生 小于号 和 大于号.  这个现象 可以 通过 重新编联  逗号
       键 和 句号键 矫正:
       !
       ! make shift-, be < and shift-. be >
       !
       keysym comma = comma less
       keysym period = period greater

       键盘间  最烦人 的 区别 之一 就是 Control 和 Shift Lock 键 的 位置.  xmodmap 的 一个 常用功能 就是 交换 这
       两个 键, 象这样:
       !
       ! Swap Caps_Lock and Control_L
       !
       remove Lock = Caps_Lock
       remove Control = Control_L
       keysym Control_L = Caps_Lock
       keysym Caps_Lock = Control_L
       add Lock = Caps_Lock
       add Control = Control_L

       如果 要 对 多个 键码 分配 同一个 keysym, 可以 使用 keycode 命令.  尽管 这个做法 不能 移植, 但是 你可以 用
       它  写一段 脚本, 把 键盘 复位为 已知状态.  下面的 脚本 把 backspace 设为 Delete (如上所示), 清除 cap lock
       的 编联, 把 CapsLock 设为 Control 键, F5 设为 Escape, Break/Reset 设为 shift lock.
       !
       ! On the HP, the following keycodes have key caps as listed:
       !
       !     101  Backspace
       !      55  Caps
       !      14  Ctrl
       !      15  Break/Reset
       !      86  Stop
       !      89  F5
       !
       keycode 101 = Delete
       keycode 55 = Control_R
       clear Lock
       add Control = Control_R
       keycode 89 = Escape
       keycode 15 = Caps_Lock
       add Lock = Caps_Lock

环境变量 (ENVIRONMENT)

       DISPLAY 指示 缺省的 主机 和 显示器号.

另见 (SEE ALSO)

       X(1), xev(1), Xlib 关于 键盘 和 鼠标 事件 的 文档.

BUGS

       服务器 每执行 一个 keycode 表达式, 就要在 每一个 客户机 上 产生 一个 MappingNotify 事件. 这可能 导致 某些
       异常情况.  所有的  改变 都应该 收集 在一起, 然后 一次 完成. 那些 接收了 键盘输入, 却 忽略了 MappingNotify
       事件 的 客户机 将 无法 注意到 对 键盘映射 的 任何 改变.

       如果 编联了 某个 修饰键 的 键码 发生 变化, Xmodmap 将 自动 产生 "add" 和 "remove" 表达式.

       应该 有 某种办法, 当你 确实 搞乱了 键盘映射 的 时候, 使 remove 表达式 接受 键码 以及 keysym.

作者 (AUTHOR)

       Jim Fulton, MIT X 协会, 根据 David Rosenthal 在 Sun Microsystems 中 的 早期版本 改写.

[中文版维护人]

       徐明 <xuming@users.sourceforge.net>

[中文版最新更新]

       2003/05/13

《中国Linux论坛man手册页翻译计划》

       http://cmpp.linuxforum.net

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