Obsługa #Automatora z #VoiceOver na #MacOS

Panuje powszechne przekonanie, iż Automator w systemie Mac OS jest niedostępny dla programu VoiceOver. Ponieważ sam Automator jest świetnym narzędziem, a powszechna opinia na temat jego dostępności wierutną bzdurą, postaram się Wam nieco przybliżyć tę systemową aplikację.

Żeby się nie rozpisywać, przytoczę cytat ze stron Apple:

Automator to osobisty asystent automatyzacji, dzięki któremu można wykonać więcej czynności mniejszym nakładem pracy. Wykonując w Automatorze proste czynności przeciągania i upuszczania, można tworzyć i uruchamiać procedury automatyzacji służące do wykonywania za użytkownika prostych lub skomplikowanych czynności w dowolnym czasie i miejscu.

Automator umożliwia automatyzację wielu czynności wykonywanych przez użytkownika na komputerze. Pozwala tworzyć i drukować spis kontaktów rodzinnych z Książki adresowej. Wyszukiwać zdjęcia w ulubionej witrynie i dodawać je do programu iPhoto. Drukować dokumenty na iPadzie. Automatycznie zmieniać nazwy wielu plików w programie Finder. Pozwala nawet planować wykonywanie kopii zapasowych ważnych informacji. Możliwości Automatora są nieograniczone. Może on w ciągu sekund lub minut wykonać czynności, których ręczne wykonanie zajęłoby godziny.

Tak, tak… Nic Wam nie umknie… Na pewno zwróciliście uwagę na to „przeciąganie i upuszczanie”. To właśnie one generują ten zły z punktu widzenia dostępności obraz Automatora, który rozgościł się w powszechnej opinii. Ale, ale… Nie bądźmy ludźmi małej wiary i nie zapominajmy, że Apple jest jak by nie było liderem w tworzeniu najróżniejszych produktów według zasad uniwersalnego projektowania. I nie inaczej jest z Automatorem, którego świetnie można obsłużyć za pomocą VoiceOver, z poziomu tylko i wyłącznie samej klawiatury.

Ostatnio w jednym z moich wpisów wspomniałem o Automatorze. Gdy później czytałem to co sam napisałem, uświadomiłem sobie, że kiedyś też miałem ogromne problemy z obsługą tego narzędzia z VoiceOver. Pomyślałem więc, że na jakimś przykładzie opiszę Wam jak z niego korzystać.

Proponuję na nasze przykładowe zadanie wybrać sobie stworzenie nowej Usługi, której zadaniem będzie tłumaczenie zaznaczonego tekstu z dowolnego języka na nasz polski język ojczysty.

Tworzenie przykładowej Usługi

  1. Zatem otwieramy Automator, który tak jak inne systemowe aplikacje, domyślnie zlokalizowany jest w katalogu Programy.
  2. Po jego uruchomieniu tabulatorem przechodzimy do przycisku Nowy Dokument i aktywujemy go poprzez naciśnięcie spacji.
  3. Teraz strzałką góra/dół wybieramy pozycję Kolejka Czynności, a następnie strzałkami lewo/prawo rodzaj działania. W tym wypadku będzie to Usługa. Po zaznaczeniu usługi akceptujemy całość przyciskiem Wybierz.
  4. Ponieważ Automator udostępnia mnóstwo czynności, aby oszczędzić sobie przeglądania ich wszystkich, w pole edycyjne Nazwa wpisujemy całą lub tylko część nazwy Czynności, której poszukujemy.
  5. Dla zaplanowanego zadania będziemy potrzebowali dwóch czynności: Uruchom AppleScript oraz Okno wyskakujące witryny. Wpiszmy więc na początek samo słowo „Apple”. Nie musimy niczego potwierdzać enterem. Odnalezione Czynności wyświetlą się automatycznie. Aby się z nimi zapoznać, dwukrotnie naciskamy tabulator i znajdujemy się na liście propozycji czynności. Jeśli czynności zawierających w swej nazwie wpisany przez nas ciąg znaków jest więcej, przeglądamy je strzałkami góra/dół i tę właściwą wybieramy poprzez naciśnięcie klawisza enter.

    O samej idei AppleScript wspominałem we wpisie
    Jak zrobić sobie dobrze – Czyli użycie AppleScript Niezbędne dla naszej Usługi AppleScript znajdziecie poniżej, ale o tym za chwilę.

  6. Nowa czynność powinna pojawić się w oknie „Bez nazwy”. W tym oknie, noszącym tymczasową nazwę naszego projektu, znajdują się wszystkie dodane Czynności. Jeśli którąś dodaliśmy przez przypadek albo nie w tej kolejności to tutaj można to zmienić lub usunąć daną pozycję.
  7. Skoro już dodaliśmy Czynność AppleScript, w ten sam sposób dodajemy do naszego projektu Czynność o nazwie „Okno wyskakujące witryny”. Czynność ta odpowiada za wyświetlanie interesującej nas treści w wyskakującym okienku.
  8. Po dodaniu obu Czynności, przechodzimy do naszego projektu „Bez nazwy” i wchodzimy z nim w interakcję.
  9. Jeśli tak jak ma to miejsce w naszym przypadku, wśród czynności projektu znajduje się AppleScript, to po wejściu z nim w interakcję możemy go edytować. Edycja polega na możliwości ustawienia kilku parametrów oraz edycji samego kodu skryptu w polu edycyjnym.

    Naturalnie jeśli jesteśmy oblatani w programowaniu to sami możemy coś podłubać i napisać własny kod. Jeśli jednak języki programowania są dla nas językami obcymi, warto sięgnąć do zasobów internetu, gdzie mnóstwo ludzi dzieli się własnymi skryptami. Poniższy AppleScript pochodzi z serwisu
    iMagazine.pl. Ja jedynie lekko go zmodyfikowałem, ponieważ oryginalny nie chciał dokonywać automatycznej detekcji języka tekstu.

  10. Poniższy kod umożliwia tłumaczenie zaznaczonego przez użytkownika tekstu z dowolnego języka obsługiwanego przez Google Translator, na język polski. Należy zaznaczyć całość tekstu znajdującego się pomiędzy gwiazdkami, skopiować go (Command+c) i wkleić go (Command+v) w pole edycyjne Czynności AppleScript. Zanim wkleimy poniższy tekst, upewnijmy się jeszcze, że pole edycyjne jest puste. Jeśli nie jest to skasujmy jego zawartość i dopiero wtedy wklejajmy poniższy skrypt.

    ********************

    on run {input, parameters}
    set output to “http://translate.google.com/#auto/pl/” & urldecode(input as string)
    return output
    end run

    on urldecode(x)
    set cmd to “‘require \”cgi\”; puts CGI.escape(STDIN.read.chomp)'”
    do shell script “echo ” & quoted form of x & ” | ruby -e ” & cmd
    end urldecode

    ********************

  11. Czynności „Okno wyskakujące witryny” nie musimy w ogóle konfigurować. Jej domyślne ustawienia w zupełności nam wystarczą. Upewnijmy się tylko, czy w projekcie nasze czynności znajdują się w prawidłowej kolejności. Pierwszy AppleScript i jako druga Czynność „Okno wyskakujące witryny”. Jeśli kolejność jest inna to stojąc na dowolnej z czynności wybieramy z Paska Menu Czynność i tam opcję „Przesuń do góry” lub „Przesuń do dołu”.
  12. Teraz pozostaje nam już tylko zapisać nasz projekt, np. poprzez naciśnięcie klawiszy Command+s. Nazwę, którą podamy będziemy od tej pory widzieli jako nazwę stworzonej przez nas usługi. Proponuję zatem np. następującą nazwę: „Przetłumacz na polski”. Enter i nasza nowa Usługa gotowa.

