저는 일부 통계를 표시하기 위해 Chromium(키오스크 모드)이 포함된 Raspberry Pi를 사용하고 있습니다. Pi에는 키보드가 연결되어 있지 않아서 검색해봤습니다.터미널에서 Chromium(탭) 프로세스로 키 입력을 보내는 솔루션. 일반 입력은 작동하지만 F5
이 솔루션을 사용하여 (특수 키: 브라우저 새로 고침) 같은 것을 어떻게 보내나요?
# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0
답변1
GUI 프로그램은 표준 입력에서 데이터를 읽지 않습니다.X 서버. 창에 키 입력을 삽입할 수 있는 도구가 있습니다.xdo 도구꽤 일반적이고 편리합니다.
키 입력을 보내려는 창 ID를 찾아야 합니다. xdotool을 사용하여 이를 수행할 수 있습니다. xdotool search --class Chrome
모든 Chrome 창에 대한 창 ID 목록을 반환합니다. 여러 개가 반환되는 경우 원하는 항목을 선택해야 합니다. xdotool search --name
카테고리 대신 제목을 일치시키는 데 사용할 수 있습니다 . 다음 출력을 구문 분석할 수도 있습니다.제어판필요한 창 ID를 추출합니다.
올바른 창 ID를 찾으면 xdotool
Inject KeyStrokes를 호출할 수 있습니다. 불행하게도 많은 응용 프로그램은 합성 이벤트, 즉 다른 응용 프로그램에서 보낸 키 입력 및 마우스 이벤트를 거부합니다. 현재 Chrome 버전의 경우입니다. 키 입력은 다른 메커니즘을 통해 다른 응용 프로그램에서 삽입될 수 있지만 이를 위해서는 창에 초점이 있어야 합니다. xdotool을 사용하여 이 모든 작업을 수행할 수 있지만 이로 인해 초점이 Chrome 창으로 깜박였다가 매우 빠르게 돌아오게 됩니다. 다음 코드 조각은 F5임의의 순서로 첫 번째 Chrome 창으로 전송됩니다.
xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)
또는 이전 버전의 xdotool을 사용하세요.
xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)
F5이 정보는 창으로 전송되며 이를 어떻게 처리할지 결정하는 것은 프로그램에 달려 있다는 점을 기억하세요 . Chrome에서는 현재 탭이 다시 로드됩니다.
답변2
위에서 제안한 솔루션은 다음과 같이 xdotool을 사용합니다.
xdotool key --windowid <window> <keystroke>
이것은 나에게 효과가 없습니다. 몇 가지 실험 끝에 도착했습니다.
xdotool windowactivate --sync <window> key <keystroke>
이것이 작동하는 것처럼 보였을 때 몇 가지 스크립트를 정의하고 다음과 같이 .lircrc 파일을 업데이트했습니다.
답변3
Raspbian Wheezy를 실행하는 Raspberry Pi에서도 비슷한 사용 사례가 있습니다. 키오스크 모드를 사용하여 Chrome에서 탭을 회전해야 합니다(슬프게도 이전 버전의 Chrome에서 이를 수행하기 위해 확장 프로그램을 설치하는 것은 더 이상 합리적이지 않습니다). 허용된 답변의 예에는 오타가 있거나 내 소프트웨어 버전에서 작동하지 않았습니다. 다음은 저에게 도움이 된 것입니다.
xdotool key --window "$(xdotool search --class Chromium | head -1)" Ctrl+Tab
답변4
과거에 키 입력 전송과 같은 작업을 위해 자동 단축키를 사용했지만 Linux에서는 사용할 수 없지만 빠른 Google 검색을 통해 IronAHK(http://www.ironahk.net/) 아직 사용할 수 있는 문서가 많지 않지만 도움이 될 수 있습니다.