qmk_firmware/users/muppetjones/readme/dancelayers.md

1.6 KiB

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.