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