DEFINE_GSUBR ("get-timer", 1, 0, 0, irr_getTimer);
     DEFINE_GSUBR ("is-window-active?", 1, 0, 0, irr_isWindowActive);
     DEFINE_GSUBR ("run", 1, 0, 0, irr_run);
+    DEFINE_GSUBR ("set-event-receiver!", 2, 0, 0, irr_setEventReceiver);
     DEFINE_GSUBR ("set-resizable!", 2, 0, 0, irr_setResizable);
     DEFINE_GSUBR ("set-window-caption!", 2, 0, 0, irr_setWindowCaption);
     DEFINE_GSUBR ("yield", 1, 0, 0, irr_yield);
     return scm_from_bool (device->run ());
   }
 
+  SCM
+  irr_setEventReceiver (SCM wrapped_device,
+                        SCM receiver)
+  {
+    irr::IrrlichtDevice* device = unwrap_device (wrapped_device);
+    device->setEventReceiver (unwrap_event_receiver (receiver));
+    return SCM_UNSPECIFIED;
+  }
+
   SCM
   irr_setResizable (SCM wrapped_device,
                     SCM resize)