ターミナルでデスクトップキーを作成する方法(デスクトップ環境なし)


17

compose私のシステムでキーを定義したいと思います(Debian Sid "Wheezy")。私にはXorgがありません(デスクトップ環境は必要ありません)。ターミナルのみ。

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

私は調査していて、いくつかの方向性を見つけました:

  • $ showkeyキーのキーコードを教えてくれAlt-Grます(#100)

  • $ dumpkeysページに従って、で$ dumpkeys --compose-only指定された形式で「キーボードのドライバの現在の内容」を出力keymapsmanます

  • $ loadkeys キーボード変換テーブルをロードする

それほど難しいことではないと確信していますが、その対処方法が恋しいです...


うーん、私は100%をフォローしていません。Alt-Grを押したときに何をしたいですか?
エマニュエルベルク

Compose Keyになりたいです。実際には、Compose Keyをどこかで定義したいだけです。Alt-Grでそれを使用していたので、そこで定義したいと思います。GUIを使用してセットアップするのは非常に簡単ですが、Xシステムがインストールされていないので、純粋なコンソールモードで定義できるはずです(オプションではありません)。方法がわかりません。
cedbeu

回答:


10

新しいDebianおよびUbuntuシステムでは、キーボード設定は/etc/default/keyboardXとコンソールの間で共有されます。ただ走れ

sudo dpkg-reconfigure keyboard-configuration

Compose key: Right Alt (AltGr)適切な画面で選択します。

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

sudo dpkg-reconfigure console-setup

古いシステムでは、デフォルトでコンソールにComposeキーがあります。usレイアウト、押圧両方 Alt一緒に鍵するように作用しますCompose1

たとえば、次のように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. PrtScnComposeデフォルトとしても機能します。

これが機能しません。dpkg-reconfigureウィザードは確かにComposeキーについて尋ねるが、それはそれは、「Unicodeモード」(?)では動作しませんと言います。また、そのモードではない場合、Control +ピリオドは構成キーとして機能します。しかし、私もそれを動作させていません。
エマニュエルベルク

警告メッセージはを指していると思いますunicode_start。私にとっては、私が言うように走れば、それはまだ機能setupcondpkg-reconfigureます。
ミケル

setupconXターミナル(urxvt)で実行すると、「コンソール上にいないため、コンソールは未構成のままです」と表示されます。また、showkey「コンソールにファイル記述子を取得できませんでした」と文句を言います。ではtty、両方のそれらの作品が、showkey言います(最初のもの)、それが機能しない理由確かであるので、おそらく、「キロバイトモードがUNICODEでした」。ただし、Control +ピリオドはで機能しttyます。OK、今は理にかなっています。
エマニュエルベルク

あなたの質問はあなたが持っていないと言ったXsetupconLinux仮想コンソールで実行する必要があります(例:Ctrl + Alt + F1)。
ミケル

1
console-setupデフォルトでは、多くの構成シーケンスをサポートしていないようです。実行dumpkeys --compose-onlyして、どれを確認できます。console-setupinitスクリプトを変更して、実行場所に追加の構成ルールを追加できる必要がありますloadkeys
ミケル

2

コンソールの「作成」では、2文字を入力できますが、3文字目を出力できます。

問題は、構成定義では、2つの入力(つまり、型付きキーに関しては構成できませんが、型付きシンボルに関してのみ)と出力の両方としてbytesを使用することです。

マルチバイト(少なくとも1〜4バイト)であるUTF-8で機能させるには、コンソール入力の処理方法を大幅に変更する必要があり、現在使用されている単純なchar配列をより複雑なものに置き換えます。そうする予定はないようです(カーネル開発者の間のコンセンサスは、コンソールは最後のリゾートにのみ使用されるシンプルなものであり続けるべきであるということです。実際にユニコードが必要な場合は、bidi、シェーピングなども必要になる可能性があります;グラフィカル端末(X11のフルスクリーンxterm。ただし、他の可能性もあります)を実行することをお勧めします。

したがって、実際には、コンソール上のマルチバイト文字では機能せず、機能しません。ただし、コンポーズ定義をプレーンASCIIに制限しても機能します。

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

    ロードキー/ 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はチルダ(〜)を使用します。


おかげで、動作するようになりました。のみに変更compose 'a' 'a' to 'å'compose 'o' 'a' to U+00E5なければなりませloadkeysんでした。そうでなければ、構文エラーについて不平を言いました。
エマニュエルベルク

「å」を使用したとき、iso-8859-1(utf-8ではない)でファイルを作成しましたか?
パブロサラチャガ

知りません。どうすれば確認できますか?
エマニュエルベルク

ファイルがutf-8にあるかどうかをテストするには:iconv -f utf-8 -t utf-8 filename エラーがない場合、utf-8にあります
パブロSaratxaga

これはファイルをcatするように見えますが、いいえ、echo $?少なくともエラーはなく、への出力もありませんstderr。また、fileUTF-8であるため、理にかなっています。
エマニュエルベルク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.