===== Создание службы быстрой транслитерации, вызываемой через сочетание клавиш в macOS High Sierra ===== {{:apple-mac-os:macos-high-sierra:pasted:20180501-174002.png }} В одной из предыдущих статей нашего Блога [[https://blog.it-kb.ru/2014/10/09/transliteration-and-compile-powershell-script-to-executable-binary-file/|представлялся Powershell-скрипт]] для создания псевдонимов почтовых ящиков из ФИО пользователя. Нечто подобное можно организовать на MAC с помощью **Automator.app** При создании нового документа выберем тип "**Служба**" {{ :apple-mac-os:macos-high-sierra:pasted:20180501-174709.png }} Затем на рабочее пространство из библиотеки «утилиты» добавим шаг «**Запустить shell-скрипт**», настроим службу и шаг: Служба получает «**текст**» в приложении **Firefox.app**, установим галочку на «**Заменить выбранный текст выходными данными**». В настройках шага установим передачу входных данных как аргумента и изменим **shell** на **perl**. {{ :apple-mac-os:macos-high-sierra:pasted:20180501-174727.png }} Вставим скрипт: #!/usr/bin/perl use utf8; use Encode; for ( map { decode_utf8 join '.', reverse(( split' ', $_ )[0..1]) } @ARGV) { s/й/y/g; s/Й/Y/g; s/ё/ye/g; s/Ё/Ye/g; y/абвгдезиклмнопрстуфыэ/abvgdeziklmnoprstufye/; y/АБВГДЕЗИКЛМНОПРСТУФЫЭ/ABVGDEZIKLMNOPRSTUFYE/; s/ж/zh/g; s/Ж/Zh/g; s/х/kh/g; s/Х/kh/g; s/ц/ts/g; s/Ц/Ts/g; s/ч/ch/g; s/Ч/Ch/g; s/ш/sh/g; s/Ш/Sh/g; s/щ/sch/g; s/Щ/Sch/g; s/(ъ|ь)//g; s/ю/yu/g; s/Ю/Yu/g; s/я/ya/g; s/Я/Ya/g; print $_ } Сохраним службу под именем **Translit**. Для удобства в настройках клавиатуры «**Сочетания клавиш**» назначим удобное для нас сочетание, например **Option**+**Command**+**T** {{ :apple-mac-os:macos-high-sierra:pasted:20180501-174820.png }} Откроем консоль **Exchange** в **Firefox**, перейдём в мастер создания ящика и введём в строку «**Псевдоним**» ФИО пользователя {{ :apple-mac-os:macos-high-sierra:pasted:20180501-174835.png }} Выделим **Command**+**A**, и вызовем службу **Option**+**Command**+**T** {{ :apple-mac-os:macos-high-sierra:pasted:20180501-174855.png }} **[UPDATE: 19.01.2022]** [[https://macscripter.net/viewtopic.php?id=48874|Адаптация]] задачи на AppleScript для выполнения в Команды.app или Automator.app, так же как и в предыдущем варианте через сочетание клавиш. В случае использования Команды.app для работы необходимо разрешить выполнение скриптов в настройках, а так же разрешить использование "/System/Library/PrivateFrameworks/VoiceShortcuts.framework/Versions/A/Support/siriactionsd" в "Системные настройки -> Защита и безопасность -> Конфиденциальность -> Универсальный доступ". Система добавит этот файл в универсальный доступ автоматически, пользователю необходимо только разрешить использование. set theString to the clipboard set countwords to count words of theString if countwords is 3 then set toTranslit to theString set sourceList to {"а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", ¬ "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", ¬ "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", ¬ "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я"} set targetList to {"a", "b", "v", "g", "d", "e", "ye", "zh", "z", "i", "y", "k", "l", "m", "n", "o", ¬ "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "sch", "", "y", "", "e", "yu", "ya", ¬ "A", "B", "V", "G", "D", "E", "Ye", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", ¬ "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Sch", "E", "Yu", "Ya"} set ASTID to AppleScript's text item delimiters repeat with i from 1 to count of sourceList considering case set toTranslit to findReplace(item i of sourceList, ¬ item i of targetList, toTranslit) end considering end repeat set AppleScript's text item delimiters to ASTID set results to toTranslit's word 2 & "." & toTranslit's word 1 --return results set the clipboard to results tell application "System Events" to key code "9" using command down delay 0.1 set the clipboard to theString end if --Обработчик on findReplace(findText, replaceText, sourceText) set AppleScript's text item delimiters to findText set sourceText to text items of sourceText set AppleScript's text item delimiters to replaceText return sourceText as text end findReplace ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ | Apple macOS High Sierra (10.13.4) | | Apple macOS Mojave (10.14) | | Apple macOS Catalina (10.15) | | Apple macOS Monterey (12.0.1, Apple/Intel) | ---- {{:user:vyakob.png?50&nolink |}} Автор первичной редакции:\\ [[user:vyakob|Виталий Якоб]] \\ Время публикации: 01.05.2018 17:36 {{tag>Apple "Mac OS" macOS "High Sierra" "macOS High Sierra" Automator Service Transliteration Translit Perl Script AppleScript Firefox}} ~~DISCUSSION~~