@ -1,5 +1,33 @@
Kaleidoscope upgrade notes
==========================
Noteworthy features
-------------------
### New plugin API
A new plugin API was introduced in May 2018, which replaces the old system
(which still continues to work, but see below). The new system is hopefully
easier to use and develop for:
- It does not require one to register / use hooks anymore. Implementing the
interface provided by `kaleidoscope::Plugin` is all that is required.
- The new system has more hook points, and the method names are much more clear
now.
### KALEIDOSCOPE_API_VERSION bump
`KALEIDOSCOPE_API_VERSION` has been bumped to **2** due to the plugin API
changes. It does not mean that version two of the API is final, though. The bump
is there so plugins can check it, and make compile-time decisions based on it.
Such as whether to compile for the version one, or for the version two API.
The API version will remain the same, even if we introduce breaking changes -
until a stable release is made from the v2 branch. From that point onwards, the
API version will change with further breaking changes.
Deprecated APIs and their replacements
======================================
--------------------------------------
As the firmware evolves, there are - and will be - APIs that we deprecate, and
eventually remove. This document is a short guide that lists the deprecations -
@ -10,12 +38,12 @@ If any of this does not make sense to you, or you have trouble updating your
.ino sketch, do not hesitate to write us at help@keyboard.io, we can help you
fix it.
## Sheduled for removal by 2018-05-26
### Sheduled for removal by 2018-05-26
These APIs and functions have been deprecated for a long time, and as far as we
can tell, aren't used by any third party or user code anymore.
### Kaleidoscope.setup(KEYMAP_SIZE)
#### Kaleidoscope.setup(KEYMAP_SIZE)
The `Kaleidoscope.setup()` method is still around, and is **not** deprecated,
but the variant of it that takes a keymap size is, and has been since October
@ -24,7 +52,7 @@ but the variant of it that takes a keymap size is, and has been since October
Instead, one should use the argument-less `Kaleidoscope.setup()` , and the new
`KEYMAP()` macros to define a keymap.
### event_handler_hook_use, loop_hook_use, and USE_PLUGINS
#### event_handler_hook_use, loop_hook_use, and USE_PLUGINS
Deprecated in October 2017, these are old aliases that should no longer be in
use. They were replaced by `Kaleidoscope.useEventHandlerHook` ,
@ -33,19 +61,19 @@ use. They were replaced by `Kaleidoscope.useEventHandlerHook`,
The replacements themselves are also deprecated - see below -, but their removal
will come at a later date.
### MOMENTARY_OFFSET
#### MOMENTARY_OFFSET
Deprecated in October 2017, replaced by `LAYER_SHIFT_OFFSET` .
This symbol was meant to be used by plugins, not user code, and as far as we
know, no third party plugin ever used it.
### key_was_pressed, key_is_pressed, key_toggled_on, key_toggled_off
#### key_was_pressed, key_is_pressed, key_toggled_on, key_toggled_off
Deprecated in July 2017, replaced by `keyWasPressed` , `keyIsPressed` ,
`keyToggledOn` , and `keyToggledOff` , respectively.
## Sheduled for removal by 2018-07-12
### Sheduled for removal by 2018-07-12
We aim at making a new release by mid-July, and APIs we deprecate now, will be
removed shortly before the major release. We may deprecate further APIs during
@ -53,7 +81,7 @@ the next month (until mid-June), and those deprecations will share the same
removal date. We will try our best to minimize deprecations, and do them as soon
as possible, to give everyone at least a month to prepare and update.
### Kaleidoscope.use()
#### Kaleidoscope.use()
Deprecated in May 2018, this method is part of the old plugin API, replaced by
`KALEIDOSCOPE_INIT_PLUGINS` . To upgrade, you need to modify your .ino sketch
@ -80,7 +108,7 @@ void setup() {
}
```
### The old-style (v1) plugin API
#### The old-style (v1) plugin API
This includes using `KaleidoscopePlugin` , `Kaleidoscope.useEventHandlerHook` ,
`Kaleidoscope.replaceEventHandlerHook` , `Kaleidoscope.appendEventHandlerHook` ,