 +/* end of SDL_orbitalevents_c.h ... */
 diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c
 --- source/src/video/orbital/SDL_orbitalmouse.c	1969-12-31 17:00:00.000000000 -0700
-+++ source-new/src/video/orbital/SDL_orbitalmouse.c	2019-08-12 13:31:25.606869756 -0600
-@@ -0,0 +1,61 @@
++++ source-new/src/video/orbital/SDL_orbitalmouse.c	2019-08-12 14:04:19.079802985 -0600
+@@ -0,0 +1,67 @@
 +/*
 +    SDL - Simple DirectMedia Layer
 +    Copyright (C) 1997-2012 Sam Lantinga

+            SDL_SetError("Couldn't create window for requested mode");
+            return(NULL);
+        }
+    }
+
+    fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp);

+static int last_x = 0;
+static int last_y = 0;
+
+void ORBITAL_CheckMouseMode(_THIS)
+{
+    /* If the mouse is hidden and input is grabbed, we use relative mode */
+    bool mouse_relative =
+        !(SDL_cursorstate & CURSOR_VISIBLE) &&
+        (this->input_grab != SDL_GRAB_OFF);
+    printf("ORBITAL_CheckMouseMode = %d\n", mouse_relative);
+    if (mouse_relative != this->hidden->mouse_relative) {
+        this->hidden->mouse_relative = mouse_relative;
+        if (this->hidden->window) {
+            orb_window_set_mouse_relative(this->hidden->window, mouse_relative);
+        }
+    }
+}
+
+SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode) {
+    bool mouse_grab = mode != SDL_GRAB_OFF;
+    printf("ORBITAL_GrabInput(%d) = %d\n", mode, mouse_grab);
+    if (mouse_grab != this->hidden->mouse_grab) {
+        this->hidden->mouse_grab = mouse_grab;
+        if (this->hidden->window) {
+            orb_window_set_mouse_grab(this->hidden->window, mouse_grab);
+        }
+    }
+    return (mode);
+}
+
+void ORBITAL_PumpEvents(_THIS)
+{
+    SDL_keysym keysym;
+
+    if (!this->hidden->window) {
+        return;
+    }
+
+    void* event_iter = orb_window_events(this->hidden->window);
+    OrbEventOption oeo = orb_events_next(event_iter);
+    while (oeo.tag != OrbEventOption_None) {
+        found_event = true;
+
+        switch (oeo.tag) {
+            case OrbEventOption_Key:
+                keysym.unicode = oeo.key.character;
