Можно ли запрограммировать Mac для имитации нажатия клавиши с определенной скоростью с помощью программного обеспечения?

Есть ли способ или стороннее приложение, которое позволило бы мне указать, например, что я хочу, чтобы оно отправляло событие клавиатуры (чтобы оно имело тот же эффект, что и физическое нажатие клавиши на клавиатуре) каждые 5 секунд?

Так, например, я мог бы сказать, чтобы он попадал Kкаждые 5 секунд, всего 15 раз?

В принципе, я ищу что-то вроде AutoHotkey , но для OS X.

Ответы (3)

Вот AppleScript, чтобы делать то, что вы хотите:

set i to 0
repeat while i < 15
    set i to i + 1
    delay 5
    tell application "System Events" to keystroke "k"
end repeat

Вы можете встроить его в сценарий оболочки следующим образом:

echo "set i to 0
repeat while i < 15
set i to i + 1
delay 5
tell application \"System Events\" to keystroke \"k\"
end repeat" | osascript

(Спасибо @houbysoft за echo "script" | osacriptсинтаксис!)

Я никогда не пользовался Автоматом. Не могли бы вы поделиться пошаговым руководством? Я хотел бы несколько раз нажать Enter в веб-форме.

Я нашел способ сделать это в сценарии bash:

#!/bin/sh
# Simulates hitting a key on OS X
# http://apple.stackexchange.com/a/63899/72339

echo "tell application \"System Events\" to keystroke \"$1\"" | osascript

Сохранить как hitkey, chmod +x hitkey, hitkey kчтобы нажать K.

Оттуда можно просто использовать Automator, чтобы несколько раз перебрать сценарий или сделать сигнал тревоги iCal, чтобы запустить сценарий в определенное время.

Типы документов автоматизатора

Разве это не пропускает всю часть «повторять каждые 5 секунд всего 15 раз»?
Я не знал о echo "script" | osascriptсинтаксисе — я всегда использовал osascript -e "script". Таким образом, вы получаете +1 за это.
@DanielLawson: да, но имея сценарий оболочки, его легко зациклить, как вы хотите.
Я никогда не пользовался Автоматом. Не могли бы вы поделиться пошаговым руководством? Я хотел бы несколько раз нажать Enter в веб-форме.

Вот мой тип рабочего процесса

  1. в командной строке введите Ctrl + x, затем Ctrl + e, чтобы войти в Vim, и введите там.

  2. введите ниже ; видите, обратной косой черты нет.

     cat << EOF | osascript
     set repeat_number to 5
     set i to 1
     repeat while i <= repeat_number
     tell application "System Events" to keystroke "k"

     display notification "repeat keystroke " & i & "time"
     set i to i + 1
     delay 1
     end repeat
    EOF
  1. затем сохраните vim и выйдите из команды, если вы знаете, как выйти из vim;)

    • Esc: wq
  2. Вернитесь к терминалу, чтобы запустить набранное выше.

+++ О, еще одна вещь.

     cat | osascript
     display alert "typeing like Script Editor, no need to type backslash!"
     display notification "type ctrl + d to end typing and run it."
Использование catвместе с here-doc кажется излишним (вам не нужна эта catчасть).
@nohillside А-а-а, отголоски наград за «бесполезное использование cat», регулярно раздававшихся comp.unix.shellв старые добрые времена юзнета!