我正在為 Xorg 編寫一個新的自訂鍵盤佈局,但有一個特定的字形在 Unicode 中不存在。然而,透過使用標準字母加上組合變音符號可以輕鬆創建它。
例如,如果我想要v
下面帶有巨集的字母,該序列U0073+U0331
將創建我想要的字元。
在我的 xkb 佈局定義中,我可以指定單一 Unicode 點(此處altgr+d
綁定到 ḏ 和altgr+shift+d
Ḏ):
key <AC03> { [ d, D, U1E0F, U1E0E ] }; // d with macron below
但我似乎無法為單個鍵指定“組合”Unicode 字形:
key <AB04> { [ v, V, U0076+U0331, U0056+U0331 ] }; // v with macron below
是否可以像這樣建立一個系統範圍的 xkb 定義?
答案1
編輯:
仍在嘗試...
測試表明鍵映射在每個位置僅採用一個鍵。
但是,如果您在鍵盤映射定義中使用罕見/從未使用過的鍵盤符號,則使用全域 Xmodmap 使該鍵盤符號輸出您需要的各種 unicode 字符,這將起作用。
在鍵盤映射中:
key <AB04> { [ v, V, XF86LaunchA, XF86LaunchB ] };
在全域 Xmodmap 中:(可能從 /etc/profile.d 載入?)
keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331
有很多未使用/特殊用途的鍵符號,我選擇了 LaunchA/B 作為範例。
答案2
另一方面,您可以將結合變音字元本身的 unicode 附加到給定鍵,然後可以在任何其他字元之後鍵入它。事實上,這就是 unicode 組合字元的工作方式。
在 X11 中存在死鍵,死鍵以相反的方式工作:首先是死鍵,然後是基本字母。有一個<dead_belowmacron>
,您可以將其附加到某個鍵上。
然後,您需要編輯您的語言環境的 Compose 文件(如果有人知道如何從用戶定義的位置將定義附加到 Compose 文件,我會很感激),並添加如下行:
# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"
要使用的 Compose 檔案由 /usr/share/X11/locale/compose.dir 檔案中的區域設定定義(路徑可能有所不同)。
答案3
2020 年更新
這個問題是在 2012 年提出的,最新答案(在這個問題之前)是在 2013 年xim
。uim
。它或多或少是一個直接替代品,旨在完全支援 Unicode 和多語言輸入。在許多其他功能中,uim 允許您輸出多代碼點字符,例如U0073+U0331
按鍵或死鍵組合的結果。