CHDK Manual[edit | edit source]

CHDK User Manual : Scripting (program your camera)

CHDK Scripting Links[edit | edit source]

CHDK Scripts CHDK Scripting
Script Commands Script Commands Stub
User Written Scripts Property Case Values

uBASIC Links[edit | edit source]

uBASIC uBASIC Syntax
uBASIC Tutorial Scratchpad

Lua Links[edit | edit source]

Lua Lua Syntax
Lua Reference Lua PTP Scripting
Lua Draw & Lua Drawing Native Function Calls
Lua Development Environment Lua 5.1 Reference Manual
Script Shooting Hooks One Page CHDK Lua Reference Card

Script Header Documentation[edit | edit source]

The Script Header Tutorial - The Script Header

All Scripting Functions[edit | edit source]

.

Lens Functions
Function Link Lua uBASIC Description
get_focus Y Y gets current focus distance in mm
get_focus_mode Y Y returns focus mode, 0=auto, 1=MF, 3=inf., 4=macro, 5=supermacro
get_focus_ok Y Y returns 0=focus not ok, 1=ok if get_focus_state<>0 and get_shooting=1
get_focus_state Y Y returns focus status, > 0 focus successful, =0 not successful, < 0 MF
get_IS_mode Y Y get image stabilization mode
get_zoom Y Y returns current zoom position
get_zoom_steps Y Y returns the number of zoom steps supported by the camera
get_sd_over_modes Y Y returns a bit field value indicating when subject distance override will work with this camera.
set_mf Y Y lock/unlock Canon manual focus (MF) mode.
set_aflock Y Y blocks the camera firmware from making focus adjustments
set_focus Y Y sets current focus distance in mm
set_focus_interlock_bypass Y N bypass manual focus safety checks
set_zoom Y Y sets the current zoom position
set_zoom_rel Y Y moves zoom position a relative amount
set_zoom_speed Y Y sets zoom speed (only works on some cameras)
Depth of Field
Function Link Lua uBASIC Description
get_dofinfo Y - get DOF table (uBASIC commands below)
get_dof - Y get the depth of sharpness in mm
get_far_limit - Y get the far acceptable sharpness distance
get_near_limit - Y get near acceptable sharpness distance
get_focal_length - Y get current lens focal length
get_hyp_dist - Y get hyperfocal distance
Exposure Functions
Function Link Lua uBASIC Description
get_av N Y obsolete - replaced with get_user_av_id
get_av96 Y Y gets APEX96 aperature value
get_bv96 Y Y gets APEX96 luminance value
get_ev Y Y get exposure adjustment amount
get_iso N Y obsolete - replaced with get_iso_mode
get_iso_market Y Y get inflated marketing ISO value
get_iso_mode Y Y obtain ISO mode
get_iso_real Y Y get actual ISO value
get_max_av96 Y Y gets maximum possible AV96 (smallest aperture) (CHDK 1.5+)
get_min_av96 Y Y gets minimum possible AV96 (largest aperture) (CHDK 1.5+)
get_nd_present Y Y returns whether camera has an ND filter (and / or diaphragm )
get_nd_value_ev96 Y Y gets APEX96 value of ND filter, if present (CHDK 1.5+)
get_nd_current_ev96 Y Y gets APEX96 value of current ND filter state (CHDK 1.5+)
get_sv96 Y Y gets APEX96 ISO sensitivity setting
get_tv96 Y Y gets APEX96 exposure time
get_user_av_id Y Y gets M mode override APEX96 aperature value by index
get_user_av96 Y Y gets APEX96 aperature value
get_user_tv_id Y Y gets M mode override APEX96 exposure time by index
get_user_tv96 Y Y gets M mode override APEX96 exposure value
set_aelock Y Y sets automatic exposure lock (AEL) ( CHDK 1.3.0 or newer)
set_av N Y obsolete - replaced with set_user_av_by_id
set_av_rel N Y obsolete - replaced with set_user_ac_by_id_rel
set_av96 Y Y sets the APEX96 aperature value
set_av96_direct Y Y sets the APEX96 aperature value (bypass validation check)
set_ev Y Y sets exposure adjustment amount
set_iso N Y obsolete - replaced with set_iso_mode
set_iso_mode Y Y sets propcase PROPCASE_ISO_MODE
set_iso_real Y Y sets the sv96 override value base on ISO sensitivity value
set_nd_filter Y Y moves neutral density filter into or out of the optical path
set_sv96 Y Y set APEX96 ISO sensitivity value
set_tv N Y obsolete - replaced with set_user_tv_by_id
set_tv_rel N Y obsolete - replaced with set_user_tv_by_id_rel
set_tv96 Y Y set APEX96 exposure time
set_tv96_direct Y Y set APEX96 exposure time (bypass validity checks)
set_user_av_by_id Y Y set user override APEX96 aperature by index (M mode only)
set_user_av_by_id_rel Y Y set user override APEX96 aperature by index relative (M mode only)
set_user_av96 Y Y set user override APEX96 aperature (M mode only)
set_user_tv_by_id Y Y set user override APEX96 exposure time index (M mode only)
set_user_tv_by_id_rel Y Y set user override APEX96 exposure time index offset (M mode only)
set_user_tv96 Y Y set user override APEX96 exposure time (M mode only)
get_live_histo Y N Get a histogram of the live viewport
get_imager_active Y Y returns boolean of camera's image sensor active status
get_current_tv96 Y Y returns TV96 value being used in live view
get_current_av96 Y Y returns AV96 value being used in live view
APEX96 Conversion Note : CHDK 1.3.0 or greater
Function Link Lua uBASIC Description
iso_to_sv96 Y Y converts ISO into sv96 units
sv96_to_iso Y Y converts sv96 units to ISO
iso_real_to_market Y Y converts ISO value from real to market
iso_market_to_real Y Y converts ISO value from real to market
sv96_real_to_market Y Y converts sv96 value from real to market
sv96_market_to_real Y Y converts sv96 value from market to real
aperture_to_av96 Y Y converts f-stop to av96 units
av96_to_aperture Y Y converts av96 value to f-stop
usec_to_tv96 Y Y converts shutter speed to tv96 units
tv96_to_usec Y Y converts tv96 value to shutter speed
seconds_to_tv96 Y Y converts fractional value to tv96 units
Camera Functions
Function Link Lua uBASIC Description
get_capture_mode N Y gets current camera Program mode setting
get_display_mode N Y returns state of LCD display info
get_drive_mode Y Y returns shutter drive mode (single, continuous, timer )
get_flash_mode Y Y returns flash mode (flash auto, flash on, flash off)
get_flash_params_count Y N returns # of flash memory parameters available in camera
get_flash_ready Y Y returns status indicating if flash is ready to fire
get_meminfo Y N get camera memory information
get_mode Y Y returns whether record mode or playback mode is active
get_movie_status Y Y gets state of video recording (off,on,paused)
get_orientation_sensor Y Y get camera rotation sensor value
get_parameter_data Y N get data from camera\'s flash memory
get_prop Y Y get PropertyCase value as short integer
get_prop_str Y N get the value of a PropertyCase as a string
get_propset Y Y get the propset number for this camera
get_quality N Y returns the current capture quality setting in Canon grades
get_resolution N Y returns the current capture resolution setting in Canon grades
get_shooting Y Y indicates that half_press is active, exposure is set and focusing is completed (see also get_focus_ok)
get_temperature Y Y returns specified temperature sensor value
get_vbatt Y Y get current battery charge state
get_video_button Y Y returns whether on not the camera has a video button
get_video_details Y N returns a struct with viewport configuration info
get_video_recording Y Y return whether video is recording or not
is_capture_mode_valid Y Y check if CHDK mode number is valid for this camera
play_sound Y * plays the specified sound sequence (uBASIC use playsound)
reboot Y Y restart the camera
restore Y Y specifies the routine called before a script terminates
set_capture_mode Y Y set capture mode by CHDK mode number
set_capture_mode_canon Y Y set capture mode by PROPCASE_SHOOTING_MODE value
set_led Y Y turns on or off the selected camera LED
set_movie_status Y Y allow video recording to pause, unpause and stop
set_prop Y Y set PropertyCase value as short integer
set_prop_str Y N used to set arbitraty sized propcases in Lua
set_quality N Y set the quality (in Canon grades),
set_record Y Y set playback or record mode
set_resolution N Y Set the resolution (in Canon grades)
set_clock Y N sets the camera's real time clock
shut_down Y Y turns the camera off
Keypad & Switches
Function Link Lua uBASIC Description
click Y Y press and release a key
is_key Y Y detemines if specified key was pressed
is_pressed Y Y determines if specified key is being pressed
press Y Y activates the specified camera button
release Y Y releases the specified camera button
shoot Y Y takes a picture
wait_click Y Y waits for any camera button to be pressed
wheel_left Y Y simulates moving jog dial wheel to the left
wheel_right Y Y simulates moving jog dial wheel to the right
set_exit_key Y Y changes the key used to terminate the script (CHDK 1.3.0 or greater)
SD Card Functions
Function Link Lua uBASIC Description
get_disk_size Y Y returns size of SD card
get_exp_count Y Y return number of shots in a session
get_image_dir Y N get current image directory
file_browser Y N activate SD card file browser on LCD screen
get_free_disk_space Y Y return space left on SD card
get_jpg_count Y Y return number of JPG shots left on SD card
get_partitionInfo Y N get partition information from the SD card
set_file_attributes Y N set file attributes of file on SD card
swap_partitions Y Y changes the partition order if SD card has multiple partitions
Script Status Functions
Function Link Lua uBASIC Description
autostarted Y Y checks if script was autostarted
end N Y terminate uBASIC program execution
get_autostart Y Y reads the conf.script_autostart
get_day_seconds Y Y return number of seconds since midnight
get_tick_count Y Y gets time in tic units (milliseconds) since camera startup
get_time Y Y returns elements of the camera\'s current date / time setting
set_autostart Y Y write conf.script_autostart (0=off, 1=on, 2=once)
set_yield Y Y control how much of the Camera CPU time is used by scripting engine
sleep Y Y halts program execution for specified number of milliseconds
Firmware Interface
Function Link Lua uBASIC Description
call_event_proc(name,...) Y N calls a registered event procedure.
call_func_ptr(fptr,...) Y N call ARM or Thumb function in camera RAM or ROM
get_levent_def Y N lookup levent definition by event's name string or id number
get_levent_def_by_index Y N lookup levent definition by index in logical event table
get_levent_index Y N returns the index of the given event
post_levent_for_npt Y N Triggers a LogicalEvent in the Canon firmware.
post_levent_to_ui Y N Triggers a LogicalEvent in the canon firmware.
set_levent_active Y N <needs a definition>
set_levent_script_mode Y N <needs a definition>
Display & Text Console
Function Link Lua uBASIC Description
set_backlight Y Y turns the LCD screen backlight on or off
set_lcd_display Y Y turns the LCD screen on or off (CHDK 1.3.0 or greater)
set_draw_title_line Y Y turns the CHDK title line on or off  (CHDK 1.3.0 or greater)
get_draw_title_line Y Y returns the current CHDK title state  (CHDK 1.3.0 or greater)
cls Y Y clear console screen
console_redraw Y Y manually refresh/rewrite the script console
print Y Y displays a line of text on console area of LCD screen
print_screen Y Y causes text written to screen to also be written to file on the SD card
set_console_autoredraw Y Y enable or disable automatic rewrite/refresh of the console
set_console_layout Y Y sets the dimensions the LCD message console
LCD Graphics
Function Link Lua uBASIC Description
draw.xxx Y N Lua drawing module
draw_ellipse Y N draws an ellipse on LCD screen
draw_ellipse Y N draws an ellipse on LCD screen
draw_ellipse_filled Y N draws a filled ellipse on LCD screen
draw_line Y N draw a line on LCD screen
draw_pixel Y N draws a single pixel on LCD screen
draw_rect Y N draws a rectangle on LCD screen
draw_rect_filled Y N draws a filled rectangle on LCD screen
draw_string Y N prints a text string on LCD screen
textbox Y N input text function for Lua scripts
get_gui_screen_width Y N get screen width
get_gui_screen_height Y N get screen height
RAW
Function Link Lua uBASIC Description
get_raw Y Y return status of RAW disabled or enabled
get_raw_count Y Y return number of RAW shots that will fit on remaining SD card space
get_raw_nr Y Y return state of dark frame subtraction (noise reduction) override (auto, off, on )
get_raw_support Y Y return whether or not current capture mode supports RAW
raw_merge_add_file Y N adds a RAW file to the current merge process
raw_merge_end Y N ends a RAW merge process on the camera
raw_merge_start Y N begins a RAW merge process on the camera
set_raw Y Y enables or disables the storage of RAW images
set_raw_develop Y N develop RAW image on next shot
set_raw_nr Y Y set CHDK dark frame subtraction (noise reduction) override
CHDK Functionality
Function Link Lua uBASIC Description
enter_alt Y Y activates CHDK mode (CHDK 1.3.0 or greater for uBASIC support)
exit_alt Y Y exits CHDK mode
get_alt_mode Y Y returns whether CHDK is in ALT mode or not (CHDK 1.3.0 or greater)
get_buildinfo Y N return info about CHDK version and DIGIC running on the camera
get_digic N Y returns DIGIC type of camera
get_config_value Y Y get currently selected state of CHDK menu item
set_config_autosave Y N on/off for the autosave function of the CHDK configuration (CHDK 1.3.0 or greater)
load_config_file Y N loads a CHDK configuration file (CHDK 1.3.0 or greater)
save_config_file Y N saves a CHDK configuration file (CHDK 1.3.0 or greater)
get_histo_range Y Y return % if values in given range on histogram
get_platform_id N Y get the camera's platform ID value
set_config_value Y Y sets specified CHDK config value to specified value
shot_histo_enable Y Y enables creation of histogram data from a shot
Programming
Function Link Lua uBASIC Description
bitand(a, b) Y N returns bitwise logical AND of two variables
bitnot(a) Y N returns bitwise inversion of a variable
bitor(a, b) Y N returns bitwise logical OR of two variables
bitshl(a) Y N returns logical shift left of a variable
bitshri(a) Y N returns logical right of a variable (top bit stays in same state afterwards)
bitshru(a) Y N returns logical right of a variable (top bit = 0 afterwards)
bitxor(a, b) Y N returns logical exclusive or of two variables
peek Y N reads from specified camera memory address
poke Y N writes to specified camera memory address
Motion Detection
Function Link Lua uBASIC Description
md_detect_motion Y Y waits for a change in specified screen cells caused by motion
md_get_cell_diff Y Y gets change in motion detect level in specified cell
md_get_cell_val Y Y gets signal level in specified cell
md_af_on_time Y Y enable AF led for MD response testing
USB Port Interface
Function Link Lua uBASIC Description
get_usb_power Y Y get status of USB remote ( current level, pulse width, pulse count, etc )
set_remote_timing Y Y enables high precision USB remote timing
read_usb_msg Y N read a message from the CHDK ptp usb interface
write_usb_msg Y N write a message via the CHDK ptp interface
usb_msg_table_to_string Y N User-definable callback used convert tables to string for write_usb_msg and PTP return
switch_mode_usb Y N set playback or record mode while PTP USB connected
usb_force_active Y Y force camera to believe USB 5V pin is active or inactive
force_analog_av Y Y force camera to believe AV output connector is attached or not attached
usb_sync_wait Y Y causes camera to wait for sync signal on next shot (CHDK 1.4.0 or newer)
get_usb_capture_support Y N gets remote capture supported image types
init_usb_capture Y N starts image capture over USB PTP
get_usb_capture_target Y N mostly magic
set_usb_capture_timeout Y N sets timeout waiting for image capture
Tone Curves
Function Link Lua uBASIC Description
get_curve_file Y N Lua commands to control tone curves
get_curve_state Y N Lua commands to control tone curves
set_curve_file Y N load a tone curve file
set_curve_state Y N enable/disable the use of a tone curve file
imath functions
Function Link Lua uBASIC Description
imath.scale Y N constant = 1000
imath.pi2 Y N constant = 6283
imath.pi Y N constant = 3142
imath.pi_2 Y N constant = 1517
imath.muldiv Y N a*b/c
imath.mul Y N a*b
imath.div Y N a/b
imath.rad Y N rad -> deg
imath.deg Y N deg -> rad
imath.sinr Y N sin(rad)
imath.cosr Y N cos(rad)
imath.tanr Y N tan(rad)
imath.asinr Y N arcsin(rad)
imath.acosr Y N arccos(rad)
imath.atanr Y N arctan(rad)
imath.polr Y N r, rad_alpha = pol(x, y)
imath.recr Y N x, y = rec(r, rad_alpha)
imath.sind Y N sin(deg)
imath.cosd Y N cos(deg)
imath.tand Y N tan(deg)
imath.asind Y N arcsin(deg)
imath.acosd Y N arccos(deg)
imath.atand Y N arctan(deg)
imath.pold Y N r, deg_alpha = pol(x, y)
imath.recd Y N x, y = rec(r, deg_alpha)
imath.pow Y N x^y
imath.log Y N log(x)
imath.log2 Y N log2(x)
imath.log10 Y N log10(x)
imath.sqrt Y N square root
imath.int Y N integer
imath.frac Y N fractal
imath.ceil Y N ceil
imath.floor Y N floor
imath.round Y N round
Community content is available under CC-BY-SA unless otherwise noted.