From f5c95810364086ee0a50ddeab6c40e19d3aeac58 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Mon, 6 Jan 2020 17:29:44 +0100 Subject: [PATCH] Remove the old 2d keymaps array Signed-off-by: Gergely Nagy --- docs/UPGRADING.md | 15 +++++------- src/kaleidoscope/keymaps.h | 49 -------------------------------------- src/kaleidoscope/layers.h | 5 ---- 3 files changed, 6 insertions(+), 63 deletions(-) diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index 54337348..adc869f2 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -21,7 +21,6 @@ If any of this does not make sense to you, or you have trouble updating your .in + [Deprecated APIs and their replacements](#deprecated-apis-and-their-replacements) - [Class/global instance Kaleidoscope_/Kaleidoscope renamed to kaleidoscope::Runtime_/kaleidoscope::Runtime](#classglobal-instance-kaleidoscope_kaleidoscope-renamed-to-kaleidoscoperuntime_kaleidoscoperuntime) - [Transition to linear indexing](#transition-to-linear-indexing) - - [keymaps array and KEYMAPS and KEYMAPS_STACKED macros](#keymaps-array-and-keymaps-and-keymaps_stacked-macros) - [Source code and namespace rearrangement](#source-code-and-namespace-rearrangement) * [Removed APIs](#removed-apis) @@ -498,14 +497,6 @@ the firmware to remain backwards compatible, however, these functions are deprec Also a new version of the onKeyswitchEvent-handler has been introduced. The old version is deprecated. -## keymaps array and KEYMAPS and KEYMAPS_STACKED macros - -The `keymaps` array has been replaced with a `keymaps_linear` array. This new array treats each layer as a simple one dimensional array of keys, rather than a two dimensional array of arrays of rows. At the same time, the `KEYMAPS` and `KEYMAPS_STACKED` macros that were previously defined in each hardware implmentation class have been replaced with `PER_KEY_DATA` and `PER_KEY_DATA_STACKED` macros in each hardware class. This change should be invisible to users, but will require changes by any plugin that accessed the 'keymaps' variable directly. - -Code like `key.raw = pgm_read_word(&(keymaps[layer][row][col])); return key;` should be changed to look like this: `return keyFromKeymap(layer, row, col);` - -The old, deprecated, API will be removed on **2019-08-13**. - ### Source code and namespace rearrangement With the move towards a monorepo-based source, some headers have moved to a new location, and plenty of plugins moved to a new namespace (`kaleidoscope::plugin`). This means that the old headers, and some old names are deprecated. The old names no longer work. @@ -535,6 +526,12 @@ The following headers and names have changed: The [EEPROM-Keymap](doc/plugin/EEPROM-Keymap.md) plugin had its `setup()` method changed, the formerly optional `method` argument is now obsolete and unused. It can be safely removed. +## keymaps array and KEYMAPS and KEYMAPS_STACKED macros + +The `keymaps` array has been replaced with a `keymaps_linear` array. This new array treats each layer as a simple one dimensional array of keys, rather than a two dimensional array of arrays of rows. At the same time, the `KEYMAPS` and `KEYMAPS_STACKED` macros that were previously defined in each hardware implmentation class have been replaced with `PER_KEY_DATA` and `PER_KEY_DATA_STACKED` macros in each hardware class. This change should be invisible to users, but will require changes by any plugin that accessed the 'keymaps' variable directly. + +Code like `key.raw = pgm_read_word(&(keymaps[layer][row][col])); return key;` should be changed to look like this: `return keyFromKeymap(layer, row, col);` + ### Removed on 2019-01-18 ### Removal of Layer.defaultLayer diff --git a/src/kaleidoscope/keymaps.h b/src/kaleidoscope/keymaps.h index 09fdf5c6..3cbfe08f 100644 --- a/src/kaleidoscope/keymaps.h +++ b/src/kaleidoscope/keymaps.h @@ -29,53 +29,4 @@ Key keyFromKeymap(uint8_t layer, KeyAddr key_addr) { return keymaps_linear[layer][key_addr.toInt()].readFromProgmem(); } -namespace internal { - -// This class mimics a three-dimensional array as formerly used to -// store keymap arrays in progmem. It wraps the new one dimentional -// keymap array. - -class Keymaps2DInterface { - - public: - - class KeymapLayer { - - const Key * const keymap_layer_; - - public: - - KeymapLayer(const Key * const keymap_layer) : keymap_layer_(keymap_layer) {} - - class KeymapRow { - - const Key * const keymap_row_; - - public: - KeymapRow(const Key * const keymap_row) : keymap_row_(keymap_row) {} - - const Key &operator[](uint8_t col) { - return keymap_row_[col]; - } - }; - - KeymapRow operator[](uint8_t row) { - return KeymapRow(keymap_layer_ + row * kaleidoscope_internal::device.matrix_columns); - } - }; - - KeymapLayer operator[](uint8_t layer) { - return KeymapLayer(keymaps_linear[layer]); - } -}; - -} } - -#define _DEPRECATED_MESSAGE_2D_KEYMAP_ARRAY \ - "Accessing the keymap array directly is deprecated. Please use the function "\ - "keyFromKeymap() to access keys. The keymap array will be removed in future "\ - "versions of the firmware" - -DEPRECATED(2D_KEYMAP_ARRAY) -extern kaleidoscope::internal::Keymaps2DInterface keymaps; diff --git a/src/kaleidoscope/layers.h b/src/kaleidoscope/layers.h index efdc159f..3236cff8 100644 --- a/src/kaleidoscope/layers.h +++ b/src/kaleidoscope/layers.h @@ -32,11 +32,6 @@ uint8_t layer_count __NL__ \ = sizeof(keymaps_linear) / sizeof(*keymaps_linear); __NL__ \ __NL__ \ - /* This deprecated compatibility wrapper is removed by the linker if __NL__ \ - it is not accessed nowhere. __NL__ \ - */ __NL__ \ - kaleidoscope::internal::Keymaps2DInterface keymaps; __NL__ \ - __NL__ \ _INIT_SKETCH_EXPLORATION __NL__ \ _INIT_HID_GETSHORTNAME