设置 Shift-Escape (XTSHIFTESCAPE)
配置是否允许鼠标报告捕获 `shift` 修饰键。
- 0x1B
- ESC
- 0x5B
- [
- 0x3E
- >
- ____
- n
- 0x73
- s
参数 n 必须是整数 0 或 1。如果省略 n,
则 n 默认为 0。如果 n 是无效值,此序列不执行任何动作。
当终端程序请求 鼠标报告 时,某些鼠标 报告模式还会报告按下修饰键(control、shift 等)的情况。这会 使终端用户无法以原生方式选择文本(如果他们通常用左键单击并拖动来选择文本), 因为左键单击事件已被正在运行的程序捕获。
为绕过这一限制,许多终端模拟器(包括 xterm)
使用 shift 修饰键来临时禁用鼠标报告,从而让
原生文本选择可用。然而在这种情况下,正在运行的终端
程序无法检测 shift 单击,因为终端模拟器捕获了该事件。
此序列(XTSHIFTESCAPE)允许配置这一行为。如果
n 为 0,终端可以覆盖 shift 键而不将其
传递给终端程序。如果 n 为 1,终端程序
请求使用标准鼠标报告格式发送 shift 修饰键。
无论哪种情况,终端模拟器都不被强制遵守该请求。
例如,xterm 具有 never 和 always 终端配置,
分别用于永不允许终端程序捕获 shift 或总是允许。
如果设置了其中任一配置,则 XTSHIFTESCAPE
完全不生效。
xterm 也有 false 和 true 终端配置。在 false
情况下,终端模拟器会覆盖 shift(不允许终端程序看到它),
除非它通过 XTSHIFTESCAPE 被明确请求。
true 情况正好相反:将 shift 修饰键传递给正在运行的
终端程序,除非该程序明确表示它不需要知道 shift(n = 0)。