December 17, 2014

Key Codes for Function and Special Keys in Applescript

Using Applescript to simulate keypresses can prove handy when doing automation. You can enter regular text with:

 tell application "System Events" to keystroke "testing"

This passes a string to the frontmost app. However, you can also simulate single key presses (Function keys, Right arrow, and other Special keys, etc.) such as a Tab:
 tell application "System Events" to key code 48

You can also add modifiers, so if you wanted the degree symbol °, which is option+shift+8:
 tell application "System Events" to key code 28 using {option down, shift down}

It's not possible to make any sense out of key code assignments; here's an exhaustive list of all Key Codes, including standard ascii keys, Modifier keys, Function keys and other special keys.


Name Symbol Code
Zero 0 29
One 1 18
Two 2 19
Three 3 20
Four 4 21
Five 5 23
Six 6 22
Seven 7 26
Eight 8 28
Nine 9 25
A 0
B 11
C 8
D 2
E 14
F 3
G 5
H 4
I 34
J 38
K 40
L 37
M 46
N 45
O 31
P 35
Q 12
R 15
S 1
T 17
U 32
V 9
W 13
X 7
Y 16
Z 6
SectionSign § 10
Grave ` 50
Minus - 27
Equal = 24
LeftBracket [ 33
RightBracket ] 30
Semicolon ; 41
Quote ' 39
Comma , 43
Period . 47
Slash / 44
Backslash \ 42
Keypad0 0 82
Keypad1 1 83
Keypad2 2 84
Keypad3 3 85
Keypad4 4 86
Keypad5 5 87
Keypad6 6 88
Keypad7 7 89
Keypad8 8 91
Keypad9 9 92
KeypadDecimal . 65
KeypadMultiply * 67
KeypadPlus + 69
KeypadDivide / 75
KeypadMinus - 78
KeypadEquals = 81
KeypadClear 71
KeypadEnter 76
Space 49
Return 36
Tab 48
Delete 51
ForwardDelete 117
Linefeed ? 52
Escape 53
Command 55
Shift 56
CapsLock 57
Option 58
Control 59
RightShift 60
RightOption 61
RightControl 62
Function fn 63
F1 122
F2 120
F3 99
F4 118
F5 96
F6 97
F7 98
F8 100
F9 101
F10 109
F11 103
F12 111
F13 105
BrightnessDown F14 107
BrightnessUp F15 113
F16 106
F17 64
F18 79
F19 80
F20 90
VolumeUp ? 72
VolumeDown ? 73
Mute ? 74
Help/Insert ? 114
Home 115
End 119
PageUp 116
PageDown 121
LeftArrow 123
RightArrow 124
DownArrow 125
UpArrow 126

Note:
The unassigned key codes are:
54, 66, 68, 70, 77, 93, 94, 95, 102, 104, 108, 110, 112
Several of these insert some unidentified control character in some apps.

The few codes with a ? are broken or are unreliable.

The first half of the list only applies to the standard English ISO keyboard, but the codes from "Space" and down are not keyboard dependent.

5 comments:

Karl Hiramoto said...

Any idea how to send a key code with javascript?

Joe Weaks said...

Yes, the syntax is:
Application('System Events').keyCode(34)

Bobby said...

Is it possible to mouseclick with AppleScript?

Aaron RepSnock said...

Is it possible to use more than 2 modifiers at a time? I am trying to control google sheets and skip sheets using keycode 125 {command down, shift down, function down} and it hasn't worked once.

Joe Weaks said...

It IS possible, however 'function' is not an option.