Skip to content

Instantly share code, notes, and snippets.

@Garulf
Created October 10, 2020 01:55
Show Gist options
  • Save Garulf/16a713059105ca4ce1d62d112f5c4ff9 to your computer and use it in GitHub Desktop.
Save Garulf/16a713059105ca4ce1d62d112f5c4ff9 to your computer and use it in GitHub Desktop.
import obspython as obs
last_switched_scene = None
last_switched_scene_id = None
last_scene = None
last_scene_id = None
def _handle_key(toggle_scene, toggle_scene_id):
def _on_press(pressed):
if pressed:
return
global last_switched_scene
global last_switched_scene_id
global last_scene
global last_scene_id
scene = obs.obs_frontend_get_current_scene()
scene_id = obs.obs_source_get_name(scene)
if scene_id == toggle_scene_id and last_switched_scene != None:
obs.obs_frontend_set_current_scene(last_switched_scene)
else:
last_switched_scene = scene
obs.obs_frontend_set_current_scene(toggle_scene)
obs.obs_source_release(scene)
print(last_switched_scene)
print(last_scene)
return _on_press
hot_keys = []
scenes = []
def _register_hot_keys(settings):
global scenes
scenes = obs.obs_frontend_get_scenes()
print(scenes)
for scene in scenes:
scene_id = obs.obs_source_get_name(scene)
callback = _handle_key(scene, scene_id)
def proxy_callback(pressed): return callback(pressed)
name = 'toggle.' + scene_id
hot_key_id = obs.obs_hotkey_register_frontend(
name, "Toggle '" + scene_id + "'", proxy_callback)
save_array = obs.obs_data_get_array(settings, name)
obs.obs_hotkey_load(hot_key_id, save_array)
obs.obs_data_array_release(save_array)
hot_keys.append({'callback': proxy_callback, 'scene_id': hot_key_id, 'name': name})
def script_load(settings):
_register_hot_keys(settings)
def script_unload():
obs.obs_frontend_remove_event_callback(on_event)
for hot_key in hot_keys:
obs.obs_hotkey_unregister(hot_key['callback'])
def script_save(settings):
for hot_key in hot_keys:
save_key = obs.obs_hotkey_save(hot_key['scene_id'])
obs.obs_data_set_array(settings, hot_key['name'], save_key)
def script_description():
return "Toggle a certain scene"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment