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


14

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

たとえば、v下のマクロン付きの文字が必要な場合、シーケンスU0073+U0331は必要な文字を作成します。

私のxkbレイアウト定義では、単一のUnicodeポイントを指定できます(ここでaltgr+dはḏおよびaltgr+shift+dtoにバインドされています)。

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

しかし、単一のキーに「結合された」Unicodeグリフを指定できないようです。

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

このようなシステム全体のxkb定義を作成することは可能ですか?

回答:


11

編集:

まだやっています...

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

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

キーマップで:

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

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

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

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


答えてくれてありがとう。1つの欠点は、これが使用ごとの設定になるということですよね?xkbを使用してシステム全体に適用すると、単一のファイルで配布できるようになります。もちろん、それらの条件は私の最初の質問にありました!
SigueSigueBen

2
ソースコードを掘り下げましたが、キーマップのキー定義に複数のキーストロークを含めることはサポートされていないようです。もちろん、自分で書き直してその機能を実装することもできます!
lornix

私が望んだ答えではありませんが、それでもなお答えです。ソースコードを少し調べて、提案されたオプションを見ていきます。ありがとう。
SigueSigueBen

4

一方、特定のキーにdiactityics文字自体を組み合わせた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̱"

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.