.\" $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