   }
 
   release_keys();
+  check_ignition_key();
 }
 
 void handle_frame() {
-  if (frame.get_byte(0) != SWM_ID)
+  byte id = frame.get_byte(0);
+
+  if (id == HEARTBEAT_ID)
+    lastHeartbeat = millis();
+  
+  if (id != SWM_ID)
     return;
 
   // skip zero values 20 0 0 0 0 FF

    mouseSpeed = MOUSE_BASE_SPEED;
  }
}

byte b, i, n;
LinFrame frame;

unsigned long lastHeartbeat, lastBackDown, lastEnterDown, lastMouseDown;
int mouseSpeed = MOUSE_BASE_SPEED;

void setup() {
