# Tap Dance Layers This feature creates a key that changes the current layer via tap dance. By default, this assumes that you have the following layers defined: - `_ADJUST` - `_LOWER` - `_RAISE` - `_MOUSE` And sets up the following tap dance: | Count | Action | Layer | | ----- | ------ | --------- | | 1x | hold | `_ADJUST` | | 1x | tap | `_MOUSE` | | 2x | tap | `_LOWER` | | 3x | tap | `_RAISE` | | 4x | tap | `_ADJUST` | ## Usage > NOTE: If you use other tap-dance functions, you may require additonal setup. 1. Copy `features/dancelayers.{c,h}` into your keymap or userspace directory. 2. Add the following to your `rules.mk` ``` TAP_DANCE_ENABLE = yes SRC += ./features/dancelayers.c ``` 3. Add the following to your `keymap.c`: ``` #ifdef TAP_DANCE_ENABLE # include "features/dancelayers.h" # define TD_LAYR TD(TD_LAYERS) #else # define TD_LAYR XXXXXXX #endif ``` 4. Add `TD_LYR` to your keymap. ## Functions and Enumerations The following functions are available for use: - `cur_dance` The following tap dance enumerations are defined: - `TD_1X_HOLD` - `TD_1X_TAP` - `TD_2X_TAP` - `TD_3X_TAP` - `TD_4X_TAP` ## Overriding the Defaults If you want to define different layers to tap dance actions, you'll need to define two additional functions in your `keymap.c`: - `td_lyr_finished` - `td_lyr_reset` Both of these functions are necessary and require a certain pattern for each layer. "Tap" actions are handled in `*_finished` while "hold" actions are resolved in `*_finished` and `*_reset`. See the implementation in `dancelayers.c` for an example.