You can use a message bus subscription to do that.
The following script will call a function when 'use_keyframe_insert_auto' is changing from the UI.
The principle is:
- Obtain a subscription link using
path_resolve
on the scene - Then use this link to subscribe in order to fire a function when the value changes
Here is the code (look at the console to see the printed results):
import bpy
#The callback when use_keyframe_insert_auto changed
def a_callback(scene):
print( scene, "use_keyframe_insert_auto changed" )
def subscribe_to_scene(scene):
#Get a rna subscription link from the scene
subscribe_to = scene.path_resolve("tool_settings.use_keyframe_insert_auto", False)
#Effectively subscribe to the rna path from the scene
bpy.msgbus.subscribe_rna(
key=subscribe_to,
owner=scene,
args=(scene,),
notify=a_callback,
)
subscribe_to_scene(bpy.context.scene)