我正在尋找一種方法在鍵盤上添加一個「佈局」。我已經在使用使用altgr作爲本地字母的佈局。我想添加的是一個鏡像的右側鍵盤,使用大寫鎖定鍵(http://xkcd.com/mirrorboard.xkb中描述的一個)用更多修飾符重新映射鍵盤
不幸的是ISO_LEVEL3_SHIFT
已被本地字母表佔用。 (AFAIK)如果我使用mode_shift
來更改羣組,我不能在羣組中使用超過2個級別。有沒有辦法爲altgr和mode_shift
創建不同的組?
我正在尋找一種方法在鍵盤上添加一個「佈局」。我已經在使用使用altgr作爲本地字母的佈局。我想添加的是一個鏡像的右側鍵盤,使用大寫鎖定鍵(http://xkcd.com/mirrorboard.xkb中描述的一個)用更多修飾符重新映射鍵盤
不幸的是ISO_LEVEL3_SHIFT
已被本地字母表佔用。 (AFAIK)如果我使用mode_shift
來更改羣組,我不能在羣組中使用超過2個級別。有沒有辦法爲altgr和mode_shift
創建不同的組?
對於每個鍵碼定義,最多可以有8個鍵碼。這些組織成對分爲四組。有一組鍵,ISO_Prev_Group
,ISO_First_Group
和ISO_Last_Group
,當按下時,通過敲擊keysym組中的鍵來循環鍵盤輸出。這些鍵是你如何獲得多種佈局。
舉個例子,假設ISO_Next_Group
已綁定到一個鍵碼,並分配到修改,那麼這樣的定義:
keycode 53 = x X Greek_xi Greek_XI multiply U2297 U24E7 U24CD
按我的標籤「X」鍵盤按鍵上的類型了「X」 。按下ISO_Next_Group
鍵後,我會看到「ξ」。再次按下,我會得到「×」。再次按下「ⓧ」。最後,第四次按下它會使事情恢復正常。
有花幾天(因爲Xkb¹具有可怕的文件;終於找到了一個不錯的指南here),你可以創建條目這樣的符號定義文件:
key <SPCE> { // Level I II III IV [ space, space, U2395, U2592 ], // Group 1 [ U2423, emspace, U2420, hairspace ] // Group 2 }; key <RALT> { [ Mode_switch, Mode_switch ] }; key <RCTL> { [ ISO_Level3_Shift, ISO_Level3_Shift ] };
方括號中單組。通常情況下,第一組是激活的。該組可以暫時遞增1,其中ISO_Group_Shift,又名Mode_switch。在一個組內,所發射的符號被定義爲不斷增加的等級。級別I是一個純粹的按鍵。 Shift爲當前級別增加了一個。 ISO_Level3_Shift將等級設定爲III。
上面的示例映射七個符號空格鍵加上各種移鍵,使得:
空間⟨⟩U + 0020 SPACE
移+空間⟨⟩U + 0020 SPACE
R. Alt +空格鍵⟨␣⟩U + 2423開盒
R.鍵Alt + Shift +空格⟨⟩U + 2003 EM SPACE
R. CTL +空間⟨⎕⟩U + 2395 APL功能符號QUAD
R. CTL + Shift +空格⟨▒⟩U + 2592中等色調
R. Alt + R鍵。 Ctl。+ space⟨␠⟩U + 2420 SYMBOL FOR SPACE
R. Alt + R。 CTL。+ Shift +空格⟨⟩U + 200A HAIR SPACE
還有一個關鍵ISO_Level5_Shift的水平V.所以,你可以有至少六個符號爲一個級別。使用模式切換鍵時,這意味着您可以配置鍵盤輸入大約1,200個不同的符號,但在此時按住這麼多修飾符可能會減少幾個鍵。
P.S.所有命名符號的名稱都存儲在/usr/include/X11/keysymdef.h
中。
只是想知道 - 有沒有辦法讓一些關鍵修改器的方式?這樣它就可以在印刷機上執行ISO_Next_Group,在發佈時執行ISO_Prev_Group? – viraptor 2009-10-14 23:48:35
這個問題基本上是以一種非常不尋常的方式編譯鍵盤映射,需要低級別的黑客。我想過把它放在超級用戶身上,但它不會在那裏得到任何答案。它更接近於編程(是的 - 這基本上是編程xkb),而不僅僅是調整你的設置(這是超級用戶專門研究的)。 – viraptor 2009-10-13 15:09:30