CHDK Wiki
Advertisement

CHDK Manual

CHDK User Manual : Scripting (program your camera)

CHDK Scripting Links

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

uBASIC Links

uBASIC uBASIC Syntax
uBASIC Tutorial Scratchpad

Lua Links

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 Raw Hook Operations
One Page CHDK Lua Reference Card

Script Header Documentation

The Script Header Tutorial - The Script Header

All Scripting Functions

.

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_canon_image_format Y Y Get native firmware RAW/JPEG setting
get_canon_raw_support Y Y Return whether the native firmware supports RAW
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_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_canon_image_format Y Y Set native firmware RAW/JPEG setting
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
rawop.* Y N read or modify raw image data between shot and file save
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
Advertisement