Делайте работу «читать», когда не фокусируетесь на терминале

У меня есть следующий скрипт, который спамает кнопку в программе при нажатии кнопки V

#!/bin/bash winid=$(xdotool search "application name here" | head -n1) while true; do read -rsn1 input if [ "$input" = "v" ]; then xdotool keydown --window $winid "button" xdotool keyup --window $winid "button" fi done 

Однако это работает только тогда, когда терминал сконцентрирован, есть ли способ заставить его прослушивать все нажатия клавиш?

  • Как скопировать текст из командной строки в буфер обмена без использования мыши?
  • Повторно активировать сохраненный pid окна с помощью xdotool
  • Как совместить условия с xdotool?
  • xdotool sleep 1 vs sleep 1, любая разница?
  • Как запустить приложение в качестве док-станции в openbox
  • Несколько «WID», связанных с «Chrome»?
  • Есть ли у xdotool журнал?
  • Ярлык клавиатуры, чтобы открыть новый терминал, если он не существует на этом рабочем столе. В противном случае сосредоточьте текущий
  • One Solution collect form web for “Делайте работу «читать», когда не фокусируетесь на терминале”

    Это работает для пользователя root :

     cat /dev/input/$(grep -E 'Handlers|EV=' /proc/bus/input/devices | \ grep -B1 'EV=120013' | grep -Eo 'event[0-9]+') | \ while read -rsn1 foo ; do echo "$foo" ; done | nl 

    Вывод (до Ctrl-C ):

      1 ԥ 2  W 3 ^ 4 5 

    Код читается от того, какой файл / dev / input / event * в настоящее время соответствует клавиатуре. Echos каждое нажатие на отдельные строки, затем номера каждой строки – нажатия клавиш быстро накапливаются, поэтому номера строк помогают показать, что процедура работает.

    Попробуйте открыть текстовый редактор в маленьком окне переднего плана, введите текст в редакторе и обратите внимание, что номера прокручиваются на фоновом терминале.


    Код grep выше заимствован из ответа JacobP здесь: захват клавиатуры клавиатуры Linux / dev / inputX

    Linux и Unix - лучшая ОС в мире.