2.2. Events

The communication between input devices (remote control or keyboard) and the menu or the application is based on events. It's also possible that a plugin sends an event to other parts of Freevo. The mapping between keys and the events depends on the application type (menu, video, audio, etc). See event.py for details about the default event mapping.

A event is an identifier string and optional an argument. The event itself can be compared with a string, comparing two event objects only compares the identifier. This makes it possible to check for events without caring for the argument.

An event is send into Freevo with the function rc.post_event. The events are stored in a fifo queue. If an event is in the queue, Freevo tries to find the correct eventhandler for this event. If the menu is active, Freevo will pass the event to the current selected item. Each item will send the event to it's parent if it doesn't consume the event. If the event wasn't consumed by one of the menu items, it will be passed to the DaemonPlugins (see DaemonPlugins section for deatils).

Instead of the class Event, the plugin can use the functions helper functions in plugin.py event to create and isevent to get the name of an event. This functions adds the string PLUGIN_EVENT to the event name. The media menu has some extra redraw checkings if the event has something to do with a plugin.