Shift-Spaceの削減

Shift-Spaceの削減

最新のWebブラウザとテキストコンテンツを含む他のソフトウェアでは、Space1画面程度下にスクロールします。ShiftSpace除いて、すべて上にスクロールしますless

ShiftSpace上にスクロールを使用するにはless?または、そのタスクを実行できる他のポケットベル(POSIX互換性が唯一の要件)がありますか?

一部の端末エミュレータと一部の端末UIライブラリ(ncurses?)が認識されていないと聞きましたShiftSpace。これが有効な問題ですか?

答え1

技術的限界による文化衝突をおっしゃったようです。Shift+は+Spaceと同じ出力を生成するため、UnixSpace端末モデルで同じように扱われます。 2つを区別するには、キーアップ/キーダウンイベントをサポートするプログラミング環境が必要です。これは、キーの再マッピングをサポートするX11およびターミナルエミュレータで可能です。Shift+をSpace次に再マップする例PageUp

# For [u]rxvt, in ~/.Xdefaults:
URxvt.keysym.Shift-space: \033[5~

答え2

Space端末エミュレータは、とに同じ文字を送信しますShift+Space。そうでない場合は、キーを押しながらテキストを入力するのが厄介ですShift(参照@egmontの答えこの主張を拡張します)。

Shift+Spaceただし、デフォルトではスペースを挿入する一連の文字にマップすることでこの問題を解決できます。たとえば、そのキーを押すと上にスクロールするようにlessアプリケーションを構成できます。

たとえば、これらのシーケンスは次のようになります(BSが` DEL SPCに変更される文字であるシステムではDEL)。BSerase

の場合、xtermリソースを追加します。

XTerm.VT100.translations: #override \
  Shift <KeyPress> space: string("`") string(0x7f) string(" ") 

そして構成less

printf '%s\n' '#command' '`\177\40 back-screen' | lesskey -

答え3

less現在はサポートされていませんが、当然追加可能

プログラムが使用する場合xterm制御シーケンス端末に書き込んで2に設定し、有効な modifyOtherKeys修飾子キーに関する追加情報をキーにコメントとして追加します。特に、このキーの場合、xtermでアクティブになると+はになります。 +と正しく解釈されてから上にスクロールする必要があります。\e[>4;2mxtermSpacemodifyOtherKeysShiftSpace\e[27;2;32~lessShiftSpace

これは確かにxtermで動作しますが、すべての端末アプリケーションで動作するわけではありません。ただし、オンになっているエスケープシーケンスを認識しない端末は、modifyOtherKeysエスケープシーケンスを無視してShift+を押すと、プログラムに通常の空白文字を送信し続けますSpace

modifyOtherKeysxtermのウェブサイトには、コードの計算方法を説明する非常に詳細なページがあります。https://invisible-island.net/xterm/modified-keys.html

答え4

ターミナルエミュレータでは、この機能はShiftキーを押し続けると、スペースを含む大文字のテキスト入力を中断します。たとえば、「It's A Title」と入力するには、「A」と「T」の間にShiftキーを離す必要があります。押し続けると、カーソルが別の場所に移動し、入力した内容の残りの部分が間違って配置されます。私はこれがスクロール機能で取得するよりも迷惑になると確信しています。

テキストを入力するときに一般的な動作を維持し、下にスクロールするときにスペースを上にスクロールするには、アプリの大幅な再設計と協力が必要です(たとえば、Shift + Spaceが送信するものをアプリで切り替えることができます)。起こります。

主な違いは、GUIアプリケーションはコンテンツを編集または表示するときに「コンテキスト」を知っているのに対し、ターミナルエミュレータはそれを知ることができないことです。

関連情報