我想知道如何在bash脚本中为我自己的简单操作系统事件获取MouseClick和MouseMove事件。
请告诉我如何获得这些事件。
xterm终端仿真器定义了一些控制序列来进行鼠标追踪,您可以在xterm分布的文档ctlseqs的“ 鼠标追踪 ”部分了解更多关于它们的信息。 如果你安装了xterm,你可能会在/usr/share/doc/xterm/ctlseqs.txt.gz
或类似的路径上有一个副本。
在X Window系统上运行的大多数终端仿真程序(例如:Konsole,gnome-terminal,eterm,…)至少可以理解这些控制序列中的一些。 如果你想直接在Linux的虚拟终端上使用它们,你可能需要运行gpm(8)
。
有几个控制序列来启用和禁用鼠标移动报告:
控制顺序是CSI ? number h
CSI ? number h
为使能和CSI ? number l
CSI ? number l
为禁用。 CSI是ESC [
或字符0x9b
。 所以,你可以使用它们如下:
echo -e "\e[?1000h"
然后,你会得到一堆按钮上的字符,请参阅ctlseqs或console_codes(4)
的细节。 然后,您可以禁用鼠标跟踪:
echo -e "\e[?1000l"
不幸的是,以前的鼠标报告模式只能处理高达223(255 – 32)的坐标,或者在某些情况下95(127 – 32)。 所以有一些新的开关来改变报告鼠标坐标的格式:
一个好的应用策略是启用鼠标报告,然后(可选择请求urxvt 1015模式,然后)请求SGR 1006模式。 应用程序应该处理新的和旧的鼠标报告响应,以继续在不支持新模式的情况下在终端仿真器上工作。
有关新报告模式的更多信息,请访问:
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。