CHDK Wiki
Register
(→‎Lua Links: added script shooting hooks - individual hooks to be added to tables later)
(→‎All Scripting Functions: get_raw_support)
Tag: sourceedit
(26 intermediate revisions by 4 users not shown)
Line 13: Line 13:
 
|[[User_Written_Scripts|User Written Scripts]]
 
|[[User_Written_Scripts|User Written Scripts]]
 
|[[PropertyCase|Property Case Values]]
 
|[[PropertyCase|Property Case Values]]
|-
 
|[[CHDK_Manual_Focus_and_Subject_Distance_Overrides|Manual Focus]]
 
|
 
 
|}
 
|}
   
Line 36: Line 33:
 
|[[Lua/PTP_Scripting|Lua PTP Scripting]]
 
|[[Lua/PTP_Scripting|Lua PTP Scripting]]
 
|-
 
|-
|[[Lua/Lua_Reference#Drawings|Lua Drawings]]
+
|[[Lua/Lua_Reference#Drawings|Lua Draw]] & [[Lua/Drawings|Lua Drawing]]
 
|[[Lua/Lua_Reference/Native_Function_Calls#call_event_proc.28name.2C....29|Native Function Calls]]
 
|[[Lua/Lua_Reference/Native_Function_Calls#call_event_proc.28name.2C....29|Native Function Calls]]
 
|-
 
|-
Line 43: Line 40:
 
|-
 
|-
 
| [[Script_Shooting_Hooks|Script Shooting Hooks]]
 
| [[Script_Shooting_Hooks|Script Shooting Hooks]]
  +
| [[CHDK_Lua_Reference_Card|One Page CHDK Lua Reference Card]]
|
 
 
|}
 
|}
   
Line 49: Line 46:
 
{| border="4" cellpadding="1" cellspacing="1" class="article-table"
 
{| border="4" cellpadding="1" cellspacing="1" class="article-table"
 
|-
 
|-
|[http://chdk.wikia.com/wiki/CHDK_scripting#The_Script_Header The Script Header]
+
|[http://chdk.wikia.com/wiki/CHDK_Script_Header The Script Header]
 
|[http://chdk.wikia.com/wiki/UBASIC/TutorialScratchpad#The_Script_Header Tutorial - The Script Header]
 
|[http://chdk.wikia.com/wiki/UBASIC/TutorialScratchpad#The_Script_Header Tutorial - The Script Header]
 
|}
 
|}
Line 75: Line 72:
 
|-
 
|-
 
| align="center" | [[Script_commands#get_IS_mode | get_IS_mode ]]||Y||Y||get image stabilization mode
 
| align="center" | [[Script_commands#get_IS_mode | get_IS_mode ]]||Y||Y||get image stabilization mode
|-
 
| align="center" | [[Script_commands#get_sd_over_modes | get_sd_over_modes ]]||Y||Y||get modes that allow SD overrides (CHDK 1.3.0 or greater)
 
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#set_zoom_.2F_set_zoom_rel_.2F_get_zoom_.2F_set_zoom_speed | get_zoom ]]||Y||Y||returns current zoom position
 
| align="center" | [[CHDK_scripting#set_zoom_.2F_set_zoom_rel_.2F_get_zoom_.2F_set_zoom_speed | get_zoom ]]||Y||Y||returns current zoom position
Line 82: Line 77:
 
| align="center" | [[Script_commands#get_zoom_steps | get_zoom_steps ]]||Y||Y||returns the number of zoom steps supported by the camera
 
| align="center" | [[Script_commands#get_zoom_steps | get_zoom_steps ]]||Y||Y||returns the number of zoom steps supported by the camera
 
|-
 
|-
| align="center" | [[Script_commands#set_aflock | set_aflock ]]||Y||Y||disables automatic focus adjustments
+
| align="center" | [[Script_commands#get_sd_over_modes | get_sd_over_modes ]]||Y||Y||returns a bit field value indicating when subject distance override will work with this camera.
 
|-
 
|-
| align="center" | [[Script_commands#set_mf | set_mf ]]||Y||Y||engages Canon manual focus mode (CHDK 1.3.0 or greater)
+
| align="center" | [[Script_commands#set_mf | set_mf ]]||Y||Y||lock/unlock Canon manual focus (MF) mode.
 
|-
 
|-
| align="center" | [[Script_commands#set_aelock | set_aelock ]]||Y||Y||disables automatic exposure adjustments (CHDK 1.3.0 or greater)
+
| align="center" | [[Script_commands#set_aflock | set_aflock ]]||Y||Y||blocks the camera firmware from making focus adjustments
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#set_focus_.2F_get_focus | set_focus ]]||Y||Y||sets current focus distance in mm
 
| align="center" | [[CHDK_scripting#set_focus_.2F_get_focus | set_focus ]]||Y||Y||sets current focus distance in mm
Line 130: Line 125:
 
| align="center" | [[CHDK_scripting#get_user_av_id | get_av ]]||N||Y||obsolete - replaced with get_user_av_id
 
| align="center" | [[CHDK_scripting#get_user_av_id | get_av ]]||N||Y||obsolete - replaced with get_user_av_id
 
|-
 
|-
| align="center" | [[CHDK_scripting#get_av96 | get_av96 ]]||Y||Y||gets APEX96 aperture value
+
| align="center" | [[CHDK_scripting#get_av96 | get_av96 ]]||Y||Y||gets APEX96 aperature value
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#get_bv96 | get_bv96 ]]||Y||Y||gets APEX96 luminance value
 
| align="center" | [[CHDK_scripting#get_bv96 | get_bv96 ]]||Y||Y||gets APEX96 luminance value
Line 150: Line 145:
 
| align="center" | [[CHDK_scripting#get_tv96 | get_tv96 ]]||Y||Y||gets APEX96 exposure time
 
| align="center" | [[CHDK_scripting#get_tv96 | get_tv96 ]]||Y||Y||gets APEX96 exposure time
 
|-
 
|-
| align="center" | [[CHDK_scripting#get_user_av_id | get_user_av_id ]]||Y||Y||gets M mode override APEX96 aperture value by index
+
| align="center" | [[CHDK_scripting#get_user_av_id | get_user_av_id ]]||Y||Y||gets M mode override APEX96 aperature value by index
 
|-
 
|-
| align="center" | [[CHDK_scripting#get_user_av_id | get_user_av96 ]]||Y||Y||gets APEX96 aperture value
+
| align="center" | [[CHDK_scripting#get_user_av_id | get_user_av96 ]]||Y||Y||gets APEX96 aperature value
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#get_user_tv_id | get_user_tv_id ]]||Y||Y||gets M mode override APEX96 exposure time by index
 
| align="center" | [[CHDK_scripting#get_user_tv_id | get_user_tv_id ]]||Y||Y||gets M mode override APEX96 exposure time by index
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#get_user_tv96 | get_user_tv96 ]]||Y||Y||gets M mode override APEX96 exposure value
 
| align="center" | [[CHDK_scripting#get_user_tv96 | get_user_tv96 ]]||Y||Y||gets M mode override APEX96 exposure value
 
|-
 
| align="center" | [[Script_commands#set_aelock| set_aelock ]]||Y||Y||sets automatic exposure lock (AEL) ( CHDK 1.3.0 or newer)
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#set_av | set_av ]]||N||Y||obsolete - replaced with set_user_av_by_id
 
| align="center" | [[CHDK_scripting#set_av | set_av ]]||N||Y||obsolete - replaced with set_user_av_by_id
Line 162: Line 159:
 
| align="center" | [[CHDK_scripting#set_av_rel | set_av_rel ]]||N||Y||obsolete - replaced with set_user_ac_by_id_rel
 
| align="center" | [[CHDK_scripting#set_av_rel | set_av_rel ]]||N||Y||obsolete - replaced with set_user_ac_by_id_rel
 
|-
 
|-
| align="center" | [[CHDK_scripting#set_av96 | set_av96 ]]||Y||Y||sets the APEX96 aperture value
+
| align="center" | [[CHDK_scripting#set_av96 | set_av96 ]]||Y||Y||sets the APEX96 aperature value
 
|-
 
|-
| align="center" | [[CHDK_scripting#set_av96_direct | set_av96_direct ]]||Y||Y||sets the APEX96 aperture value (bypass validation check)
+
| align="center" | [[CHDK_scripting#set_av96_direct | set_av96_direct ]]||Y||Y||sets the APEX96 aperature value (bypass validation check)
 
|-
 
|-
 
| align="center" | [[Script_commands#set_ev | set_ev ]]||Y||Y||sets exposure adjustment amount
 
| align="center" | [[Script_commands#set_ev | set_ev ]]||Y||Y||sets exposure adjustment amount
Line 186: Line 183:
 
| align="center" | [[CHDK_scripting#set_tv96_direct | set_tv96_direct ]]||Y||Y||set APEX96 exposure time (bypass validity checks)
 
| align="center" | [[CHDK_scripting#set_tv96_direct | set_tv96_direct ]]||Y||Y||set APEX96 exposure time (bypass validity checks)
 
|-
 
|-
| align="center" | [[CHDK_scripting#set_user_av_by_id | set_user_av_by_id ]]||Y||Y||set user override APEX96 aperture by index (M mode only)
+
| align="center" | [[CHDK_scripting#set_user_av_by_id | set_user_av_by_id ]]||Y||Y||set user override APEX96 aperature by index (M mode only)
 
|-
 
|-
| align="center" | [[CHDK_scripting#set_user_av_by_id_rel | set_user_av_by_id_rel ]]||Y||Y||set user override APEX96 aperture by index relative (M mode only)
+
| align="center" | [[CHDK_scripting#set_user_av_by_id_rel | set_user_av_by_id_rel ]]||Y||Y||set user override APEX96 aperature by index relative (M mode only)
 
|-
 
|-
| align="center" | [[CHDK_scripting#set_user_av96 | set_user_av96 ]]||Y||Y||set user override APEX96 aperture (M mode only)
+
| align="center" | [[CHDK_scripting#set_user_av96 | set_user_av96 ]]||Y||Y||set user override APEX96 aperature (M mode only)
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#set_user_tv_by_id | set_user_tv_by_id ]]||Y||Y||set user override APEX96 exposure time index (M mode only)
 
| align="center" | [[CHDK_scripting#set_user_tv_by_id | set_user_tv_by_id ]]||Y||Y||set user override APEX96 exposure time index (M mode only)
Line 274: Line 271:
 
| align="center" | [[Script_commands#get_resolution | get_resolution ]]||N||Y||returns the current capture resolution setting in Canon grades
 
| align="center" | [[Script_commands#get_resolution | get_resolution ]]||N||Y||returns the current capture resolution setting in Canon grades
 
|-
 
|-
| align="center" | [[Script_commands#get_shooting | get_shooting ]]||Y||Y||return value indicates if shooting is done
+
| align="center" | [[Script_commands#get_shooting | get_shooting ]]||Y||Y||indicates that half_press is active, exposure is set and focusing is completed (see also get_focus_ok)
 
|-
 
|-
 
| align="center" | [[Script_commands#get_temperature | get_temperature ]]||Y||Y||returns specified temperature sensor value
 
| align="center" | [[Script_commands#get_temperature | get_temperature ]]||Y||Y||returns specified temperature sensor value
Line 283: Line 280:
 
|-
 
|-
 
| align="center" | [[Script_commands#get_video_details | get_video_details ]]||Y||N||returns a struct with viewport configuration info
 
| align="center" | [[Script_commands#get_video_details | get_video_details ]]||Y||N||returns a struct with viewport configuration info
 
|-
  +
| align="center" | [[Script_commands#get_video_recording| get_video_recording ]]||Y||Y||return whether video is recording or not
 
|-
 
|-
 
| align="center" | [[Script_commands#is_capture_mode_valid.28modenum.29 | is_capture_mode_valid ]]||Y||Y||check if CHDK mode number is valid for this camera
 
| align="center" | [[Script_commands#is_capture_mode_valid.28modenum.29 | is_capture_mode_valid ]]||Y||Y||check if CHDK mode number is valid for this camera
Line 322: Line 321:
 
| align="left" style="background:#e6e1e4;"|'''Description'''
 
| align="left" style="background:#e6e1e4;"|'''Description'''
 
|-
 
|-
| align="center" | [[CHDK_scripting#Camera_Operation_Commands | click ]]||Y||Y||press and release a key
+
| align="center" | [[CHDK_scripting#Camera_Button_Commands| click ]]||Y||Y||press and release a key
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#is_key | is_key ]]||Y||Y||detemines if specified key was pressed
 
| align="center" | [[CHDK_scripting#is_key | is_key ]]||Y||Y||detemines if specified key was pressed
 
|-
 
|-
| align="center" | [[Script_commands#is_pressed_.22key.22 | is_pressed ]]||Y||Y||determines if specified key is being pressed
+
| align="center" | [[CHDK_scripting#is_pressed_.22key.22| is_pressed ]]||Y||Y||determines if specified key is being pressed
 
|-
 
|-
| align="center" | [[CHDK_scripting#click.2Fpress.2Frelease_.22up.22.2C_.22down.22.2C_.22left.22.2C_.22right.22 | press ]]||Y||Y||activates the specified camera button
+
| align="center" | [[CHDK_scripting#Camera_Button_Commands| press ]]||Y||Y||activates the specified camera button
 
|-
 
|-
| align="center" | [[CHDK_scripting#click.2Fpress.2Frelease_.22up.22.2C_.22down.22.2C_.22left.22.2C_.22right.22 | release ]]||Y||Y||releases the specified camera button
+
| align="center" | [[CHDK_scripting#Camera_Button_Commands| release ]]||Y||Y||releases the specified camera button
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#shoot | shoot ]]||Y||Y||takes a picture
 
| align="center" | [[CHDK_scripting#shoot | shoot ]]||Y||Y||takes a picture
 
|-
 
|-
| align="center" | [[CHDK_scripting#wait_click_.2F_is_key | wait_click ]]||Y||Y||waits for any camera button to be pressed
+
| align="center" | [[CHDK scripting#wait click| wait_click ]]||Y||Y||waits for any camera button to be pressed
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#wheel_left | wheel_left ]]||Y||Y||simulates moving jog dial wheel to the left
 
| align="center" | [[CHDK_scripting#wheel_left | wheel_left ]]||Y||Y||simulates moving jog dial wheel to the left
Line 386: Line 385:
 
| align="center" | [[Script_commands#get_autostart_.26_set_autostart | get_autostart ]]||Y||Y||reads the conf.script_autostart
 
| align="center" | [[Script_commands#get_autostart_.26_set_autostart | get_autostart ]]||Y||Y||reads the conf.script_autostart
 
|-
 
|-
| align="center" | [[Get_day_seconds_example | get_day_seconds ]]||Y||Y||return number of seconds since midnight
+
| align="center" | [[CHDK scripting#get day seconds|get_day_seconds]] ||Y||Y||return number of seconds since midnight
 
|-
 
|-
| align="center" | [[CHDK_scripting#get_tick_count | get_tick_count ]]||Y||Y||gets time in tic units since camera startup
+
| align="center" | [[CHDK_scripting#get_tick_count | get_tick_count ]]||Y||Y||gets time in tic units (milliseconds) since camera startup
 
|-
 
|-
 
| align="center" | [[Script_commands#get_time | get_time ]]||Y||Y||returns elements of the camera\'s current date / time setting
 
| align="center" | [[Script_commands#get_time | get_time ]]||Y||Y||returns elements of the camera\'s current date / time setting
Line 412: Line 411:
 
| align="center" | [[Lua/Lua_Reference/Native_Function_Calls#call_func_ptr.28fptr.2C....29 | call_func_ptr(fptr,...) ]]||Y||N||call ARM or Thumb function in camera RAM or ROM
 
| align="center" | [[Lua/Lua_Reference/Native_Function_Calls#call_func_ptr.28fptr.2C....29 | call_func_ptr(fptr,...) ]]||Y||N||call ARM or Thumb function in camera RAM or ROM
 
|-
 
|-
| align="center" | [[Lua/Lua_Reference/Levent#get_levent_def.28event.29 | get_levent_def ]]||Y||N||returns (name, id, param) if index is valid, otherwise nil
+
| align="center" | [[Lua/Lua_Reference/Levent#get_levent_def.28event.29 | get_levent_def ]]||Y||N||lookup levent definition by event's name string or id number
 
|-
 
|-
| align="center" | [[Lua/Lua_Reference/Levent#get_levent_index.28event.29 | get_levent_def_by_index ]]||Y||N||returns (name, id, param) if index is valid, otherwise nil
+
| align="center" | [[Lua/Lua_Reference/Levent#get_levent_index.28event.29 | get_levent_def_by_index ]]||Y||N||lookup levent definition by index in logical event table
 
|-
 
|-
 
| align="center" | [[Lua/Lua_Reference/Levent#get_levent_index.28event.29 | get_levent_index ]]||Y||N||returns the index of the given event
 
| align="center" | [[Lua/Lua_Reference/Levent#get_levent_index.28event.29 | get_levent_index ]]||Y||N||returns the index of the given event
Line 438: Line 437:
 
| align="center" | [[Script_commands#set_backlight.28.29 | set_backlight ]]||Y||Y||turns the LCD screen backlight on or off
 
| align="center" | [[Script_commands#set_backlight.28.29 | set_backlight ]]||Y||Y||turns the LCD screen backlight on or off
 
|-
 
|-
| align="center" | [[Script_commands#set_lcd_display.28.29 | set_lcd_display ]]||Y||Y||turns the LCD screen on or off
+
| align="center" | [[Script_commands#set_lcd_display.28.29 | set_lcd_display ]]||Y||Y||turns the LCD screen on or off (CHDK 1.3.0 or greater)
 
|-
 
|-
 
| align="center" | [[Script_commands#set_draw_title_line | set_draw_title_line]]||Y||Y||turns the CHDK title line on or off  (CHDK 1.3.0 or greater)
 
| align="center" | [[Script_commands#set_draw_title_line | set_draw_title_line]]||Y||Y||turns the CHDK title line on or off  (CHDK 1.3.0 or greater)
Line 483: Line 482:
 
|-
 
|-
 
| align="center" | [[Lua/Lua_Reference#Drawings | draw_string ]]||Y||N||prints a text string on LCD screen
 
| align="center" | [[Lua/Lua_Reference#Drawings | draw_string ]]||Y||N||prints a text string on LCD screen
|-
 
| align="center" | [[Lua/Lua_Reference#Drawings | get_gui_screen_width ]]||Y||N||returns screen width in pixels (CHDK 1.3.0 or greater)
 
|-
 
| align="center" | [[Lua/Lua_Reference#Drawings | get_gui_screen_height ]]||Y||N||returns screen height in pixels (CHDK 1.3.0 or greater)
 
 
|-
 
|-
 
| align="center" | [[Script_commands#textbox | textbox ]]||Y||N||input text function for Lua scripts
 
| align="center" | [[Script_commands#textbox | textbox ]]||Y||N||input text function for Lua scripts
Line 505: Line 500:
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#get_raw_nr | get_raw_nr ]]||Y||Y||return state of RAW noise reduction ( off, on )
 
| align="center" | [[CHDK_scripting#get_raw_nr | get_raw_nr ]]||Y||Y||return state of RAW noise reduction ( off, on )
 
|-
  +
| align="center" | [[Script_commands#get_raw_support | get_raw_support ]]||Y||Y|| return whether or not current capture mode supports RAW
 
|-
 
|-
 
| align="center" | [[Lua/Lua_Reference#RAW_development | raw_merge_add_file ]]||Y||N||adds a RAW file to the current merge process
 
| align="center" | [[Lua/Lua_Reference#RAW_development | raw_merge_add_file ]]||Y||N||adds a RAW file to the current merge process
Line 528: Line 525:
 
| align="left" style="background:#e6e1e4;"|'''Description'''
 
| align="left" style="background:#e6e1e4;"|'''Description'''
 
|-
 
|-
| align="center" | [[CHDK_scripting#enter_alt | enter_alt ]]||Y||N||activates CHDK mode
+
| align="center" | [[CHDK_scripting#enter_alt | enter_alt ]]||Y||Y||activates CHDK mode (CHDK 1.3.0 or greater for uBASIC support)
 
|-
 
|-
 
| align="center" | [[CHDK_scripting#exit_alt | exit_alt ]]||Y||Y||exits CHDK mode
 
| align="center" | [[CHDK_scripting#exit_alt | exit_alt ]]||Y||Y||exits CHDK mode
 
|-
 
| align="center" | [[CHDK_scripting#get_alt_mode | get_alt_mode ]]||Y||Y||returns whether CHDK is in ALT mode or not (CHDK 1.3.0 or greater)
 
|-
 
|-
 
| align="center" | [[Lua/Lua_Reference#get_buildinfo | get_buildinfo ]]||Y||N||return info about CHDK version running on the camera
 
| align="center" | [[Lua/Lua_Reference#get_buildinfo | get_buildinfo ]]||Y||N||return info about CHDK version running on the camera
Line 606: Line 605:
 
| align="left" style="background:#e6e1e4;"|'''Description'''
 
| align="left" style="background:#e6e1e4;"|'''Description'''
 
|-
 
|-
| align="center" | [[USB_Remote_V2#Scripting_Interface | get_usb_power ]]||Y||Y||get status of USB connector ( voltage present or not present )
+
| align="center" | [[USB_Remote_V2#Scripting_Interface | get_usb_power ]]||Y||Y||get status of USB remote ( current level, pulse width, pulse count, etc )
 
|-
  +
| align="center" | [[USB_Remote_V2#set_remote_timing.28uSec.29 | set_remote_timing ]]||Y||Y||enables high precision USB remote timing
 
|-
 
|-
 
| align="center" | [[Lua/PTP_Scripting#read_usb_msg | read_usb_msg ]]||Y||N||read a message from the CHDK ptp usb interface
 
| align="center" | [[Lua/PTP_Scripting#read_usb_msg | read_usb_msg ]]||Y||N||read a message from the CHDK ptp usb interface
Line 615: Line 616:
 
|-
 
|-
 
| align="center" | [[Lua/PTP_Scripting#switch_mode_usb | switch_mode_usb ]]||Y||N||set playback or record mode while PTP USB connected
 
| align="center" | [[Lua/PTP_Scripting#switch_mode_usb | switch_mode_usb ]]||Y||N||set playback or record mode while PTP USB connected
 
|-
  +
| align="center" | [[Lua/PTP_Scripting#usb_force_active | usb_force_active ]]||Y||Y||force camera to believe USB 5V pin is active
  +
|-
  +
| align="center" | [[Lua/PTP_Scripting#usb_sync_wait | usb_sync_wait ]]||Y||Y||causes camera to wait for sync signal on next shot (CHDK 1.4.0 or newer)
 
|-
 
|-
 
| align="left" style="color:#FFFFFF; background:#06718e;"|'''''Tone Curves'''''
 
| align="left" style="color:#FFFFFF; background:#06718e;"|'''''Tone Curves'''''

Revision as of 07:33, 6 December 2015

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 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_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_nd_present Y Y returns whether camera has an ND filter (and / or diaphragm )
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
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)
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
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 RAW noise reduction ( 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 enables or disable noise reduction in RAW mode
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 running on the 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
usb_sync_wait Y Y causes camera to wait for sync signal on next shot (CHDK 1.4.0 or newer)
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