
Xubuntu 20.04でキーボードレイアウトを設定しています。
私は通常、同じキーストロークを使用して通常のコンソールとXの両方でさまざまなUnicode文字を入力できるようにしたいです。私はコンソールがUnicode(512文字)を制限的にサポートしていることを知っているので、コンソールはこの限られた範囲内でのみ機能することに同意します。
xfce4-keyboard-settingsで「システムデフォルトの使用」をそのままにして、このオプションを「設定の使用」/etc/default/keyboard
として理解し、コンソールのみとXの単一構成を望んでいました。
私はsudo dpkg-reconfigure keyboard-configuration
「AltGr Dead Keysを持つUS International」レイアウトバリアントを実行して選択しました。
私は純粋なコンソールbashで「(arg:x)」モードに入ると、いくつかのAltGrシーケンスがめちゃくちゃになることがわかりました。 bashで始まるこの動作を除外するのsh
が最も簡単です。
この時点で、キーボードレイアウトがコンソールとタイプX:AltGr + 2で同じように機能していると思います。², AltGr+` 次の e 入力金利。
作成キーとしてCaps Lockを選択しました。
X では、次のような動作が予想されます。 oo型は角度表記法で作成され、e =型はユーロ表記法で作成されます。
しかし、コンソールでは、Composeシーケンスはほとんど機能しません。度もユーロもありません(ただし、完全に表示され、AltGrを介して入力することもできます)。 Composeキーは、Compose `e設定などの最も基本的な設定ではまだ機能するため、完全に役に立ちません。金利。しかし、これは512のグリフよりはるかに制限的です。
それでは、コンソールComposeがそのように異なる動作をするのはなぜですか。少なくとも学位やユーロのように、一見単純なものをサポートするように調整できますか?
答え1
コンソールはまったく異なるコードで処理されるため、動作が異なります。/etc/default/keyboard
以下の設定が含まれています。XKB、これはXのキーボード入力処理の一部です。これコンソールインストールパッケージこれらの設定をコンソールが実行できる操作にプログラム的に変換するsetupcon
(読み取りと解析/etc/default/keyboard
)とckbcomp
(XKB設定をコンソール設定に変換します)。これらのツールはコンソールの機能によって制限されます。
Linuxコンソールはカーネル内に実装され、マルチバイト文字セットの部分的なサポートのみを提供します。特に、作成キーの場合、カーネルにハードコーディングされた制限があります。スキーム( accent_table
)ハードコードされたサイズは次のとおりです。MAX_DIACR
カーネルを再コンパイルしない場合は256です。これは、コンソール設定パッケージにUnicode作成テーブルがない理由を説明します。アイテムは256個しかないので、何をしても多くの文字は含まれません。私が知る限り、Unicode文字セットでコンソール設定を使用すると、最終的にカーネルの組み込み構成表これは、ASCIIではなくラテン1アクセント文字のみをリストします(°などの句読点を除く)。
独自の構成テーブルを定義できます。 2つのキャラクターの最大256の組み合わせを選択して3番目のキャラクターを形成し、コンソール作成マップファイルにリストします。
Compose 'o' 'o' to degree
Compose 0x6f 0x006f to 0xb0
Compose U+6F U+006f to U+00B0
上記の最初の行は、Compose o o挿入を表すさまざまな方法を示しています°
。もちろん、1つだけが必要です。文字を指定する方法は次のとおりです。
- 10進数、先行8進数
0
、または先行16進数です0x
。 - ㅏシングルバイト中の文字です
'
。この文字の前にはバックスラッシュを付けることができ、バックスラッシュと一重引用符の前にはバックスラッシュを'\o'
付ける'o'
必要'\\'
があります'\'
。 '\ooo'
どこあ、あ最大255(\377
)の値を指定する正確に3つの8進数です。U+hhhh
どこヘヘ正確に4桁の16進数です。- 右側にのみ
to
キャラクターの象徴的な名前があります。シンボル名は X11 キーシンボル名のサブセットです。より源泉(syms.*.h
)シンボル名のリストを取得します。
自己作成マップをロードするには、次の手順を実行します。
loadkeys /path/to/my/compose.kmap
これは現在ロードされている組み合わせテーブルを置き換えます。
カスタム作成マップをロードするようにコンソール設定に指示する方法が見つかりません。 Unicode以外のエンコードの場合はckbcomp
ロードされますが、Unicodeの場合はこのステップをスキップします。/etc/console-setup/compose.${charmap}.inc
1配列の要素数kbdiacruc
struct kbdiacrsuc
ユーザーモードで設定できる項目の最大数。同じ値に設定する必要があります。
²ソース:ソースコード(kbd
パッケージ、ファイルsrc/libkeymap/analyze.l
)src/libkeymap/parser.y
。ドキュメントにこれらの詳細が見つかりません。