   }
 }
 
+void modMethod(PrePress)(char val, byte type)
+{
+  if (IS_MASTER)
+  {
+    for (byte i = 0; i < modMethod(MAX_INDEX); i++)
+    {
+      if ((type != 19 || val != i) && modMethod(PressCount)[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));
+        if (!modMethod(KeyIsDown)[i])
+        {
+          modMethod(KeyUp)(i, 19);
+        }
+      }
+    }
+  }
+}
+
 void modMethod(KeyUp)(char val, byte type)
 {
   // ran when a key is pressed up

const byte modMethod(MAX_KEYS) = 3;
const byte modMethod(PADDING) = 2;

uint16_t modMethod(PressTimer)[modMethod(MAX_INDEX)];
byte modMethod(PressCount)[modMethod(MAX_INDEX)];
boolean modMethod(KeyIsDown)[modMethod(MAX_INDEX)];


      // sends the macro sequence with id = val
      ReleaseKey(modMethod(GetKeyVal)(val, modMethod(PressCount)[val] - 1), modMethod(GetKeyType)(val, modMethod(PressCount)[val] - 1));

      // if key has already fired
      if (modMethod(PressTimer)[val] < 0)
      {
        modMethod(PressCount)[val] = 0;
        modMethod(PressTimer)[val] = 0;
      }
