web-dev-qa-db-ja.com

1つのキーが2つのユニコードコードポイントを作成するカスタムxkbレイアウト

Xorg用の新しいカスタムキーボードレイアウトを書いていますが、Unicodeには存在しない特定のグリフが1つあります。ただし、標準の文字と発音区別符号を組み合わせて使用​​することで簡単に作成できます。

たとえば、下にマクロンが付いた文字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定義を作成することは可能ですか?

14
SigueSigueBen

編集:

まだやっています...

テストの結果、キーマップは各位置で1つのキーのみを使用することが示されています。

ただし、キーマップ定義でまれな/使用されたことがないkeysymを使用し、グローバルXmodmapを使用して、そのkeysymに必要なさまざまなUnicode文字を出力させる場合、これは機能します。

キーマップ内:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

グローバルXmodmapの場合:(おそらく/etc/profile.dからロードされますか?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

未使用/特殊用途のキーシムがかなりあります。例としてLaunchA/Bを選択しました。

11
lornix

一方、特定のキーに、Diactityics文字自体を組み合わせたUnicodeを添付して、他の文字の後に入力することができます。確かに、それは文字を組み合わせたユニコードが機能すると思われる方法です。

X11にはデッドキーがあり、デッドキーは逆に機能します。最初にデッドキー、次にベース文字です。 <dead_belowmacron>があり、いくつかのキーに添付できます。

次に、ロケールに合わせて作成ファイルを編集し(誰かが、ユーザー定義の場所から作成ファイルに定義を追加する方法を知っている場合)、次のような行を追加する必要があります。

# 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̱"

使用する作成ファイルは、/ usr/share/X11/locale/compose.dirファイルのロケールによって定義されます(パスは異なる場合があります)。

4
Pablo Saratxaga