zshバインディングキーのコードはどこで入手できますか?特に左に移動する必要があります。
これまでコードを取得するさまざまな方法が見つかりました。
1)key[Down]=${terminfo[kcud1]}
ところで、terminfoのすべてのキー名はどこで見つけることができますか?
2)右矢印sudo showkey -a
のような特定の値の出力を印刷し^[[C
ますが、ctrl、Shift、Spaceなどの出力は空です。
3)Ctrl+V
ターミナルでは
いくつかの値を返しますが、Shift、Ctrlなどの場合は再び空白です。
xmodmap -pk | grep Shift
returnもありますが、0xffe1 (Shift_L)
このコードをバインドしようとすると機能しません。なぜこれが起こるのですか?
答え1
それは端末が動作する方法ではありません。
端末は修飾子キーを送信しません。修飾子は端末によって吸収され、有線を介してホストに送信されません。端子入力の形式は次のとおりです。文字順いいえキーボードイベント。 (はい、DEC VT520などの一部の物理端末は「スキャンコード」モードをサポートしていますが、これは状況を解決しません。実際に試してみてください。そうすれば、ほぼ確実になります。いいえDEC VT520またはそれを完全にエミュレートするすべてを使用してください。 )これらのシーケンスは、特定の非グラフィックキー(機能、カーソルキーボード、編集キーボード、電卓キーボードキーなど)を表す事前設定された文字またはECMA-48制御シーケンスです。
ターミナルI / Oを使用するプログラムは、それをI / Oパラダイムの一部として使用しません。
ところで、Terminfo には ECMA-48 制御シーケンスのほとんどすべてまたはほとんどがありません。これは実際に端末入力を処理する非常に過酷な方法です。これはキーを非常に正しく処理できないので皮肉です。県グラフィックではないキーと修飾キーを含みます。したがって、端末入力について知らせるためにterminfoを見つけないでください。
GUI、他のオペレーティングシステムの「コンソール」、カーネル(および一部のユーザースペース)仮想端末の基盤となる下位レベルのHIDは、異なる概念です。それらするアプリケーションで見ることができるキーボードを押す/離す入力イベントの概念があります。しかし、POSIX 汎用端末インタフェースは、ZシェルでZLEが使用しているように思ったようには機能しません。
追加読書
答え2
このスレッドにはいくつかの興味深い点がありますが、それらのどれもShiftキーのキーバインディングを示していません。
システム環境設定 - >キーボード - >修飾キーに修飾キーを表示すると、Shiftキーはすべて変更できないようです。 Shiftロックはありますが、Shiftキーではありません