gpt4 book ai didi

linux - 如何在 bash 中获取 MouseMove 和 MouseClick?

转载 作者:IT王子 更新时间:2023-10-29 00:20:15 24 4
gpt4 key购买 nike

我想知道如何在 bash 脚本中为我自己的简单操作系统事件获取 MouseClick 和 MouseMove 事件。

请告诉我如何获取该事件。

最佳答案

xterm 终端仿真器定义了一些控制序列来进行鼠标跟踪,您可以在文档ctlseqs鼠标跟踪 部分了解更多信息。对于 xterm 分布。如果您安装了 xterm,您可能会在 /usr/share/doc/xterm/ctlseqs.txt.gz 或类似路径中获得一份副本。

在 X Window 系统上运行的大多数终端仿真器(例如:Konsole、gnome-terminal、eterm 等)至少可以理解其中的一些控制序列。如果您想直接在 Linux 的虚拟终端之一上使用它们,您可能必须运行 gpm(8)

有几个用于启用和禁用鼠标移动报告的控制序列:

  • 9 -> X10 鼠标报告,为了与 X10 的 xterm 兼容,报告按钮按下。
  • 1000 -> X11 鼠标报告,按钮按下和释放报告。
  • 1001 -> 高亮报告,对于报告鼠标高亮很有用。
  • 1002 -> 按钮移动报告,按下按钮时报告移动。
  • 1003 -> all movement reporting,报告所有 Action 。

控制序列是 CSI ?数字 h 用于启用和 CSI?数字 l 用于禁用。 CSI 是 ESC [ 或字符 0x9b。因此,您可以按如下方式使用它们:

echo -e "\e[?1000h"

然后,您将在按下按钮时得到一堆字符,详情请参阅ctlseqsconsole_codes(4)。然后,您可以禁用鼠标跟踪:

echo -e "\e[?1000l"

不幸的是,以前的鼠标报告模式只能处理最多 223 (255 - 32) 的坐标,或者在某些情况下 95 (127 - 32)。所以有一些新的开关可以改变报告鼠标坐标的格式:

  • 1006 -> 返回十进制值(xterm,许多其他终端仿真器,但不是 urxvt)
  • 1015 -> 报告为十进制值(urxvt、xterm、其他终端仿真器,一些应用程序发现解析起来很复杂)
  • 1005 -> 返回编码为 utf-8 的报告(xterm、urxvt,以多种方式损坏)

应用程序的一个好策略是启用鼠标报告,然后(可选地请求 urxvt 1015 模式,然后)请求 SGR 1006 模式。该应用程序应同时处理新旧鼠标报告响应,以便在不支持新模式的情况下继续在终端仿真器上工作。

有关新报告模式的更多信息,请访问:

关于linux - 如何在 bash 中获取 MouseMove 和 MouseClick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com