쉘 스크립트에서 특정 키가 눌렸는지 확인

쉘 스크립트에서 특정 키가 눌렸는지 확인

백그라운드에서 실행되는 쉘 스크립트에서 특정 키가 눌렸는지 확인하는 방법이 있습니까? 키나 2개 또는 3개의 키 조합을 누르면 즉시 노래 재생 목록을 재생해야 하는 쉘 스크립트를 실행한다고 가정해 보겠습니다. 쉘 스크립트는 crontab에 추가되므로 터미널에서는 실행되지 않습니다. 그러면 이 쉘 스크립트에서 누른 키를 캡처하는 것이 가능합니까?

답변1

귀하의 요청이 명확하지 않습니다. 하지만 내가 올바르게 이해했다면 먼저 시도해 보는 것이 좋습니다 autokey-gtk. 미리 정의된 키 세트를 누를 때마다 실행되는 스크립트를 Python으로 작성할 수 있는 Python 기반 애플리케이션입니다. 이것이 귀하의 요구 사항에 맞는지 확인하십시오.

글쎄, 수동으로 수행하려는 경우 기본적으로 두 가지 방법이 있습니다.

해결 방법 #1: 키로깅 방법

키보드 키 입력을 계속 기록하고 특정 조합을 눌렀을 때 이벤트를 시작하는 스크립트를 작성할 수 있습니다. 레코드 키의 경우 아래 코드를 확인할 수 있습니다.파이키로거.

해결 방법 #2: 키바인더 방법

먼저, 키를 바인딩할 방법이 필요합니다. 한 가지 방법은 다음과 같습니다.키 클립. 또는 설정에서 "키보드 단축키"를 사용하여 간단히 키를 바인딩할 수도 있습니다. 이제 특정 키 세트를 누를 때마다 홈 폴더의 일부 XYZ 파일에 일부 텍스트를 쓰는 스크립트가 실행됩니다.

뒤에서는 crontab을 사용하여 시작된 스크립트가 1초마다 이 XYZ 파일을 읽습니다. 파일 내용에 따라 스크립트는 다른 작업을 시작합니다.

답변2

일반적으로 포커스가 있는 애플리케이션만 키 이벤트를 수신합니다. 우리는 그래픽 환경을 갖춘 데스크탑 시스템에 대해 이야기하고 있는 것입니다. 그렇죠?

데스크탑 환경에서 이벤트를 캡처할 수 있습니다. 이는 gnome, kde, xfce 또는 기타 환경을 실행하는지 여부에 따라 약간 다르지만 일반적으로 이러한 환경에는 일반 설정 애플리케이션, 검색 키보드, 단축키에서 액세스할 수 있는 단축키 핸들러가 있습니다. , 등.

여기에서 를 통해 백그라운드에서 실행 중인 애플리케이션의 PID를 확인할 수 있습니다 mypid=$(pidof myscript.sh). 그런 다음 사용자 신호(SIGUSR1, SIGUSR2 - 참조 man 7 signal)를 스크립트에 보낼 수 있습니다( man kill예, 실제로 참조). , 다음을 kill사용하여 친근한 신호를 보낼 수 있습니다. 하지만 제 생각에는 crontab에서 스크립트를 시작하고, 키 누르기를 기다리고, 해당 신호를 처리하는 것이 너무 복잡합니다. 더 쉬움: 단축키에서 직접 스크립트를 실행하세요.

이제 데스크탑 환경을 알려주시고, 설정을 찾을 수 없다면 키 조합을 변경해 보세요.

관련 정보