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

У меня есть следующий скрипт, который спамает кнопку в программе при нажатии кнопки 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 

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

  • Можно ли использовать xdotool в каком-то окне не спереди?
  • Как я могу нажать клавишу Windows с помощью xdotool
  • `xdotool` не отправляет ключи
  • Эмуляция клавиатуры в Wayland
  • Имитация нажатия клавиши PrintScreen
  • xbindkeys && xdotool => спонтанные отключения кнопок мыши
  • X: узнать, видимо ли окно пользователю, т.е. не покрыто другими
  • xdotool: как искать окно по названию и классу с разными шаблонами (аналогично AutoHotkey)
  • 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 - лучшая ОС в мире.