Add keymap wrappers for introspection into the keymap. (#17229)
* Introspection handlers for keymaps. * Renaming.
This commit is contained in:
parent
af84772a5f
commit
08c556b78b
@ -390,10 +390,12 @@ ifneq ("$(KEYMAP_H)","")
|
||||
CONFIG_H += $(KEYMAP_H)
|
||||
endif
|
||||
|
||||
OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\"
|
||||
|
||||
# project specific files
|
||||
SRC += \
|
||||
$(KEYBOARD_SRC) \
|
||||
$(KEYMAP_C) \
|
||||
$(QUANTUM_DIR)/keymap_introspection.c \
|
||||
$(QUANTUM_SRC) \
|
||||
$(QUANTUM_DIR)/main.c \
|
||||
|
||||
|
@ -55,3 +55,5 @@ extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
|
||||
// Ensure we have a forward declaration for the encoder map
|
||||
# include "encoder.h"
|
||||
#endif
|
||||
|
||||
#include "keymap_introspection.h"
|
||||
|
25
quantum/keymap_introspection.c
Normal file
25
quantum/keymap_introspection.c
Normal file
@ -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)
|
15
quantum/keymap_introspection.h
Normal file
15
quantum/keymap_introspection.h
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// Get the number of layers defined in the keymap
|
||||
uint8_t keymap_layer_count(void);
|
||||
|
||||
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
|
||||
|
||||
// Get the number of layers defined in the encoder map
|
||||
uint8_t encodermap_layer_count(void);
|
||||
|
||||
#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
|
Loading…
Reference in New Issue
Block a user