[apple] AppleScript의 키보드 단축키는 환경 설정 창이 열려있을 때만 작동합니다

Chrome에서 실행되는 Youtube 비디오를 재생 / 일시 정지하기 위해이 AppleScript를 작성했습니다.

on run {input, parameters}

    tell application "Google Chrome" to (tabs of window 1 whose URL contains "youtube")
    set youtubeTabs to item 1 of the result
    tell application "Google Chrome"
        execute youtubeTabs javascript "document.getElementsByClassName('ytp-play-button ytp-button')[0].click();"
    end tell

    return input
end run

에서 실행할 때 제대로 작동합니다 Automator. 서비스를 저장하고 서비스 를 실행하기 위해 키보드 단축키 + J를 추가했습니다 . 또한 설정에 추가 Automator했습니다 Accessibility( 이 SO 답변에 따름 ).

이제 이상한 부분이 있습니다. System Preferences창에 포커스 가 있으면 작동합니다 . 닫거나 다른 창으로 전환하면 바로 가기가 작동하지 않습니다. System Preferences창에 바로 가기에 해당 하는 메뉴 항목 이 있고 바로 가기를 누를 때 트리거 되기 때문에 작동하는 것으로 나타났습니다 .

도와주세요. 미리 감사드립니다.



답변

wch1zpink의 답변에 대한 나의 의견에서 언급했듯이 “서비스 설정이 올바른지 확인하고 바로 가기 키 시퀀스를 다른 사람이 사용하지 않는 것이 첫 번째 단계”이며 그 후 jackjr300이 그의 의견에 언급했습니다. 시스템이나 응용 프로그램의 다른 곳에서 사용하지 않는 키보드 바로 가기를 변경하면 (즉, ‘서비스 가 응용 프로그램 에서 입력 을 받지 못합니다 ‘가 설정된 경우), 시스템 환경 설정 이 열려 있는지 여부에 관계없이 사용할 수 있습니다 코드 , 그대로 상기 OP와 충돌하지 않는 핵심 서열이다.

또한 Automator 에서 실행 하거나 시스템 환경 설정 > 키보드 > 바로 가기 > 서비스 > 에서 충돌이없는 키보드 단축키를 사용하는 경우 시스템 환경 설정 > 보안 및 개인 정보 > 개인 정보 보호 > 이 특정 사용 사례에 대한 접근성 에서 응용 프로그램을 설정할 필요가 없습니다. (서비스를 제공 한 이름) .

문제를 해결하려면 시스템 및 응용 프로그램의 다른 곳에 아직 할당되지 않은 바로 가기 키를 사용해야합니다.

이미 사용되고 있지 않은 키 조합이 거의없는 경우 3-4 개의 키 시퀀스를 사용해야 할 수도 있습니다.


참고 로이 특정 사용 사례 return input코드 에는 전혀 필요하지 않습니다 .


답변

게시물의 전체 코드를 정확히 다음과 같이 바꾸십시오.

to clickClassName(theClassName, elementnum)
    tell application "Google Chrome" to (tabs of window 1 whose URL contains "youtube")
    set youtubeTabs to item 1 of the result
    tell application "Google Chrome"
        execute youtubeTabs javascript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();"
    end tell
end clickClassName    

clickClassName("ytp-play-button ytp-button", 0)

여기에 이미지 설명을 입력하십시오


답변