+/* id for user defined functions */
+enum function_id {
+ LSHIFT_LPAREN,
+ RSHIFT_RPAREN,
+};
+
+/*
+ * Fn action definition
+ */
+static const uint16_t PROGMEM fn_actions[] = {
+ ACTION_LAYER_RETURN_DEFAULT, // FN0
+ ACTION_LAYER_SET(1), // FN1
+ ACTION_LAYER_SET_TAP_KEY(2, KC_SLASH), // FN2
+ ACTION_LAYER_SET_TAP_KEY(3, KC_SCLN), // FN3
+ ACTION_LAYER_SET(3), // FN4
+ ACTION_LAYER_SET_TAP_KEY(5, KC_SPC), // FN5
+ ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // FN6
+ ACTION_RMOD_TAP_KEY(KC_RCTL, KC_ENT), // FN7
+ ACTION_LMOD_ONESHOT(KC_LSFT), // FN8 Oneshot Shift
+ ACTION_LAYER_SET_ON_RELEASED_TAP_TOGGLE(1), // FN9
+ ACTION_LAYER_BIT_TAP_KEY(1, KC_GRV), // FN10
+ //ACTION_LAYER_BIT(1), // FN10
+ //ACTION_LAYER_BIT_TAP_TOGGLE(1), // FN10
+ ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // FN11
+ ACTION_FUNCTION_TAP(RSHIFT_RPAREN), // FN12
+};
+
+/*
+ * user defined action function
+ */
+void keymap_call_function(keyrecord_t *record, uint8_t id)
+{
+ keyevent_t event = record->event;
+ uint8_t tap_count = record->tap_count;
+
+ debug("action_call_function: ");
+ if (event.pressed) debug("pressed"); else debug("released");
+ debug(" id: "); debug_hex(id);
+ debug(" tap_count: "); debug_dec(tap_count);
+ debug("\n");