I think I have done fn actions before.  It would be something like this in the keymap.c?
/*
 * Fn action definition
 */
static const uint16_t PROGMEM fn_actions[] = {
    ACTION_FUNCTION(TEENSY_KEY),                    // FN0 - Teensy key
    ACTION_LAYER_MOMENTARY(1),                      // FN1 - switch to Layer1
    ACTION_LAYER_SET(2, ON_PRESS),                  // FN2 - set Layer2
    ACTION_LAYER_TOGGLE(3),                         // FN3 - toggle Layer3 aka Numpad layer
    ACTION_LAYER_SET(0, ON_PRESS),                  // FN4 - set Layer0
    ACTION_LAYER_TOGGLE(1),                         // FN5 - toggle Layer1 aka F Keys
    ACTION_MACRO(SHIFT_ALT),			    // FN6 - Language Change
};
Would the macro definition also be in the keymap?