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
그러나 이것은 터미널에 초점이 맞춰져 있을 때만 작동합니다. 모든 키 누르기를 수신하도록 할 수 있는 방법이 있습니까?
답변1
이는 다음에 적용됩니다.뿌리사용자:
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/입력/이벤트*파일은 현재 키보드에 해당합니다. 별도의 줄에 각 키 누르기를 에코한 다음 각 줄에 번호를 매깁니다. 키 입력이 빠르게 추가되므로 줄 번호는 루틴이 실행 중인지 표시하는 데 도움이 됩니다.
작은 전면 창에서 텍스트 편집기를 열고 편집기에 텍스트를 입력한 다음 백그라운드에서 터미널을 가로질러 숫자가 스크롤되는 것을 지켜보세요.
위의 코드는 grep
다음에서 빌려온 것입니다.제이콥 P대답은 여기에 있습니다:
Linux 키보드 이벤트 캡처 /dev/inputX