Provided by: manpages-zh_1.6.3.3-2_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