2011-05-11 27 views
12

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

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

+0

还需要停止跟踪终端中的鼠标点击... – 2017-02-22 07:41:06

回答

3

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

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

...但都:有这场舞会壳没有本地鼠标支持

+0

我完全不知道它是如何工作的,但在SSH会话(SSH客户端Ubuntu,服务器Debian)中使用elinks(文本模式浏览器)时。我可以使用滚轮滚动页面并点击链接或按钮。 – 2011-05-11 15:56:27

+1

我认为/怀疑你在图形环境/ X-Windows(KDE,Genome,...)内部使用终端/ xterm所以这是终端仿真器的一项功能。这不是一个bash功能。我也可以使用其他shell,比如ksh,ash或sh。我相信,它不会在(例如)运行级别3上运行 - 没有运行窗口系统。 – 2011-05-11 16:05:41

+0

听起来合理。是的,所描述的功能例如工作在KDE中。但是,哪种通信方式可以将有关鼠标事件的信息提供给elinks?我预计该应该必须传递一些数据。有人可以详细解释这个或提供有用的链接? – 2011-05-12 10:21:10

23

在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 - >所有移动报告,报告所有移动。

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

的更多信息:

+0

很好的答案,以及几年后关于扩展的一个很好的编辑。真心赞赏! :) – egmont 2016-12-06 09:33:06

+0

'''echo -e“\ e [?1000l“''' - 正是我需要终止在终端跟踪我的鼠标coords!谢谢 – 2017-02-22 07:40:15

1

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

-1

您可以使用'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。