2015-08-27 64 views
0

我正在尋找一種方法來定義額外的Shift鍵,用於給定的鍵掃描代碼。所以我最終會保持左右不變移位,再加上一個額外的移位鍵,這可以在任何現有鍵(假設我知道它的掃描碼)上定義。用於三個Shift鍵的Linux鍵盤配置(xkb)

在XKB /鍵碼,我看到定義轉變鍵碼:

<LFSH> 
<RTSH> 

但是,如果我在這裏添加第三項,我不知道我會告訴XKB,這也是被認爲是Shift的關鍵。

(這是不相關的問題,但在你不知道的情況下,使用情況是某些鍵盤具有分裂空格鍵,在這裏我想設置空格鍵一半之一是額外移位)。

有興趣瞭解我需要什麼xkb配置?

回答

1

也許你可以使用xmodmap來做到這一點,如果你將keycode重命名爲keyym Shift_L,並將Shift_L返回 添加到修改器映射中。例如,對於鍵碼110:

xmodmap -e 'keycode 110 = Shift_L Shift_L Shift_L Shift_L' 
xmodmap -e 'add shift = Shift_L Shift_R' 

由翻翻xmodmap -pke或使用xev或類似的查找鍵碼。

+0

是的,這個工程。如果可以全部在xkb中完成,那會很好,但這仍然是一個可接受的解決方案。我會注意到只有第一行才能讓它爲我工作;第二行似乎沒有附加效果。 – Steve

+0

@Steve很高興知道。我不完全清楚xmodmap如何與xkb交互,所以這是另一個有趣的信息片段。 – meuh

1

我現在已經找到了一種方法,直接在xkb配置中實現上述功能,而不需要使用xmodmap。

步驟一:在XKB /符號/ PC的文件,注意已經被定義如下:

key <LFSH> { [ Shift_L  ] }; 
key <RTSH> { [ Shift_R  ] }; 

那麼,什麼是必需的,以添加新鍵定義爲MDSH(即「中移動「):

key <MDSH> { [ Shift_L  ] }; 

第二步:分配這些鍵的鍵碼。在XKB /鍵碼/了evdev,左,右偏移已定義:

<LFSH> = 50; 
<RTSH> = 62; 

所以一切仍然添加一個額外的定義MDSH:

<MDSH> = XXX; 

其中XXX是您要指定的鍵碼。