# Events

## Introduction

Although many branches of **Logic** can be defined in **Incari's** **Logic Editor**, a branch will never be executed without being initiated by an **Event**. They define when, and under what conditions, functionality should be triggered. In both **Incari** and computer science in general, event systems define a relationship between the fulfillment of criteria and the set of instructions to be performed once those criteria are met, and are made up of two parts: *triggers* and *listeners*.

*Triggers* can be thought of as being like announcements. A real-world example of a *trigger* is a school teacher announcing that an exam's time limit has been reached. The other staff members and students are the *listeners* in this case, whereby the **Event** occurring prompts the staff members to begin collecting exam papers, while students stop writing and put down their pencils.

**Events** in **Incari** can be directly triggered by the user's input, as is the case with **Keyboard** and **Mouse Events**, or triggered automatically when something happens relating to an **Object**, **Variable**, **Scene**, or **Screen**. One of the most powerful aspects of **Incari's** **Events** is that you can even define your own custom *triggers* and *listeners*, to establish the criteria under which one part of your **Logic** causes the execution of others.

## External Links

[*What is event programming?*](https://mortoray.com/2017/06/26/what-is-event-programming/) on Musing Mortoray.
