/* Kaleidoscope - Firmware for computer input devices
* Copyright (C) 2013-2022 Keyboard.io, Inc.
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
#pragma once
#include // for uint8_t
namespace kaleidoscope {
// This is the set of return values for event handlers. Event handlers for
// plugins are called in sequence by the corresponding hook function, in plugin
// initialization order. The interpretation of these return values can vary
// based on the needs of the hook function, but should be as follows:
//
// - OK: Continue processing the event. The calling hook function should
// continue calling next event handler in the sequence. If all event
// handlers return `OK`, finish processing the event.
//
// - EVENT_CONSUMED: Stop processing event handlers. The calling hook function
// should not call any further handlers, but may continue to take some
// actions to finish processing the event. This should be used to indicate
// that the event has been successfully handled.
//
// - ABORT: Ignore the event. The calling hook function should not call any
// further handlers, and should treat the event as if it didn't
// happen. This should be used by plugin handlers that need to either
// suppress an event or queue the event in order to delay it.
//
// - ERROR: Undefined error. The calling hook function should not call any
// further handlers. There is currently no specification for what should
// happen if this is returned.
enum class EventHandlerResult : uint8_t {
OK,
EVENT_CONSUMED,
ABORT,
ERROR,
};
} // namespace kaleidoscope