使用转义序列获取以像素为单位的鼠标位置
Get mouse position in pixels using escape sequences
我正在尝试获取终端中应用程序 运行 中鼠标的位置(以像素为单位)。
- top answer to how to get MouseMove and MouseClick in bash? 解释了如何获取鼠标位置,以字符单元格而不是像素为单位计算。
- 我正在寻找一种解决方案,如果该应用程序在远程服务器上 运行 并通过 SSH 访问(使用
xdotool
将 而不是 在这种情况下有效,除非使用了 ssh -X
)。
- 我想解决方案将涉及转义序列或 IOCTL。
- 如果转义序列只适用于一个或几个终端仿真器也没关系(我可以使用检测机制在不支持转义序列的终端上提供回退)。
- 如果转义序列仅适用于少数终端仿真器,我也很想知道 "group" 允许在这些终端(例如 Sixel、Tektronix 或 ReGIS)上进行图形输出的转义序列。
目标是在大多数基于文本的应用程序中嵌入小型 GUI 元素。目前有可能在使用 Sixel、Tektronix 或 ReGIS 的相当多的终端仿真器上绘制东西,并且 \e[1000h
或类似的转义码来获取鼠标事件,不幸的是这些鼠标事件是低分辨率的(字符单元格中的坐标,不是以像素为单位)。
xterm 使用以下转义序列报告具有像素分辨率的鼠标位置:
- 开启像素分辨率:
\e[2;1'z
- 报告鼠标位置:
\e['|
我正在尝试获取终端中应用程序 运行 中鼠标的位置(以像素为单位)。
- top answer to how to get MouseMove and MouseClick in bash? 解释了如何获取鼠标位置,以字符单元格而不是像素为单位计算。
- 我正在寻找一种解决方案,如果该应用程序在远程服务器上 运行 并通过 SSH 访问(使用
xdotool
将 而不是 在这种情况下有效,除非使用了ssh -X
)。 - 我想解决方案将涉及转义序列或 IOCTL。
- 如果转义序列只适用于一个或几个终端仿真器也没关系(我可以使用检测机制在不支持转义序列的终端上提供回退)。
- 如果转义序列仅适用于少数终端仿真器,我也很想知道 "group" 允许在这些终端(例如 Sixel、Tektronix 或 ReGIS)上进行图形输出的转义序列。
目标是在大多数基于文本的应用程序中嵌入小型 GUI 元素。目前有可能在使用 Sixel、Tektronix 或 ReGIS 的相当多的终端仿真器上绘制东西,并且 \e[1000h
或类似的转义码来获取鼠标事件,不幸的是这些鼠标事件是低分辨率的(字符单元格中的坐标,不是以像素为单位)。
xterm 使用以下转义序列报告具有像素分辨率的鼠标位置:
- 开启像素分辨率:
\e[2;1'z
- 报告鼠标位置:
\e['|