使用转义序列以像素为单位获取鼠标位置

Suz*_*ron 3 user-interface ansi-escape terminal-emulator

我试图在终端中运行的应用程序中以像素为单位获取鼠标的位置。

  • 顶端回答如何得到的MouseMove和鼠标点击在bash?解释了如何获得鼠标位置,以字符单元数计算,而不是以像素为单位。
  • 我正在寻找一个解决方案,如果应用程序在远程服务器上运行,并通过SSH访问(使用也可以工作xdotool不会在这种情况下工作,除非ssh -X使用)。
  • 我想解决方案因此将涉及转义序列或 IOCTL。
  • 如果转义序列仅适用于一个或几个终端模拟器(我可以使用检测机制在不支持转义序列的终端上提供回退),那也没关系。
  • 如果转义序列仅适用于少数终端仿真器,我也很想知道允许在这些终端(例如 Sixel、Tektronix 或 ReGIS)上进行图形输出的转义序列“组”。

目标是在大多数基于文本的应用程序中嵌入小的 GUI 元素。目前在很多使用 Sixel、Tektronix 或 ReGIS 的终端模拟器上都可以绘制东西,\e[1000h或者类似的转义码来获取鼠标事件,不幸的是,这些鼠标事件是低分辨率的(字符单元格中的坐标,而不是像素)。

小智 5

xterm 使用以下转义序列以像素分辨率报告鼠标位置:

  • 打开像素分辨率: \e[2;1'z
  • 报告鼠标位置: \e['|

详情请见http://invisible-island.net/xterm/ctlseqs/ctlseqs.html