Fix linking error with custom names.

This commit is contained in:
Pascal Getreuer 2025-01-21 16:33:30 -08:00
parent bee18247f5
commit 45f573f335
4 changed files with 11 additions and 7 deletions

View File

@ -78,7 +78,8 @@ Many common QMK keycodes are recognized by `get_keycode_string()`, but not all.
Optionally, `keycode_string_names_user` may be defined to add names for additional keycodes. For example, supposing keymap.c defines `MYMACRO1` and `MYMACRO2` as custom keycodes, the following adds their names: Optionally, `keycode_string_names_user` may be defined to add names for additional keycodes. For example, supposing keymap.c defines `MYMACRO1` and `MYMACRO2` as custom keycodes, the following adds their names:
```c ```c
const keycode_string_name_t keycode_string_names_user[] = { const keycode_string_name_t *keycode_string_names_user =
(keycode_string_name_t []){
KEYCODE_STRING_NAME(MYMACRO1), KEYCODE_STRING_NAME(MYMACRO1),
KEYCODE_STRING_NAME(MYMACRO2), KEYCODE_STRING_NAME(MYMACRO2),
KEYCODE_STRING_NAMES_END // End of table sentinel. KEYCODE_STRING_NAMES_END // End of table sentinel.

View File

@ -92,10 +92,13 @@ static const keycode_string_name_t keycode_names[] = {
KEYCODE_STRING_NAMES_END KEYCODE_STRING_NAMES_END
}; };
// clang-format on // clang-format on
__attribute__((weak)) const keycode_string_name_t empty_table[] = {KEYCODE_STRING_NAMES_END};
/** Users can override this to define names of additional keycodes. */ /** Users can override this to define names of additional keycodes. */
__attribute__((weak)) const keycode_string_name_t keycode_string_names_user[] = {KEYCODE_STRING_NAMES_END}; __attribute__((weak)) const keycode_string_name_t* keycode_string_names_user = empty_table;
/** Keyboard vendors can override this to define names of additional keycodes. */ /** Keyboard vendors can override this to define names of additional keycodes. */
__attribute__((weak)) const keycode_string_name_t keycode_string_names_kb[] = {KEYCODE_STRING_NAMES_END}; __attribute__((weak)) const keycode_string_name_t* keycode_string_names_kb = empty_table;
/** Names of the 4 mods on each hand. */ /** Names of the 4 mods on each hand. */
static const char* mod_names[4] = {PSTR("CTL"), PSTR("SFT"), PSTR("ALT"), PSTR("GUI")}; static const char* mod_names[4] = {PSTR("CTL"), PSTR("SFT"), PSTR("ALT"), PSTR("GUI")};
/** Internal buffer for holding a stringified keycode. */ /** Internal buffer for holding a stringified keycode. */

View File

@ -90,9 +90,9 @@ typedef struct {
* The above defines names for `MYMACRO1` and `MYMACRO2`, and overrides * The above defines names for `MYMACRO1` and `MYMACRO2`, and overrides
* `KC_EXLM` to format as "KC_EXLM" instead of the default "S(KC_1)". * `KC_EXLM` to format as "KC_EXLM" instead of the default "S(KC_1)".
*/ */
extern const keycode_string_name_t keycode_string_names_user[]; extern const keycode_string_name_t* keycode_string_names_user;
/** Same as `keycode_string_names_user`, but for use at the keyboard level. */ /** Same as `keycode_string_names_user`, but for use at the keyboard level. */
extern const keycode_string_name_t keycode_string_names_kb[]; extern const keycode_string_name_t* keycode_string_names_kb;
/** Helper to define a keycode_string_name_t. */ /** Helper to define a keycode_string_name_t. */
# define KEYCODE_STRING_NAME(kc) \ # define KEYCODE_STRING_NAME(kc) \

View File

@ -22,11 +22,11 @@ enum {
}; };
// clang-format off // clang-format off
extern "C" const keycode_string_name_t keycode_string_names_kb[] = { extern "C" const keycode_string_name_t *keycode_string_names_kb = (keycode_string_name_t []){
KEYCODE_STRING_NAME(MYMACRO1), KEYCODE_STRING_NAME(MYMACRO1),
KEYCODE_STRING_NAMES_END // End of table sentinel. KEYCODE_STRING_NAMES_END // End of table sentinel.
}; };
extern "C" const keycode_string_name_t keycode_string_names_user[] = { extern "C" const keycode_string_name_t *keycode_string_names_user = (keycode_string_name_t []){
KEYCODE_STRING_NAME(MYMACRO2), KEYCODE_STRING_NAME(MYMACRO2),
KEYCODE_STRING_NAME(KC_EXLM), KEYCODE_STRING_NAME(KC_EXLM),
KEYCODE_STRING_NAMES_END // End of table sentinel. KEYCODE_STRING_NAMES_END // End of table sentinel.