Triggers are used by macros to determine what conditions are needed for a macro to run.

Triggers mush implement INotifyPropertyChanged with a valid pattern on the isTriggered property to correctly send status back to parent macro.

Triggers may also implement IIMDeviceReference and IIMConfigurable

IIMTrigger my implement any code necessary to determine and set the value of isTriggered as long as it has the minimum below pattern

[CustomName("My Trigger")]
[CustomIcon(InputMapperIcon.IMIcons.None)]
[CustomCatagory("My Triggers", InputMapperIcon.IMIcons.None)]
class MyTrigger: IIMTrigger
{
    public event PropertyChangedEventHandler PropertyChanged;

    private bool _isTriggered;
    public bool isTriggered
    {
        get { return _isTriggered; }
        set { if (value != _isTriggered) { _isTriggered = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("isTriggered")); } }
    }
}