Intereting Posts

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

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

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

Это работает для пользователя 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