Hi,

last week, something very interesting landed to emscripten incoming: a new
set of C callback APIs for receiving various HTML5 events. See here
https://github.com/kripken/emscripten/blob/incoming/system/include/emscripten/html5.h

The task that it accomplishes is somewhat simple - the code provides a C
interface for accessing different HTML5 apis. Naturally not all the
different HTML5 specs are there, but the scope is placed on those events
that native codebases typically need, which include input events (keyboard,
mouse, gamepad, touch), "application lifecycle events" (visible, hidden,
unloaded), windowing events (resize, scroll, fullscreen, pointerlock,
webglcontext), device events (motion, orientation, acceleration) and a few
others.

The idea for these is to enable a quick 1:1 access to the most common web
apis that are provided in HTML5, without requiring that users need to learn
the low-level C <-> JS interop machinery first, or how to write and
integrate.js libraries to projects. As a quick example, reading keyboard
events through this library would look like this:

#include <emscripten/html5.h>

EM_BOOL key_callback(int eventType, const EmscriptenKeyboardEvent *e, void
*userData)
{
  printf("You pressed key %lu\n", e->which)
}

int main()
{
  emscripten_set_keypress_callback(0, 0, 1, key_callback);

  // Proceed to setting up game loop with emscripten_set_main_loop(...);
}

For more code that uses these apis, refer to the unit tests for now at
https://github.com/kripken/emscripten/blob/incoming/tests/test_html5.c

Using html5 directly has the advantage that developers can directly refer
to the HTML5 specifications for documentation. For example, the
documentation for keyboard events can be found here:

https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#keys

The events library has so far been tested on Firefox, Chrome and Internet
Explorer 11. Let us know if e.g. Safari or mobile browsers have any issues,
so that we can hide the cross-browser quirks inside the library.

   Jukka

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to