Создание горячей клавиши или сочетания клавиш для вставки определенной текстовой фразы в Mac OSX

21

У меня есть текстовая фраза (на самом деле, несколько этапов), которую я часто использую в нескольких приложениях. Я хотел бы создать комбинацию клавиш или горячую клавишу, которая будет вставлять эту текстовую фразу, куда бы я ни поместил курсор в поле ввода текста (Apple Mail, Microsoft Word, TextEdit, TextWrangler, окна браузера и т. Д.), А не постоянно копировать и склеивание из записки.

Я бы предпочел не покупать какие-либо приложения (кажется, что Keyboard Maestro обладает такой функциональностью, но, кажется, глупо платить 36 долларов только за это), хотя бесплатные приложения вполне подойдут. Попытался поискать в Системных настройках> Клавиатура> Сочетания клавиш, но не нашел очевидного решения, и все найденные мной сценарии AppleScripts, похоже, не переводятся для меня должным образом. Я нашел другие решения для этой проблемы на этом форуме для пользователей Windows (например, AutoHotKey), но не для пользователей Mac.

Рути
источник

Ответы:

16

Самый простой способ набрать текст с помощью AppleScript - это запустить:

tell application "System Events" to keystroke "foo bar"

Вы можете вызвать это с помощью сочетания клавиш, создав новое быстрое действие (ранее называвшееся Сервисом ) в Automator. Установите для него отсутствие ввода , а затем перетащите Запуск AppleScript с левой панели вправо.

Это должно выглядеть так:

Сохраните его, а затем назначьте сочетание клавиш для этой службы в Системные настройки »Клавиатура» Сочетания клавиш .

slhck
источник
Вау, спасибо большое @slhck! Я попробовал это, но у меня проблемы на последнем этапе. Он не отображается в меню «Службы», когда я захожу в «Сочетания клавиш» в Системных настройках. Я знаю, что он работает, потому что когда я открываю Automator и нажимаю кнопку Play, текст набирается в предыдущем приложении, но он не отображается в сервисе, поэтому я могу добавить сочетание клавиш, даже если я сохранил его в папке «Библиотека»> «Службы» , По совету других форумов, которые я гуглил, я дважды проверил, что вход службы был установлен на «Служба получает: нет ввода» (это было), и попытался перезапустить Finder. Есть предположения?
Рути
Так вы сохранили это из Automator? Обычно он должен отображаться в параметрах сочетаний клавиш в разделе « Службы» и « Общие» внизу. Вы пытались выйти из системы и вернуться, или даже перезапустить?
Slhck
@slhck это звучит как отличный способ сделать это, но не могли бы вы подробнее рассказать о своем ответе? Я не очень хорошо разбираюсь в том, как работает Automator, когда я запускаю его, он спрашивает меня «выбрал тип для вашего документа», и тогда я немного растерялся. Сейчас я пойду с ответом Джонатана Хуи, но это все еще подразумевает что-то набирать ... Спасибо!
MicroMachine
@fabriced Вам нужно создать сервис в Automator.
Slhck
2
Я считаю, что это работает в текстовом редакторе, но не в текстовом поле на веб-сайте. Кто-нибудь еще?
Элиот
6

Команда keystrokeможет использоваться только для вставки символов, которые находятся на текущей раскладке клавиатуры, и для длинных строк текста есть видимая задержка. Вы также можете вставить текст напрямую:

Этот метод не очень пригоден для использования. В 10.7 и 10.8 есть ошибка, когда ярлыки для служб Automator не всегда работают, пока вы не наведете курсор на меню служб.

Я использовал FastScripts, чтобы назначить этот скрипт для F3:

try
    set old to the clipboard as record
end try
try
    tell application "System Events"
        key code 123 using {option down, shift down}
        keystroke "c" using command down
    end tell
    delay 0.05
    set input to the clipboard
    read POSIX file "/Users/lauri/Notes/snippets.txt" as «class utf8» using delimiter linefeed
    repeat with p in result
        considering case
            if p starts with (input & " ") then
                set the clipboard to text ((offset of space in p) + 1) thru -1 of p
                tell application "System Events" to keystroke "v" using command down
                delay 0.05
                exit repeat
            end if
        end considering
    end repeat
end try
try
    set the clipboard to old
end try

snippets.txt выглядит так:

m name@example.com
cmd ⌘

Другой вариант - использовать DefaultKeyBinding.dict . Это сделает ⌥M или ⌥X и m вставить адрес электронной почты:

{
    "~m" = (insertText:, "name@example.com");
    "~x" = {
        "m" = ("insertText:", "name@example.com");
    };
}

Вы также можете добавить пользовательский текст в всплывающие окна, отображаемые при удерживании клавиш. Смотрите этот вопрос .

LRI
источник
2

Найдите приложение под названием "Textexpander", которое дает вам возможность определять текстовые фразы, такие как @dd, которые - при вводе - будут расширены до определенного содержимого - в этом случае фактической даты.

AFAIK это условно. Так что это на самом деле не бесплатно, но демонстрационный режим не ограничен по времени.

heiglandreas
источник
Просто быстрое замечание на случай, если это будет полезно для других - TextExpander не работает на окнах терминала X11.
ggkmath
2

Приложение Alfred позволяет вам делать это, а также многое другое, используя функции Workflow и Snippets. Я все время пользуюсь Альфредом и очень рекомендую его. Чтобы разблокировать рабочие процессы, вы должны заплатить за лицензию Powerpack, но вы не пожалеете об этом. 😉

mklbtz
источник
Я согласен, это одно из самых полезных приложений для всех, у кого есть Mac. Я полностью перешел с пользовательских сервисов Automator на Альфреда.
Slhck
1

Просто нажмите: Системные настройки, Клавиатура, Текст и введите свой ярлык и фразу

Джонатан Хуи
источник
1
Мне нравится этот ответ, но на самом деле он не допускает «горячие клавиши» или «горячие клавиши», все равно нужно вводить текст (а не комбинацию клавиш), который заменяется машиной.
MicroMachine
1
Кажется, это работает только в нескольких избранных приложениях. Он не работает в большинстве мест, которые мне нравятся, например, поля ввода в браузере, мой почтовый клиент (Thunderbird), терминал и т. Д.
Не паникуйте,
0

Отдельная клавиатура под названием «Марсианская клавиатура» будет содержать текстовые строки, такие как предложения и даже короткие абзацы. Это избавит вас от необходимости вводить раздражающие нажатия клавиш, которые вы набираете много раз, день за днем. Клавиши работают как клавиши вставки. Он имеет возможность хранить все ярлыки в Word на одной клавиатуре, используя клавиши переключения слоев. Это в основном для профессионального использования, так что это немного дороже.

стог
источник