+ UserEvent event;
+
+ SDL_memset(&event, 0, sizeof(event));
+
+ event.type = EVENT_USER;
+ event.code = code;
+ event.value1 = value1;
+ event.value2 = value2;
+
+ SDL_PushEvent((SDL_Event *)&event);
+}
+
+void PushDropEvent(char *file)
+{
+ SDL_DropEvent event;
+
+ SDL_memset(&event, 0, sizeof(event));
+
+ event.type = SDL_DROPBEGIN;
+ event.file = NULL;
+
+ SDL_PushEvent((SDL_Event *)&event);
+
+ event.type = SDL_DROPFILE;
+ event.file = getStringCopy(file);
+
+ SDL_PushEvent((SDL_Event *)&event);
+
+ event.type = SDL_DROPCOMPLETE;
+ event.file = NULL;
+
+ SDL_PushEvent((SDL_Event *)&event);
+}
+
+boolean PendingEscapeKeyEvent(void)
+{
+ if (PendingEvent())
+ {
+ Event event;
+
+ // check if any key press event is pending
+ if (SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYDOWN, SDL_KEYDOWN) != 1)
+ return FALSE;
+
+ // check if pressed key is "Escape" key
+ if (event.key.keysym.sym == KSYM_Escape)
+ return TRUE;
+ }