Использование xdotool для определения щелчка и применения соответствующих действий - PullRequest
3 голосов
/ 22 декабря 2011

Я бы хотел, чтобы xdotool обнаружил, если щелкнуть правой кнопкой мыши по конкретному окну (я могу без проблем захватить идентификаторы окон), а затем запустить соответствующую команду / функцию оболочки, если щелчок был в нужном окне.

В реальном выражении это означает, что я хочу, чтобы xdotool получил идентификатор окна для окна воспроизведения видео VLC, а затем запустил определенную команду, если щелкнуть правой кнопкой мыши на этом окне.

Я используюBASH 4.2.0 (1) -релиз и Xdotool 2.20101012.3049

РЕДАКТИРОВАТЬ: Это так близко, как я получил, но это не работает:

xdotool search --name "VLC" behave %@ mouse-click exec 'myscript'

Однако этиКоманды работают, но не совсем то, что мне нужно:

xdotool search --name "VLC" behave %@ mouse-enter exec 'myscript'

xdotool search --name "VLC" behave %@ mouse-leave exec 'myscript'

Приветствия ..

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Я понимаю, что это очень старая тема, но man xdotool SENDEVENT NOTES объясняет (неявно), почему «щелчок мышью» может не работать.
В качестве альтернативы, использование «focus» вместо «щелчка мышью» работает дляпользовательский щелчок мыши.
Обратите внимание, что команда
xdotool search --name "VLC" behave %@ focus exec 'myscript'
может не завершиться, но остаться активной.По крайней мере, это верно для способа, которым я пытаюсь использовать это, чтобы установить места обрезки в imagemagic, таким образом
xdotool search --name "imagemagic" behave %@ focus getmouselocation

0 голосов
/ 22 декабря 2011

Может работать что-то вроде следующего:

xdotool behave 18893317 mouse-click exec '/usr/bin/bash -c "echo hi"'

Однако xdotool не работает для произвольных приложений. Вы можете попытаться прочитать события мыши напрямую, используя: evdev.py

ls -l /dev/input/by-id/usb-062a_0000-event-mouse 
lrwxrwxrwx 1 root root 9 2011-12-21 18:05 /dev/input/by-id/usb-062a_0000-event-mouse -> ../event4
evdev.py /dev/input/event4

Когда вы получаете щелчок, вы можете использовать координаты, чтобы определить, находится ли он в окне VLC (путем сравнения с координатами, возвращаемыми xdotool).

...