diff --git a/keyboards/betalupi_ergodox/extra_mappings.h b/keyboards/betalupi_ergodox/extra_mappings.h index d1d5e81..1026ff1 100644 --- a/keyboards/betalupi_ergodox/extra_mappings.h +++ b/keyboards/betalupi_ergodox/extra_mappings.h @@ -3,4 +3,14 @@ #include extern const int8_t fft_array_to_col[4][14]; -extern const int8_t fft_col_to_array[10][5]; \ No newline at end of file +extern const int8_t fft_col_to_array[10][5]; + +extern uint8_t layer_layouts[]; + +// Language keymap ids for layers. +// See layers/definitions/symbols.h. +enum layer_layout_ids { + LAYOUT_NULL, // This layer doesn't care what keymap the OS is using + LAYOUT_EN, // This layer is designed for the standard keymapping + LAYOUT_RU, +}; diff --git a/keyboards/betalupi_ergodox/features/spellcheck.c b/keyboards/betalupi_ergodox/features/spellcheck.c index eef4125..ce50bc5 100644 --- a/keyboards/betalupi_ergodox/features/spellcheck.c +++ b/keyboards/betalupi_ergodox/features/spellcheck.c @@ -5,6 +5,7 @@ #include "features/spellcheck.h" #include "features/beta_rawhid.h" +#include "extra_mappings.h" uint8_t spellcheck_buffer[SPELLCHECK_BUFFER_MAX] = {0}; uint8_t spellcheck_buffer_size = 0; @@ -137,7 +138,19 @@ bool process_spellcheck(uint16_t keycode, keyrecord_t* record) { return true; } - uint8_t keycode_type = keycode_type_en(mods, keycode); + uint8_t keycode_type; + switch (layer_layouts[biton32(layer_state)]) { + case LAYOUT_EN: + keycode_type = keycode_type_en(mods, keycode); + break; + case LAYOUT_RU: + keycode_type = keycode_type_ru(mods, keycode); + break; + default: + keycode_type = SPELLCHECK_NEITHER; + break; + } + switch(keycode_type) { // No modifications are needed if this is a regular word character @@ -148,6 +161,7 @@ bool process_spellcheck(uint16_t keycode, keyrecord_t* record) { memmove(spellcheck_buffer, spellcheck_buffer + 1, SPELLCHECK_BUFFER_MAX - 1); spellcheck_buffer_size = SPELLCHECK_BUFFER_MAX - 1; } + spellcheck_buffer[spellcheck_buffer_size++] = (uint8_t) keycode; return true; @@ -165,8 +179,6 @@ bool process_spellcheck(uint16_t keycode, keyrecord_t* record) { } - - return true; } diff --git a/keyboards/betalupi_ergodox/keymaps/default/keymap.h b/keyboards/betalupi_ergodox/keymaps/default/keymap.h index 0a3d5cc..9ad7505 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/keymap.h +++ b/keyboards/betalupi_ergodox/keymaps/default/keymap.h @@ -22,14 +22,6 @@ extern rgb_config_t rgb_matrix_config; #define LC_RU_G LC_HSV(153, 255, 153) #define LC_RU_K LC_HSV( 0, 255, 145) -// Language keymap ids for layers. -// See layers/definitions/symbols.h. -enum layer_layout_ids { - LAYOUT_NULL, // This layer doesn't care what keymap the OS is using - LAYOUT_EN, // This layer is designed for the standard keymapping - LAYOUT_RU, -}; - // Define custom keys // (Must be done before keymaps are loaded) enum custom_keycodes { diff --git a/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/symbols.h b/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/symbols.h index c4d2574..6fcbf16 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/symbols.h +++ b/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/symbols.h @@ -14,7 +14,7 @@ // What OS keyboard layout this layer is designed for. -// See keymap.h for possible values. +// See extra_mappings.h for possible values. // // Every layer must have this section. #ifdef BETA_LAYER_LAYOUTS diff --git a/keyboards/betalupi_ergodox/keymaps/default/layers/layers.c b/keyboards/betalupi_ergodox/keymaps/default/layers/layers.c index 4a6040e..e5fff1b 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/layers/layers.c +++ b/keyboards/betalupi_ergodox/keymaps/default/layers/layers.c @@ -1,5 +1,5 @@ #include "layers.h" - +#include "extra_mappings.h" // Create keymap array #define BETA_LAYER_KEYS