Man page - xmodmap(1)

Packages contains this manual

Available languages:

en fr ro zh_TW zh_CN

Manual

XMODMAP

NAME
總 覽 (SYNOPSIS)
描 述 (DESCRIPTION)
選 項 (OPTIONS)
語 法 (EXPRESSION GRAMMAR)
示 例 (EXAMPLE)
環 境 變 數 (ENVIRONMENT)
另 見 (SEE ALSO)
BUGS
作 者 (AUTHOR)
[中 文 版 維 護 人 ]
[中 文 版 最 新 更 新 ]
《 中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 》


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 鍵 . 如 果 xterm ttyModes 資 源 也 做 了 同 樣 的 設 定 , 所 有 的 終 端 模 擬 視 窗 將 用 相 同 的 鍵 刪 除 字 元 .
% 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