私のシステム(Debian Sid "Wheezy")にcompose
キーを定義したいと思います。 Xorgを使用していません(デスクトップ環境も必要ありません)。ターミナルのみ。
Alt-Gr
キー(右Alt
)に設定したいと思います。しばらく試しましたが、設定方法がわかりません。
私は調査していて、いくつかの方向を見つけました:
$ showkey
はAlt-Gr
キーのキーコードを教えてくれます(#100)
$ dumpkeys
および$ dumpkeys --compose-only
は、keymaps
ページに従って、man
で指定された形式で「キーボードのドライバーの現在の内容」を出力します
$ loadkeys
キーボード変換テーブルを読み込む
それほど難しくはないと思いますが、どう対処すればいいのかわかりません...
新しいDebianおよびUbuntuシステムでは、キーボード設定は_/etc/default/keyboard
_に入れられ、Xとコンソール間で共有されます。とにかく走れ
_Sudo dpkg-reconfigure keyboard-configuration
_
適切な画面で_Compose key:
_ Right Alt (AltGr)
を選択します。
_XKBOPTIONS=compose:ralt
_を_/etc/default/keyboard
_に入れて実行することもできます
_Sudo dpkg-reconfigure console-setup
_
古いシステムでは、デフォルトでコンソールにComposeキーがあります。 us
レイアウトでbothを押す Alt キーは一緒に機能します Compose。1
例えば: Alt+AltGr、 "、 A =>Ä
ご希望の場合 AltGr するだけ Compose、変更する必要があります
_alt keycode 100 = Compose
_
アクティブなキーボードマップで
_keycode 100 = Compose
_
これを行う最も簡単な方法は、上記の_/lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc
_を変更することです。
より良い方法は、上記の行で_/lib/kbd/keymaps/i386/include/altgr-is-compose.inc
_という名前の新しいファイルを作成し、それを含む新しいキーマップを作成して、それをデフォルトのキーマップに設定することです。
コンソールで「作成」すると、2つの文字を入力できますが、3番目の文字が出力されます。
問題は、コンポーズ定義がbytesを2つの入力として使用することです(つまり、コンポーズを型付きキーで定義することはできませんが、型付きシンボルでのみ定義できます)。
マルチバイト(少なくとも1〜4バイト)であるUTF-8で機能させるには、コンソール入力の処理方法を大幅に変更し、現在使用されている単純なchar配列をより複雑なものに置き換える必要があります。そうする計画はないようです(カーネル開発者の間のコンセンサスは、コンソールはコンソールであり、単純なものであり、最後の手段でのみ使用されるということです。実際にユニコードが必要な場合は、おそらくビディ、シェーピングなども必要です。次に、グラフィカル端末を実行することをお勧めします(X11ではフルスクリーンxterm。他の可能性もあります)。
したがって、実際には、コンソール上のマルチバイト文字では機能せず、機能しません。ただし、構成定義をプレーンASCIIに制限しても機能します。
また、出力がiso-8859-1(0x00ffまでのUnicode値に対応する)の場合にも機能することもわかりました。そのため、開始スクリプトに次の行を入れることができます。
loadkeys/somepath/somefile
そして、そのファイルに必要な構成定義を入れます(ISO-8859-1エンコーディングでファイルを保存し、出力として0x7fより大きい文字を使用するように注意してください)。このようなファイルの構文は非常に単純で、次のような行です。
「somechar」「somotherchar」を「desiredoutput」に作成
例えば:
構成 'a' 'a'から 'å' 構成 'a' 'e'から 'æ'
アポストロフィはエスケープする必要があります。
無効な発音区別符号キーの効果もそのファイルで定義されています。 dead_acute + aの場合、次のような行を定義します。
「\」「a」を「á」に作成
dead_Graveはバックティック( `)を使用し、dead_diaeresisは二重引用符(")を使用し、dead_circumflexはサーカムフレックス(^)を使用し、dead_tildeはチルダ(〜)を使用します。