.\" $TOG: xmodmap.man /main/27 1997/04/02 09:22:54 kaleb $ .\" Copyright (c) 1988, 1989, 1990 X Consortium .\" Copyright 1987 Sun Microsystems, Inc. .\" .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from the X Consortium. .\" $XFree86: xc/programs/xmodmap/xmodmap.man,v 1.1.1.3.2.2 1997/07/05 15:55:55 dawes Exp $ .de EX \"Begin example .ne 5 .if n .sp 1 .if t .sp .5 .nf .in +.5i .. .de EE .fi .in -.5i .if n .sp 1 .if t .sp .5 .. .TH XMODMAP 1 "Release 6.3" "X Version 11" .SH NAME xmodmap - 在 X 環境中調節鍵盤映射和鼠標鍵映射 .SH "總覽 (SYNOPSIS)" .B xmodmap [-options ...] [filename] .SH "描述 (DESCRIPTION)" .PP \fIxmodmap\fP 用來 編輯 或 顯示 鍵盤的 \fI修飾鍵映射(modifier map)\fP 和 \fI鍵盤映射表(keymap table)\fP, 客戶程序 用 它們 把 鍵碼(keycode) 事件 轉換爲 keysym. 通常 在 用戶會話 的 啓動腳本 中 使用 \fIxmodmap\fP, 把 鍵盤 配置成 用戶 喜愛的 風格. .SH "選項 (OPTIONS)" .PP \fIxmodmap\fP 可以 使用 下列 選項: .TP 8 .B \-display \fIdisplay\fP 這個選項 指定 主機 和 顯示器. .TP 8 .B \-help 這個選項 在 標準錯誤設備 顯示 命令行參數 的 說明. 如果 出現了 無法識別 的 參數, .I xmodmap 也會 執行 這個 功能. .TP 8 .B \-grammar 這個選項 在 標準錯誤設備 顯示 表達式 的 語法. 該語法 適用於 文件 或 \-e expression 選項. .TP 8 .B \-verbose 這個選項 要求 .I xmodmap 在 分析 輸入數據 的 時候 顯示 日誌信息. .TP 8 .B \-quiet 這個選項 要求 關閉 verbose 日誌信息. 這是 缺省選項. .TP 8 .B \-n 這個選項 不要求 .I xmodmap 真的改變 (鍵盤,鼠標) 映射, 而只是 顯示出 它 可能 做什麼, 如同 \fImake(1)\fP 的 相同 選項 一樣. .TP 8 .B \-e \fIexpression\fB 這個選項 執行 一個 給定的 表達式. 命令行上 可以 指定 任何 數量 的 表達式. .TP 8 .B \-pm 這個選項 要求 在 標準輸出設備 顯示 當前的 修飾鍵(modifier)映射. .TP 8 .B \-pk 這個選項 要求 在 標準輸出設備 顯示 當前的 鍵盤映射表(keymap). .TP 8 .B \-pke 這個選項 要求 在 標準輸出設備 顯示 當前的 鍵盤映射表(keymap). 輸出格式 能夠 作爲 \fIxmodmap\fP 的 輸入. .TP 8 .B \-pp 這個選項 要求 在 標準輸出設備 顯示 當前的 鼠標(pointer)映射. .TP 8 .B \- 單獨的 短橫線(-) 說明 把 標準輸入設備 作爲 輸入文件 使用. .PP \fIfilename\fP 指定 一個文件, 其中 包含 \fIxmodmap\fP 將要 執行的 表達式. 這個文件 通常 命名爲 \fI.xmodmaprc\fP, 存放在 用戶的 根目錄下. .SH "語法 (EXPRESSION GRAMMAR)" .PP .I xmodmap 讀入 一連串的 表達式, 在 執行 它們 以前, 對 所有 表達式 進行 分析. 這樣 就可以 不用擔心 重定義 的 keysym 出現 名字衝突. .TP 8 .B keycode \fINUMBER\fP = \fIKEYSYMNAME ...\fP 把 這一串 keysym 賦於 指定的 鍵碼. (鍵碼 可以是 十進制數, 十六進制數, 八進制數, 可以用 .I xev 程序 測出.) .TP 8 .B keycode any = \fIKEYSYMNAME ...\fP 如果 不存在 分配了 上述 keysym 序列 的 鍵, \fIxmodmap\fP 就 選擇 鍵盤上 的 空閒鍵, 把 這些 keysym 分配 給 它. keysym 可以是 十進制數, 十六進制數 或者 八進制數. .TP 8 .B keysym \fIKEYSYMNAME\fP = \fIKEYSYMNAME ...\fP 左邊的 \fIKEYSYMNAME\fP 翻譯爲 對應的 鍵碼, 該鍵碼 應用於 相應的 鍵碼錶達式集. 你 可以 在 頭文件 \fI\fP 中 找到 keysym 的 名稱列表 (去掉 \fIXK_\fP 前綴), 也可以 查 keysym 數據庫 \fI/lib/X11/XKeysymDB\fP, 這裏的 指 X11 的 安裝樹. 注意, 如果 多個 鍵碼 編聯(bind)了 相同的 keysym, 那麼 每個 對應的 鍵碼 都要 執行 這個 表達式. .TP 8 .B clear \fIMODIFIERNAME\fP 刪除 給定 修飾鍵 在 修飾鍵映射表 中 的 所有 表項, 修飾鍵 的 名字 有: .BR Shift , .BR Lock , .BR Control , .BR Mod1 , .BR Mod2 , .BR Mod3 , .BR Mod4 , 和 \fBMod5\fP (修飾鍵名字 不分 大小寫, 但是 其他 名字 對 大小寫 敏感). 例如, ``clear Lock'' 將 刪除 所有 編聯爲 shift lock 的 鍵. .TP 8 .B add \fIMODIFIERNAME\fP = \fIKEYSYMNAME ...\fP 這條語句 把 所有 包含 給定 keysym 的 鍵 加入到 指定的 修飾鍵映射表 中. 讀取完 全部 輸入表達式 之後, xmodmap 才分析 這些 keysym, 這樣 有利於 編寫 一些 交換 鍵位 的 表達式. (見 EXAMPLES 節) .TP 8 .B remove \fIMODIFIERNAME\fP = \fIKEYSYMNAME ...\fP 這條語句 在 指定的 修飾鍵映射表 中 刪除 所有 包含 指定 keysym 的 鍵. 和 .B add 不同, xmodmap 每 讀取 一行 就 執行 一行. 這樣 可以 避免 考慮 這些鍵 是否 被 重分配過. .TP 8 .B "pointer = default" 這條語句 把 鼠標映射 設置爲 缺省值 (按鍵1 產生 代碼1, 按鍵2 產生 代碼2, 等等). .TP 8 .B pointer = \fINUMBER ...\fP 這條語句 把 鼠標映射 設置爲 指定的 按鍵代碼. 這個 代碼列表 總是 從 第一個 按鍵 開始. .PP 註釋行 以 感嘆號(!) 開始. .PP 如果 你 打算 改變 某個 修飾鍵 的 編聯, 你 必須 把它 從 相應的 修飾鍵映射表 中 同時 刪除. .SH "示例 (EXAMPLE)" .PP 大多數 鼠標 設計成 右手 食指 按 第一個鍵, 左撇子 卻覺得 如果 把 按鍵 代碼 反過來, 使 左手 食指 按上 主鍵 會 更舒服些. 對於 三鍵鼠標 可以 這樣: .EX % xmodmap -e "pointer = 3 2 1" .EE .PP 很多 應用程序 支持 Meta 鍵, 然而, 有些 服務器 的 鍵盤映射表 中 沒有 提供 Meta keysym, 因此 需要 手工 添加. 下面的 命令 將把 Meta 附加到 Multi-language 鍵上 (有時也 稱爲 Compose Character). 另一個 有利方面 是, 需要 Meta 鍵 的 程序 只是要求 獲得 鍵碼, 不要求 keysym 位於 鍵盤映射表 的 第一列. 這 意味着 需要 Multi_key 的 程序 不會 發覺 有 任何 變化. .EX % xmodmap -e "keysym Multi_key = Multi_key Meta_L" .EE .PP 類似的, 有些 鍵盤 只有 Alt 鍵, 而沒有 Meta 鍵. 這種情況下 可以 用: .EX % xmodmap -e "keysym Alt_L = Meta_L Alt_L" .EE .PP \fIxmodmap\fP 最簡單, 也是 最合適的 用途 之一 是 設置 鍵盤的 "rubout" 鍵, 產生 替換的 keysym. 它 經常 用於 交換 Backspace 和 Delete 鍵. 如果 \fIxterm\fP 的 \fIttyModes\fP 資源 也 做了 同樣的 設置, 所有的 終端模擬窗口 將 用 相同的鍵 刪除 字符. .EX % xmodmap -e "keysym BackSpace = Delete" % echo "XTerm*ttyModes: erase ^?" | xrdb -merge .EE .PP 有些鍵盤 按下 shift 鍵 和 逗號, 句號鍵 時, 不能 產生 小於號 和 大於號. 這個現象 可以 通過 重新編聯 逗號鍵 和 句號鍵 矯正: .EX ! ! make shift-, be < and shift-. be > ! keysym comma = comma less keysym period = period greater .EE .PP 鍵盤間 最煩人 的 區別 之一 就是 Control 和 Shift Lock 鍵 的 位置. \fIxmodmap\fP 的 一個 常用功能 就是 交換 這兩個 鍵, 象這樣: .EX ! ! 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 .EE .PP 如果 要 對 多個 鍵碼 分配 同一個 keysym, 可以 使用 \fIkeycode\fP 命令. 儘管 這個做法 不能 移植, 但是 你可以 用它 寫一段 腳本, 把 鍵盤 復位爲 已知狀態. 下面的 腳本 把 backspace 設爲 Delete (如上所示), 清除 cap lock 的 編聯, 把 CapsLock 設爲 Control 鍵, F5 設爲 Escape, Break/Reset 設爲 shift lock. .EX ! ! 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 .EE .SH "環境變量 (ENVIRONMENT)" .PP .TP 8 .B DISPLAY 指示 缺省的 主機 和 顯示器號. .SH "另見 (SEE ALSO)" X(1), xev(1), \fIXlib\fP 關於 鍵盤 和 鼠標 事件 的 文檔. .SH BUGS .PP 服務器 每執行 一個 \fBkeycode\fP 表達式, 就要在 每一個 客戶機 上 產生 一個 \fIMappingNotify\fP 事件. 這可能 導致 某些 異常情況. 所有的 改變 都應該 收集 在一起, 然後 一次 完成. 那些 接收了 鍵盤輸入, 卻 忽略了 \fIMappingNotify\fP 事件 的 客戶機 將 無法 注意到 對 鍵盤映射 的 任何 改變. .PP 如果 編聯了 某個 修飾鍵 的 鍵碼 發生 變化, .I Xmodmap 將 自動 產生 "add" 和 "remove" 表達式. .PP 應該 有 某種辦法, 當你 確實 搞亂了 鍵盤映射 的 時候, 使 .I remove 表達式 接受 鍵碼 以及 keysym. .SH "作者 (AUTHOR)" Jim Fulton, MIT X 協會, 根據 David Rosenthal 在 Sun Microsystems 中 的 早期版本 改寫. .SH "[中文版維護人]" .B 徐明 .SH "[中文版最新更新]" .BR 2003/05/13 .SH "《中國Linux論壇man手冊頁翻譯計劃》" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR