TABLE OF CONTENTS vii
5.3.6 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.3.7 Labels and GOTOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.8 Subroutines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.9 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.3.10 Script structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4 Lua primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.4.1 Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.4.2 Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.4.3 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.4.4 Assignments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.4.5 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.4.6 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.4.7 Conditional clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.4.8 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.4.9 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.4.10 Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.4.11 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.4.12 Script structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.4.13 Standard Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.5 CHDK commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.5.1 Button-related commands:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.5.2 Exposure-related commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.5.3 Focus-related commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.5.4 Zoom-related commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.5.5 Flash-related commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.5.6 Image-related commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.5.7 Time-related commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.5.8 Display-related commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.5.9 Image management commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.5.10 Camera state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.5.11 Low-level commands (Lua only). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.5.12 The library capmode.lua (Lua only). . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.6 Property Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.7 Example scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.7.1 Time machines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.7.2 Bracketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.7.3 Motion detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.7.4 Exposure control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.7.5 Remote control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.7.6 Configuration switching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.8 Script development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194