2020 年更新

2020 年更新

我正在為 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 年ximuim。它或多或少是一個直接替代品,旨在完全支援 Unicode 和多語言輸入。在許多其他功能中,uim 允許您輸出多代碼點字符,例如U0073+U0331按鍵或死鍵組合的結果。

相關內容