端末(デスクトップ環境なし)で作成キーを定義するには?

端末(デスクトップ環境なし)で作成キーを定義するには?

compose私のシステム(Debian Sid "Wheezy")にキーを定義したいと思います。私はXorgを持っていません(デスクトップ環境も必要ありません)。端末でのみ可能です。

私のキーに設定したいですAlt-Gr(右Alt)。しばらく試してみましたが、設定方法がわかりません。

私は調査を行い、いくつかの指示を見つけました。

  • $ showkey私の鍵のキーコードを教えてくださいAlt-Gr(#100)

  • $ dumpkeysそして、ページで$ dumpkeys --compose-only指定された形式に応じて「キーボードドライバの現在のコンテンツ」を出力します。keymapsman

  • $ loadkeysキーボード翻訳テーブルのロード

難しくないと思いますが、どうすればいいのかわかりません...

答え1

/etc/default/keyboard最新のDebianとUbuntuシステムでは、キーボード設定はXとコンソールの間で配置され共有されます。早く走る

sudo dpkg-reconfigure keyboard-configuration

そしてCompose key: Right Alt (AltGr)適切な画面から選択してください。

XKBOPTIONS=compose:ralt入力して/etc/default/keyboard実行することもできます。

sudo dpkg-reconfigure console-setup

デフォルトでは、古いシステムのコンソールにはComposeキーがあります。usレイアウトから両方 Altキーの組み合わせは1のComposeように機能します。

例: 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より良いアプローチは、上記の行で呼び出される新しいファイルを作成し、それを含む新しいキーマップを作成してから、デフォルトのキーマップに設定することです。

  1. PrtScnまたCompose、デフォルトとして。

答え2

コンソールの「compose」は2文字の入力を受け付けますが、3番目の文字を出力します。

問題は、Composeが次のように定義されていることです。バイト、入力(つまり、入力されたキーに基づいて作成を定義することはできず、入力されたシンボルのみを定義できます)、および出力として使用されます。

マルチバイト(最小1〜4バイト)UTF-8として機能するには、コンソール入力の処理方法を大幅に変更し、現在使用されている単純な文字配列をより複雑な配列に置き換える必要があります。これを行う予定はないようです。 (カーネル開発者間の合意は、コンソールがコンソールのままでなければならず、単純なもの、最後の手段としてのみ使用されるべきです。ベスト(X11ではフルスクリーンxtermですが、他の可能性もあります)。

したがって、実際には機能せず、コンソールのマルチバイト文字では機能しません。ただし、作成定義を純粋なASCIIに制限すると、まだ機能します。

また、出力がiso-8859-1(最大0x00ffのUnicode値に対応)にある場合は機能することがわかりました。これを行うには、いくつかの起動スクリプトを1行に入れることができます。

    ロードキー /somepath/somefile

必要な作成定義を適切なファイルに入れます(ファイルをISO-8859-1エンコーディングとして保存するように注意してください。出力として0x7fを超える文字のみを使用してください)。これらのファイルの構文は非常に簡単で、次のようになります。

    'somechar' 'somotherchar'を '希望の出力'に結合

たとえば、

    'a' 'a' を 'å' にしよう
    'a' 'e' を 'æ' に結合

アポストロフィはエスケープする必要があります。

デッドウムラウトキーの効果もこのファイルで定義されています。 dead_acute+a に対して次の行を定義します。

    '\'' 'a' を 'á' に結合

dead_graveはバックティック(`)を使用し、dead_diaeresisは二重引用符( ")を使用し、dead_circumflexは曲折(^)を使用し、dead_tildeはチルダ(〜)を使用します。

関連情報