首页 > xmodmap(1) — Arch manual pages

按鍵映射,xmodmap(1) — Arch manual pages

互联网 2021-05-16 07:38:58
NAMExmodmap - 在 X環境中調節鍵盤映射和鼠標鍵映射總覽 (SYNOPSIS)xmodmap [-options ...] [filename]描述 (DESCRIPTION)xmodmap 用來 編輯 或 顯示鍵盤的 修飾鍵映射(modifiermap) 和 鍵盤映射表(keymaptable), 客戶程序 用 它們把 鍵碼(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 翻譯爲對應的 鍵碼, 該鍵碼應用於 相應的鍵碼錶達式集. 你可以 在 頭文件 中 找到 keysym 的名稱列表 (去掉 XK_前綴), 也可以 查 keysym數據庫 /lib/X11/XKeysymDB,這裏的指 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鍵上 (有時也 稱爲 ComposeCharacter). 另一個 有利方面是, 需要 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 lesskeysym period = period greater

鍵盤間 最煩人 的區別 之一 就是 Control 和 ShiftLock 鍵 的 位置. xmodmap 的一個 常用功能 就是交換 這兩個 鍵,象這樣:

!! Swap Caps_Lock and Control_L!remove Lock = Caps_Lockremove Control = Control_Lkeysym Control_L = Caps_Lockkeysym Caps_Lock = Control_Ladd Lock = Caps_Lockadd 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:!! 101Backspace!55Caps!14Ctrl!15Break/Reset!86Stop!89F5!keycode 101 = Deletekeycode 55 = Control_Rclear Lockadd Control = Control_Rkeycode 89 = Escapekeycode 15 = Caps_Lockadd 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 中 的 早期版本改寫.[中文版維護人]徐明 [中文版最新更新]2003/05/13《中國Linux論壇man手冊頁翻譯計劃》http://cmpp.linuxforum.net跋本頁面中文版由中文 man手冊頁計劃提供。中文 man手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
免责声明:非本网注明原创的信息,皆为程序自动获取自互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件24小时内删除。

相关阅读