2013-03-26 164 views
5

我有一個很難理解的xmodmap的明確命令,這裏是一個an examplexmodmap的明確命令

keycode 66 = Control_L 
    clear Lock 
    add Control = Control_L 
    keycode 117 = Caps_Lock 
    add Lock = Caps_Lock 
  1. Control_L已經映射到66,爲什麼要在3行添加控制?
  2. 爲什麼我在實際添加控件時必須清除鎖定?
  3. 爲什麼在我實際添加Caps_Lock之前不清除鎖定?

這真是令人費解。

回答

7

xmodmap中的重要事情是區分鍵碼(鍵盤的原始數字),鍵盤(鍵的結尾是)和修飾符標誌(鍵盤上的標誌(不是鍵盤)),這件事情,我說的是一個shift鍵應該修改其他按鍵爲切換鍵」

讓我們來註釋這些你的榜樣‘類型’

keycode (keycode)66 = (keysym)Control_L 
clear (modifier)Lock 
add (modifier)Control = (keysym)Control_L 
keycode (keycode)117 = (keysym)Caps_Lock 
add (modifier)Lock = (keysym)Caps_Lock 

現在我們可以得到一個什麼樣的每一行做一個更好的主意:

keycode 66 = Control_L
關聯與對照鍵的含義的CAPSLOCK鍵(但不是作爲改性劑)

clear Lock
將刪除以前有Lock改性劑(作爲大寫鎖定由下式表示鍵的任意鍵的改性劑標誌代碼66最有可能有)

add Control = Control_L
控制修改加入是聯想與鍵符Control_L(可能鍵碼66和原來左側的控制鍵)

鑰匙

keycode 117 = Caps_Lock 分配與鍵碼117作爲一個大寫鎖定鍵(我不知道什麼117,我的鍵盤上沒有一個。)

add Lock = Caps_Lock 添加Lock修改放回Caps_Lock keysym,以及其閃亮的新界117鍵碼。

所以,直接回答你的問題:

1。 Control_L已經映射到66,爲什麼需要在第3行添加Control?

您需要修飾符和keysym才能使修飾鍵正確充當修飾符。 (對我來說有點奇怪,但事實就是這樣)

2。當我實際添加控件時,爲什麼我必須清除鎖定?

因爲與鍵碼66相關聯的鍵仍然會在其上設置Lock修飾符。修飾符不會被覆蓋,您必須清除它們。

3。在我實際添加Caps_Lock之前,爲什麼不清除鎖定?

你可以做到這一點,它的工作同樣出色,因爲Lock目標的修改,這並不讓你改變的時候惹的keysyms。


xmodmap的可以是一個非常混亂的野獸來配置,這裏有一些鏈接時,試圖瞭解它,我用:

  1. http://cs.gmu.edu/~sean/stuff/n800/keyboard/old.html
  2. http://www.jwz.org/xkeycaps/man.html
  3. http://www.in-ulm.de/~mascheck/X11/xmodmap.html

如果有什麼我可以嘗試更清楚的,讓我知道。