如何在bash中获取MouseMove和MouseClick?

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

请告诉我如何获得这些事件。

xterm终端仿真器定义了一些控制序列来进行鼠标追踪,您可以在xterm分布的文档ctlseqs的“ 鼠标追踪 ”部分了解更多关于它们的信息。 如果你安装了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 – >所有移动报告,报告所有移动。

控制顺序是CSI ? number h CSI ? number h为使能和CSI ? number l CSI ? number 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模式。 应用程序应该处理新的和旧的鼠标报告响应,以继续在不支持新模式的情况下在终端仿真器上工作。

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

  • 午夜指挥官#2956
  • 复活节门票#26
  • 午夜指挥官票#2662

bash不知道有关鼠标或鼠标点击的任何信息。 默认情况下没有光标或类似的东西。

您可以安装“通用鼠标服务器”。 看看这个: http : //www.linuxfromscratch.org/blfs/view/6.3/general/gpm.html ,例如在控制台中使用复制和粘贴。 也许你可以使用这些工具来处理你的bash脚本。

…但是,根本不存在对bash-shell的本地鼠标支持

您可以使用xdotool进行mousemove和mouseclick事件。 xdotool是一个伪造键盘和鼠标的工具。 通过键入来安装它,sudo apt-get install xdotool。 通过使用xdotool,您可以使用键盘和鼠标自动执行几乎所有的操作。

您可以使用软件包“xautomation”中的命令“xte”。

 apt-get install xautomation 

作为一个例子,可以注意到以下命令:

 xte 'mousemove 200 300' 

因此,鼠标指针移动到屏幕的宽度200和高度300。 作为另一个例子,我们有:

 xte 'mouseclick 3' 

点击鼠标右键(1:左键,2:中键,3:右键)。 此外,您可以通过外壳按键盘上的键:

 xte 'keydown Control_L' 'key c' 'keyup Control_L' 

这个例子发送ctrl + c到shell。