Teraz będąc w dowolnym miejscu systemu Mac OS, w przeglądarce internetowej, dokumencie czy wiadomości e-mail, wystarczy zaznaczyć dowolny fragment tekstu w obcym języku, z paska menu wejść w opcje bieżącej aplikacji i z rozwijanej listy Usług wybrać „Przetłumacz na polski”. Po chwili VoiceOver oznajmi nam: System ma nowe okno. Teraz przeglądając listę w menu wyboru okna znajdziemy pozycję „Tłumacz Google Nowe”. Naciskając na niej enter przejdziemy do okna z gotowym tłumaczeniem.

Oczywiście zamiast za każdym razem rozwijać pasek menu i wybierać konkretną Usługę, możemy sobie do niej przypisać klawisz skrótu z poziomu listy Usług. Wtedy znacznie przyśpieszamy proces docierania do informacji. Zaznaczamy tekst, naciskamy skrót i już mamy gotowe tłumaczenie.

W ten sam sposób możemy przygotować sobie usługę tłumaczenia na dowolny język. Naturalnie tylko z pośród tych obsługiwanych przez Google Translator. Wystarczy wtedy w przykładowym kodzie oznaczenie języka „pl” zamienić na „en” dla angielskiego czy „de” dla niemieckiego.

Oczywiście dla kogoś korzystanie z wyskakującego okienka może być niewygodne. W takiej sytuacji w naszej kolejce czynności możemy np. wykorzystać tylko sam AppleScript. Poniżej podaję kod, który po wklejeniu w miejsce poprzedniego kodu spowoduje, że zamiast wyskakującego okna system będzie otwierał przeglądarkę Google Chrome z gotowym tłumaczeniem. W tej opcji naturalnie musicie mieć zainstalowaną przeglądarkę Google Chrome aby całość zadziałała.

Poniższy skrypt pochodzi z bloga
www.andilabs.github.io. Należy skopiować całość znajdującą się pomiędzy gwiazdkami i wkleić w opróżnione pole edycyjne Czynności AppleScript naszej Usługi.

********************

on run {input}

set inputText to input as string

tell application “Google Chrome”
activate
set theUrl to “http://translate.google.com/#auto/pl/” & inputText

if (count every window) = 0 then
make new window
end if

set found to false
set theTabIndex to -1
repeat with theWindow in every window
set theTabIndex to 0
repeat with theTab in every tab of theWindow
set theTabIndex to theTabIndex + 1
if theTab’s URL = theUrl then
set found to true
exit repeat
end if
end repeat

if found then
exit repeat
end if
end repeat

if found then
tell theTab to reload
set theWindow’s active tab index to theTabIndex
set index of theWindow to 1
else
tell window 1 to make new tab with properties {URL:theUrl}
end if
end tell

end run

********************

Przeglądając listy dostępnych Czynności Automatora, bardzo łatwo jest się zgodzić z przytaczanym we wstępie stwierdzeniem, że jedynym ograniczeniem przy korzystaniu z tego narzędzia jest nasza wyobraźnia. Zachęcam wszystkich do zaprzyjaźnienia się z Automatorem, bo na prawdę warto.