如何在AppleScript中自动进行按键操作?


81

是否可以在Mozilla Firefox,Google Chrome或Safari中自动按键(例如“ a”或“ <”)(按此顺序)?我想使Mozilla Firefox中的“ a”按键自动执行每秒100次x。用x为1秒和每次按键随机选择的10秒之间的值。哪些Applescript可以解决问题?

另外,在哪里可以找到键盘每个键的所有代码列表?


我不理解“每次按键随机选择”的部分。
Nicolas Barbulesco 2015年

@NicolasBarbulesco-每次按键之前,会随机选择一个长度为1到10秒的延迟。因此,每次都不同。
制造商史蒂夫

Answers:


139

在AppleScript编辑器中运行如下脚本:

activate application "Firefox"
repeat 100 times
    tell application "System Events" to keystroke "a" using command down
    delay (random number from 0.5 to 5)
end repeat

更多示例:

tell application "System Events"
    key code 123 using {shift down, command down} -- shift-command-left
end
set old to (path to frontmost application as text)
tell application "Notes"
    reopen
    activate
end tell
tell application "System Events" to keystroke "f" using {control down, command down}
delay 1
activate application old
delay 0.5 -- time to release modifier keys if for example the script is run with command-R
tell application "System Events" to tell process "Notification Center"
    try
        key down option
        delay 0.1
        click menu bar item 1 of menu bar 1
    end try
    key up option
end tell

请参阅Events.h以获取关键代码列表。

$ grep'^ * kVK'/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h|tr -d,|同时读取xyz; do printf' %d%s%s \ n'$ z $ z $ {x#kVK_};完成|排序-n
0 0x00 ANSI_A
1 0x01 ANSI_S
2 0x02 ANSI_D
3 0x03 ANSI_F
4 0x04 ANSI_H
5 0x05 ANSI_G
6 0x06 ANSI_Z
7 0x07 ANSI_X
8 0x08的ANSI_C
9×09 ANSI_V
10的0x0A ISO_Section
11 0x0B中ANSI_B
12 0x0C ANSI_Q
13 0X0D ANSI_W
14为0x0E ANSI_E
15为0x0F ANSI_R
16为0x10 ANSI_Y
17为0x11 ANSI_T
18 0×12 ANSI_1
19 0×13 ANSI_2
20 0×14 ANSI_3
21为0x15 ANSI_4
22 0x16 ANSI_6
23 0×17 ANSI_5
24为0x18 ANSI_Equal
25 0x19 ANSI_9
26 0x1A的ANSI_7
27 0x1B ANSI_Minus
28为0x1C ANSI_8
29 0x1D ANSI_0
30 0X1E ANSI_RightBracket
31为0x1F ANSI_O
32为0x20 ANSI_U
33为0x21 ANSI_LeftBracket
34为0x22 ANSI_I
35 0×23 ANSI_P
36 0X24返回
37 0x25 ANSI_L
38 0x26 ANSI_J
39 0x27 ANSI_Quote
40 0x28 ANSI_K
41 0x29 ANSI_Semicolon
42 0x2A ANSI_反斜杠
43 0x2B ANSI_Comma
44 0x2C ANSI_Slash
45 0x2D ANSI_N
46 0x2E ANSI_M
47值为0x2F ANSI_Period
48的0x30标签
49 0X31空间
50 0x32 ANSI_Grave
51 0x33删除
53 0x35逃逸
55 0×37命令
56 0x38移位
57 0x39的CapsLock
58 0x3A选项
59 0x3B控制
60为0x3C RightShift
61的0x3D RightOption
62 0x3E的RightControl
63 0x3F的功能
64 0×40 F17
65的0x41 ANSI_KeypadDecimal
67 0x43 ANSI_KeypadMultiply
69 0x45 ANSI_KeypadPlus
71 0x47 ANSI_KeypadClear
72 0x48 VolumeUp
73 0x49 VolumeDown
74 0x4A静音
75 0x4B ANSI_KeypadDivide
76 0x4C ANSI_KeypadEnter
78个0x4E ANSI_KeypadMinus
79个0x4F F18
80个为0x50 F19
81个0x51 ANSI_KeypadEquals
82 0×52 ANSI_Keypad0
83 0x53 ANSI_Keypad1
84 0x54 ANSI_Keypad2
85 0x55的ANSI_Keypad3
86 0x56储存ANSI_Keypad4
87的0x57 ANSI_Keypad5
88将0x58 ANSI_Keypad6
89 0×59 ANSI_Keypad7
90 0x5A F20
91 0x5B ANSI_Keypad8
92 0x5C ANSI_Keypad9
93 0x5D JIS_Yen
94 0x5E JIS_下划线
95 0x5F JIS_键盘逗号
96 0x60 F5
97 0x61 F6
98 0x62 F7
99 0x63 F3
100 0x64 F8
101 0x65 F9
102 0x66 JIS_Eisu
103 0x67 F11
104 0x68 JIS_Kana
105 0×69 F13
106的0x6A F16
107 0x6B F14
109 0x6D F10
111 0x6F F12
113 0x71 F15
114 0x72帮助
115 0x73主页
116 0x74上一页
117 0x75 ForwardDelete
118 0x76 F4
119 0x77结束
120 0x78 F2
121 0x79的下页
122 0x7A F1
123 0x7B LeftArrow
124 0x7C RightArrow
125 0x7D DownArrow
126 0x7E UpArrow

您还可以使用AppleScript单击菜单项:

tell application "System Events" to tell (process 1 where frontmost is true)
    click menu item "Minimize" of menu 1 of menu bar item "Window" of menu bar 1
end tell
tell application "System Events" to tell process "Finder"
    set frontmost to true
    tell menu bar item 3 of menu bar 1
        click
        click menu item "Open With" of menu 1
    end tell
end tell

有使用Automator的示例吗?
Ahmed Fasih

如果您只想键入不带修饰符的键,则只需using command down从该行中删除即可。
Flimm

如何使用修饰符对多个键进行此操作?示例:Command + Option + H + M
Mort 2015年

@Mort只需执行多个key down <key>语句
daviesgeek

4
警告:请确保将所有代码放在try块中,并在块之后添加安全键!control由于未捕获的异常,我的钥匙被卡住了一段时间,感到非常沮丧。
mVChr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.