それは端末が動作する方法ではありません。

それは端末が動作する方法ではありません。

zshバインディングキーのコードはどこで入手できますか?特に左に移動する必要があります。

これまでコードを取得するさまざまな方法が見つかりました。

1)key[Down]=${terminfo[kcud1]}ところで、terminfoのすべてのキー名はどこで見つけることができますか?

2)右矢印sudo showkey -aのような特定の値の出力を印刷し^[[C ますが、ctrl、Shift、Spaceなどの出力は空です。

3)Ctrl+Vターミナルでは

いくつかの値を返しますが、Shift、Ctrlなどの場合は再び空白です。

xmodmap -pk | grep Shiftreturnもありますが、0xffe1 (Shift_L)このコードをバインドしようとすると機能しません。なぜこれが起こるのですか?

ベストアンサー1

それは端末が動作する方法ではありません。

端末は修飾子キーを送信しません。修飾子は端末によって吸収され、有線を介してホストに送信されません。端子入力の形式は次のとおりです。文字順いいえキーボードイベント。 (はい、DEC VT520などの一部の物理端末は「スキャンコード」モードをサポートしていますが、これは状況を解決しません。実際に試してみてください。そうすれば、ほぼ確実になります。いいえDEC VT520またはそれを完全にエミュレートするすべてを使用してください。 )これらのシーケンスは、特定の非グラフィックキー(機能、カーソルキーボード、編集キーボード、電卓キーボードキーなど)を表す事前設定された文字またはECMA-48制御シーケンスです。

ターミナルI / Oを使用するプログラムは、それをI / Oパラダイムの一部として使用しません。

ところで、Terminfo には ECMA-48 制御シーケンスのほとんどすべてまたはほとんどがありません。これは実際に端末入力を処理する非常に過酷な方法です。これはキーを非常に正しく処理できないので皮肉です。グラフィックではないキーと修飾キーを含みます。したがって、端末入力について知らせるためにterminfoを見つけないでください。

GUI、他のオペレーティングシステムの「コンソール」、カーネル(および一部のユーザースペース)仮想端末の基盤となる下位レベルのHIDは、異なる概念です。それらするアプリケーションで見ることができるキーボードを押す/離す入力イベントの概念があります。しかし、POSIX 汎用端末インタフェースは、ZシェルでZLEが使用しているように思ったようには機能しません。

追加読書

おすすめ記事