Shift-Escape の設定 (XTSHIFTESCAPE)
マウスレポートが `shift` モディファイアを 取得することを許可するかどうかを設定します。
- 0x1B
- ESC
- 0x5B
- [
- 0x3E
- >
- ____
- n
- 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 モディファイアを実行中のターミナルプログラムへ渡します。