xdotool 명령을 실행하여 키 누름을 시뮬레이션하는 바로 가기를 만드는 방법은 무엇입니까?


11

사용자 정의 바로 가기를 사용하여 미디어 키 누르기를 시뮬레이션하려고합니다.

지금까지 명령을 사용하여 필요한 시뮬레이션을 달성 할 수있었습니다.

xdotool key XF86AudioPlay

그것은 완벽하게 작동하며, 실행될 때마다 음악 플레이어를 일시 중지하거나 시작합니다.

바로 가기로 실행하려고 할 때 문제가 발생합니다.

먼저 사용자 지정 바로 가기로 별칭을 실행하려고 시도했지만 작동하지 않았습니다.

이 질문 에 설명 된대로 :

키보드 바인딩으로 실행되는 명령은 쉘을 통해 구문 분석되지 않습니다. 가장 좋은 방법은 homedir에 디렉토리 저장소를 만드는 것입니다.

다음으로 제안 된 스크립트를 작성하고 이름을 지정했습니다 simplay.

#!/bin/sh
xdotool key XF86AudioPlay

의 일부인 bin 폴더 안에 있으며 PATH, 제대로 작동하며 모든 위치에서 실행할 수 있습니다.

사용자 정의 바로 가기를 만들려고 할 때 실행할 수 없었으며 구성은 다음과 같습니다.

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

조금 더 검색 한 후 바로 가기를 실행하는 다른 방법을 찾았습니다.

gnome-terminal -e simplay

터미널에서 시도해 보았을 때 새 터미널 창을 빠르게 열고 자식 프로세스를 실행하고 음악을 일시 중지 한 다음 즉시 창을 닫습니다.

바로 가기에 대한 명령을 변경하고 눌렀을 때 동일한 동작이 터미널을 열고 즉시 닫히는 것을 보았지만 이번에는 자식 프로세스가 음악을 일시 중지하지 않아 이전의 모든 시도에서 스크립트가 호출되었다고 생각합니다 그러나 어떻게 든 실행할 수 없습니다.

지식에 따라이 문제를 어떻게 해결할 수 있습니까?

답변:


12

문제

단축키는 시뮬레이션 된 키 누름과 동시에 수행됩니다.

다른 키 누름과 함께 호출되는 키 누름을 시뮬레이션하는 명령을 실행하면 실제로 세 번째 키 누름을 시뮬레이션합니다.

해결하다

시뮬레이션 된 키를 누르는 것과 동시에 단축키가 실행되는 것을 방지해야합니다. 즉, 지연을 추가하십시오.

/bin/bash -c "sleep 1 && xdotool key XF86AudioPlay"

이 명령을 바로 가기에 추가하면 작동합니다.

노트

물론을 sleep 1조합하여 "끈적 거리는"방식에 따라 편안한 느낌을주는 최상의 값으로 설정하기 위해 의 값을 사용하여 비트를 연주 할 수 있습니다 . sleep 0.5잘 할 수 있고 단축키가 더 빨리 작동하도록하십시오.


8

바로 가기 정의에서 직접 명령을 사용할 수도 있으므로 독립 실행 형 스크립트를 만들 필요가 없습니다.

"sleep 1"해결 방법을 사용하는 대신 --clearmodifiers플래그를 사용할 수 있습니다. 즉, 사용자 정의 바로 가기는 다음과 같습니다.

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

나를 위해 바로 가기를에 매핑 할 때 작동합니다 Super+F9.


위의 코드 스 니펫은 파일입니까? 그렇다면 바로 가기를 구현하기 위해 특정 위치에 배치하거나 특정 명령을 실행해야합니까?
JellicleCat

1
이 스 니펫은 내가 사용한 바로 가기에 대한 설명 일뿐입니다. 우분투에서는 키보드 설정에서 사용자 정의 단축키를 만들 수 있습니다. 그러나 이후 Ubuntu 버전을 업그레이드했으며 이제 "Play (또는 재생 / 일시 정지)"작업을 내가 선택한 주요 조합으로 직접 매핑 할 수 있습니다. 이는 xdotool을 사용하는 것보다 더 안정적인 것으로 판명되었습니다.
Jan

--clearmodifiers보다 더 나은 방법은 스크립트 호출에 사용하는 핫키에 대해 "키업"을 발행하는 것입니다. 약간의 단점은 스크립트를 호출하기 위해 핫키를 변경하는 경우 스크립트를 업데이트해야한다는 것입니다.
바나듐

1

보다 빠른 성능을위한 대안 sleep 1 && xdotool ...은 xdotool을 사용하여 바로 가기 키를 해제하는 것입니다. 조금 더 길지만 사용할 수도 있습니다

/bin/bash -c "xdotool keyup R Alt_L Ctrl_L && xdotool key XF86AudioPlay"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.