           }
           else if (modMethod(PressTimer)[i] == 0)
           {
-            modMethod(PressTimer)[i] = -1; // signal that the key has fired
-            PressKey(modMethod(GetKeyVal)(i, modMethod(PressCount)[i] - 1), modMethod(GetKeyType)(i, modMethod(PressCount)[i] - 1));
+            modMethod(FireTapDance)(i);
             if (!modMethod(KeyIsDown)[i])
             {
               modMethod(KeyUp)(i, 19);

  {
    if (type == 19)
    {
      // sends the macro sequence with id = val
      if (modMethod(PressCount)[val] > modMethod(MAX_KEYS))
      {
        // do nothing
      }
      else
      {

        modMethod(PressCount)[val]++;
        modMethod(PressTimer)[val] = modMethod(GetTimeout)(val) * modMethod(TIMER_MULTIPLIER);
        modMethod(KeyIsDown)[val] = true;
      }

    }
  }
}

  {
    if (type == 19)
    {
      // if key has been fired
      if (modMethod(PressTimer)[val] < 0)
      {
        byte count = modMethod(PressCount)[val] - 1;
        char tdVal = modMethod(GetKeyVal)(val, count);
        byte tdType = modMethod(GetKeyType)(val, count);

        ReleaseKey(tdVal, tdType);
        modMethod(PressCount)[val] = 0;
        modMethod(PressTimer)[val] = 0;
      }
      modMethod(KeyIsDown)[val] = false;
    }
  }
}
