+
+#ifndef NO_LEGACY_KEYMAP_SUPPORT
+/* legacy support with weak reference */
+__attribute__ ((weak))
+action_t action_for_key(uint8_t layer, key_t key)
+{
+ /* convert from legacy keycode to action */
+ uint8_t keycode = keymap_get_keycode(layer, key.row, key.col);
+ action_t action;
+ switch (keycode) {
+ case KC_FN0 ... KC_FN31:
+ {
+ uint8_t layer = keymap_fn_layer(FN_INDEX(keycode));
+ uint8_t key = keymap_fn_keycode(FN_INDEX(keycode));
+ if (key) {
+ action.code = ACTION_LAYER_SET_TAP_KEY(layer, key);
+ } else {
+ action.code = ACTION_LAYER_SET_MOMENTARY(layer);
+ }
+ }
+ return action;
+ default:
+ return keymap_keycode_to_action(keycode);
+ }
+}