From 08c556b78b9dc672a2aa2388bbd3fdf408e3ce98 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 5 Jun 2022 10:26:02 +1000 Subject: Add keymap wrappers for introspection into the keymap. (#17229) * Introspection handlers for keymaps. * Renaming. --- quantum/keymap_introspection.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 quantum/keymap_introspection.c (limited to 'quantum/keymap_introspection.c') diff --git a/quantum/keymap_introspection.c b/quantum/keymap_introspection.c new file mode 100644 index 0000000000..9628b41eef --- /dev/null +++ b/quantum/keymap_introspection.c @@ -0,0 +1,25 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +// Pull the actual keymap code so that we can inspect stuff from it +#include KEYMAP_C + +#include "keymap_introspection.h" + +#define NUM_KEYMAP_LAYERS ((uint8_t)(sizeof(keymaps) / ((MATRIX_ROWS) * (MATRIX_COLS) * sizeof(uint16_t)))) + +uint8_t keymap_layer_count(void) { + return NUM_KEYMAP_LAYERS; +} + +#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) + +# define NUM_ENCODERMAP_LAYERS ((uint8_t)(sizeof(encoder_map) / ((NUM_ENCODERS) * (2) * sizeof(uint16_t)))) + +uint8_t encodermap_layer_count(void) { + return NUM_ENCODERMAP_LAYERS; +} + +_Static_assert(NUM_KEYMAP_LAYERS == NUM_ENCODERMAP_LAYERS, "Number of encoder_map layers doesn't match the number of keymap layers"); + +#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) -- cgit v1.2.3 From 0e5d67145a649480fd49a72712997feb6303a471 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 5 Jul 2022 08:58:35 +1000 Subject: Allow for `keymaps` array to be implemented in a file other than `$(KEYMAP_C)` (#17559) --- quantum/keymap_introspection.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'quantum/keymap_introspection.c') diff --git a/quantum/keymap_introspection.c b/quantum/keymap_introspection.c index 9628b41eef..7a96f802ef 100644 --- a/quantum/keymap_introspection.c +++ b/quantum/keymap_introspection.c @@ -4,6 +4,11 @@ // Pull the actual keymap code so that we can inspect stuff from it #include KEYMAP_C +// Allow for keymap or userspace rules.mk to specify an alternate location for the keymap array +#ifdef INTROSPECTION_KEYMAP_C +# include INTROSPECTION_KEYMAP_C +#endif // INTROSPECTION_KEYMAP_C + #include "keymap_introspection.h" #define NUM_KEYMAP_LAYERS ((uint8_t)(sizeof(keymaps) / ((MATRIX_ROWS) * (MATRIX_COLS) * sizeof(uint16_t)))) -- cgit v1.2.3 From efdd4f4d50e09e0f71d09333d15acf197406a09c Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 27 Aug 2022 23:13:44 -0700 Subject: Clean-up of `#define _ADJUST 16` instances (#18182) * enum layer_names: 40percentclub/nori default keymap * enum layer_names: ergotravel default keymap * enum layer_names: handwired/atreus50 default keymap * enum layer_names: handwired/ortho5x13 default keymap * enum layer_names: keebio/levinson default keymap * enum layer_names: keebio/nyquist default keymap * enum layer_names: keebio/rorschach default keymap * enum layer_names: keebio/viterbi default keymap * enum layer_names: keebio/wavelet default keymap * enum layer_names: lets_split default keymap * enum layer_names: maple_computing/launchpad reference keymaps Update `default` and `default_rgb` keymaps. * enum layer_names: maple_computing/minidox default keymap * enum layer_names: miniaxe reference keymaps Update `default` and `underglow` keymaps. * enum layer_names: omkbd/ergodash/mini default keymap * enum layer_names: omkbd/ergodash/rev1 default keymap * enum layer_names: orthodox default keymap * enum layer_names: unikeyboard/divergetm2 default keymap * enum layer_names: woodkeys/scarletbandana default keymap * add _Static_assert to keymap_introspection.c --- quantum/keymap_introspection.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'quantum/keymap_introspection.c') diff --git a/quantum/keymap_introspection.c b/quantum/keymap_introspection.c index 7a96f802ef..179b5eb037 100644 --- a/quantum/keymap_introspection.c +++ b/quantum/keymap_introspection.c @@ -17,6 +17,8 @@ uint8_t keymap_layer_count(void) { return NUM_KEYMAP_LAYERS; } +_Static_assert(NUM_KEYMAP_LAYERS <= MAX_LAYER, "Number of keymap layers exceeds maximum set by LAYER_STATE_(8|16|32)BIT"); + #if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) # define NUM_ENCODERMAP_LAYERS ((uint8_t)(sizeof(encoder_map) / ((NUM_ENCODERS) * (2) * sizeof(uint16_t)))) -- cgit v1.2.3