2011-02-11 2 views

답변

8

기본적으로 tell app "System Events" 문을 사용하여 키 입력 및 키 코드를 보냅니다. 이 나던 작업

keystroke page up key 
keystroke page down key 
keystroke home key 

을하지만 나를 위해 : 이론적으로 , 당신은 다음을 사용할 수 있습니다. 좋은 소식은 대신 키 코드를 사용할 수 있다는 것입니다. 내가 좋은 무료 Full Key Codes 응용 프로그램을 사용하여 그들을 읽을 수 있지만, 그것은 동시에 두 개의 키를 읽는 것은 약간 까다 롭습니다 제안합니다.

페이지까지 : FN + 까지 키 : key code 116

페이지 아래로 : 을 FN

FN + 화살표 키의 키 코드

는 -combos 다음과 같습니다 + 아래쪽 키 : key code 121

홈 : FN + 왼쪽 키 : key code 115

종료 : FN + 가 오른쪽 키 : 당신은 사파리에서 열린 긴 페이지가 있고, 경우 key code 119

그래서 예를 들어 당신이 원하는 끝까지 스크롤하려면

tell application "System Events" 
tell application "Safari" to activate 
    — to see the animation, we wait a moment: 
    delay 0.5 

    key code 119 

end tell 
+0

환상적입니다. 고맙습니다. 나는 많은 것을 시도해 보았습니다. 많은 것들이 당신의 솔루션과 비슷했지만, 그들은 옳지 않았습니다. 이것은 매력처럼 작동합니다. –

+1

아쉽게도 참조 된 키보드 유틸리티는 더 이상 사용되지 않습니다 (PowerPC 플랫폼 용으로 작성). ** Key Code ** (https://itunes.apple.com/us/app/key-codes/id414568915?mt=12)는 여전히 유지 관리되고 있으며 무료입니다. – mklement0

1

키 입력을 보내는 대신을 사용하는 것이 좋습니다..

주의 할 : GUI 스크립팅 응용 프로그램의 주어진 버전에 대한 키 입력을 보내는 것보다더 강력하지만, 향후 버전에서 응용 프로그램의 레이아웃의 변경이 코드을 깰 수 있습니다.

또한

:

  • GUI 스크립팅은 보조 장치에 대한 액세스가 활성화 것을 요구한다;

    • 10.8로,이 프로그램, tell application "System Events" to set UI elements enabled to true (필수 관리자 권한)을 실행하여 시스템 전체 슬프게도
    • , 10에서 수행 할 수 있습니다 : 가능은 관리자 권한이 필요합니다.9+는이 개별적으로 더 이상 작동하고, 응용 프로그램을 수동으로 를 권한이 있어야합니다 - 시스템이 첫 번째 실행에 메시지를 표시합니다이 tell application "System Events" to get UI elements enabled 것이다 액세스 가능 여부를보고을 두 시나리오 모두에서
    • 그러나, (관리자 권한이 필요) 또는 아니. 비 단순하고 지루할 수 오른쪽 UI 요소 대상 결정
  • ; Xcode과 함께 제공되는 Accessibility Inspector 유틸리티를 사용하면 도움이됩니다. 이 유틸리티에 의해보고 된 클래스 이름은 System Events 사전에 포함 된 UI element 클래스에 해당합니다. 예 : AXSplitGroupsplitter group에 해당합니다.

다음 스크롤 Safari 6.0.3의 상단에 전면 창

(보조 장치에 대한 액세스가 가능해야 함) :

tell application "System Events" 

    # Use Accessibility Inspector to find the desired target. 
    tell front window of process "Safari" 
     tell scroll bar 1 of scroll area 1 of group 1 of group 1 of last group 
      set value of attribute "AXValue" to 0 # Scroll to top. 
     end tell 
    end tell 

end tell 

업데이트 : 알림, 스크립트의이 유형 잘 작동으로 주어진 응용 프로그램 버전에 대해 코드를 Safari 8.0.4에 대해 변경해야했습니다.

tell application "System Events" 

    # Use Accessibility Inspector to find the desired target. 
    tell front window of process "Safari" 
     tell scroll bar 1 of scroll area 1 of group 1 of group 1 of group 2 
      set value of attribute "AXValue" to 0 # Scroll to top. 
     end tell 
    end tell 

end tell 
4

브라우저를 사용하면 JavaScript를 사용할 수도 있습니다.

tell application "Safari" to tell document 1 
    do JavaScript "window.scroll(0,0)" 
end tell 

tell application "Google Chrome" to tell active tab of window 1 
    execute javascript "window.scroll(0,0)" 
end tell 
+0

이것은 두 개의 브라우저 앱에 대해서만 작동하지만 두 가지 장점이 있습니다. GUI 스크립팅 방식과 달리 키 입력 방식보다 강력하고 보조 액세스에 대한 승인이 필요하지 않습니다. – mklement0

관련 문제