mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-25 01:47:10 +06:00
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)
|
CONFIG_H += $(KEYMAP_H)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\"
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC += \
|
SRC += \
|
||||||
$(KEYBOARD_SRC) \
|
$(KEYBOARD_SRC) \
|
||||||
$(KEYMAP_C) \
|
$(QUANTUM_DIR)/keymap_introspection.c \
|
||||||
$(QUANTUM_SRC) \
|
$(QUANTUM_SRC) \
|
||||||
$(QUANTUM_DIR)/main.c \
|
$(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
|
// Ensure we have a forward declaration for the encoder map
|
||||||
# include "encoder.h"
|
# include "encoder.h"
|
||||||
#endif
|
#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