| 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 | fractional part |
| imath.ceil | Y | N | ceil |
| imath.floor | Y | N | floor |
| imath.round | Y | N | round |
| | | | | |