Shift-Escape の設定 (XTSHIFTESCAPE)

マウスレポートが `shift` モディファイアを 取得することを許可するかどうかを設定します。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. 0x3E
    >
  4. ____
    n
  5. 0x73
    s

パラメーター n は 0 または 1 の整数でなければなりません。n が省略された場合、 n は既定で 0 になります。n が無効な値の場合、このシーケンスは何もしません。

ターミナルプログラムが マウスレポート を要求すると、一部のマウス レポートモードでは押されているモディファイアキー(Ctrl、Shift など)も報告されます。これによって、主に左クリックでドラッグしてテキストを選択するターミナルユーザーは テキストを選択できなくなります。左クリックイベントが 実行中のプログラムに取得されるためです。

この制限を回避するために、xterm を含む多くのターミナルエミュレーターは shift モディファイアで一時的にマウスレポートを無効化し、ネイティブのテキスト選択を 可能にしています。しかし、この場合は実行中の ターミナルプログラムは Shift+クリックを検出できません。ターミナルエミュレーターが イベントを取得してしまうためです。

このシーケンス(XTSHIFTESCAPE)はこの挙動を設定するためのものです。n が 0 の場合、ターミナルは Shift キーを上書きして ターミナルプログラムに渡さないことが許可されます。n が 1 の場合、ターミナルプログラムは標準的なマウスレポートの 形式で Shift モディファイアを送るよう要求します。

どちらの場合も、ターミナルエミュレーターがこの要求を尊重するよう強制されることはありません。たとえば、xterm にはターミナルプログラムに Shift を取得させない never、または常に許可する always の ターミナル設定があります。どちらかの設定がセットされている場合、XTSHIFTESCAPE は 何の効果も持ちません。

xterm にも false と true のターミナル設定があります。false の場合、ターミナルエミュレーターは shift を上書きします(ターミナルプログラムには見せない)。 ただし、XTSHIFTESCAPE を通じて_明示的に要求された_場合を除きます。 true の場合は正反対で、実行中のターミナルプログラムが Shift を知る必要がないと 明示しない限り(n = 0)、Shift モディファイアを実行中のターミナルプログラムへ渡します。