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


8

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

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

По сути, я ищу что-то вроде AutoHotkey, но для OS X.

Ответы:


8

Я нашел способ сделать это в скрипте 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 сигнал тревоги, чтобы запустить сценарий в определенное время.

Типы документов Automator


Разве это не пропускает целую часть «повторяется каждые 5 секунд в общей сложности 15 раз»?
Даниэль

Я не знал о echo "script" | osascriptсинтаксисе - я всегда использовал osascript -e "script". Таким образом, вы получаете +1 за это.
CajunLuke

1
@DanielLawson: да, но при наличии сценария оболочки его просто зациклить, как вы хотите.
Houbysoft

6

Вот 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синтаксис!)


0

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

  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

1
@nohillside Aaaah, отголоски catнаграды за «бесполезное использование », регулярно вручаемой comp.unix.shellв старые добрые времена usenet!
Харальд Ханче-Олсен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.