compositor: Setup for keyboard grabs.
diff --git a/src/compositor.c b/src/compositor.c
index e762283..45a52d4 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1436,10 +1436,13 @@
 	struct weston_compositor *compositor = wd->compositor;
 	uint32_t *k, *end;
 
-	if (state)
+	if (state) {
 		weston_compositor_idle_inhibit(compositor);
-	else
+		device->grab_key = key;
+		device->grab_time = time;
+	} else {
 		weston_compositor_idle_release(compositor);
+	}
 
 	weston_compositor_run_binding(compositor, wd, time, key, 0, state);
 
@@ -1455,9 +1458,8 @@
 		*k = key;
 	}
 
-	if (device->keyboard_focus_resource)
-		wl_resource_post_event(device->keyboard_focus_resource,
-				       WL_INPUT_DEVICE_KEY, time, key, state);
+	device->keyboard_grab->interface->key(device->keyboard_grab,
+					      time, key, state);
 }
 
 WL_EXPORT void