# @title Vedeu System Events ## System Events ### `:\_cleanup\_` Vedeu triggers this event when `:_exit_` is triggered. You can hook into this to perform a special action before the application terminates. Saving the user's work, session or preferences might be popular here. Vedeu.trigger(:_exit_) ### `:\_command\_` Will cause the triggering of the `:command` event; which you should define to 'do things'. Vedeu.trigger(:_command_, command) ### `:\_editor\_` This event is called by {Vedeu::Input::Capture#read}. When invoked, the key will be passed to the editor for currently focussed view. Note: 'key' is a String for alphanumeric keys and special keys are represented by Symbols. Vedeu.trigger(:_editor_, key) ### `:\_exit\_` When triggered, Vedeu will trigger a `:cleanup` event which you can define (to save files, etc) and attempt to exit. Vedeu.trigger(:_exit_) Vedeu.exit ### `:\_initialize\_` Vedeu triggers this event when it is ready to enter the main loop. Client applications can listen for this event and perform some action(s), like render the first screen, interface or make a sound. Vedeu.trigger(:_initialize_) ### `:\_keypress\_` When the name is given: - The given key is passed to the named keymap. If the keymap is registered, and the key has an associated action assigned, then the action will be called/triggered. - If the keymap is not registered, the key will be passed to the global keymap to be actioned, or ignored if the global keymap does not have an action assigned for the key pressed. When the name is not given: - The given key is passed to the named keymap associated with the interface/view currently in focus. If the key has an associated action assigned, then the action will be called or triggered, otherwise, the key is (as above) passed to the global keymap to be processed. It is also to be noted, that a `:key` event will be triggered irrespective of the conditions above, you can bind to this event separately to 'do things'. A list of supported keypresses can be found here: {Vedeu::Input::Capture}. Vedeu.trigger(:_keypress_, key, optional_name) ### `:\_log\_` When triggered with a message will cause Vedeu to log the message if logging is enabled in the configuration. Note: 'message' is a String. Vedeu.trigger(:_log_, message) ### `:\_mode_switch\_` When triggered, Vedeu switches between modes of the terminal. The idea here being that the raw mode is for single keypress actions, whilst fake and cooked modes allow the user to enter more elaborate commands- such as commands with arguments. Vedeu.trigger(:_mode_switch_)