2011-05-11 81 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。