85 lines · 2.1 KB · JavaScript
RawDownload
function elem(name){	return document.getElementById(name);} function addevent(elem, evt, handler){	elem.addEventListener(evt, handler, false);} /* this should not be necessary, but *//* addevent does not seem to let me *//* keep the F3 key event from propagating *//* on Firefox 20. */function setevent(elem, evt, handler){	elem["on" + evt] = handler;} var basetime;var cons;var mouse;var settings;var ninep; window.onload = function(){	var wsurl = Socket.wsurl(window.location.toString());	//var wsurl = Socket.wsurl("http://wd.9atom.org/9wd.html");	var webdraw = elem("webdraw");	var cover = elem("cover"); 	basetime = Date.now();	cons = new Cons();	mouse = new Mouse(elem("cursor"));	settings = new Settings();	ninep = new NineP(wsurl, Draw9p, cons); 	/* XXX Draw9p should be instantiated and have a constructor. */	Draw9p.rootcanvas = webdraw;	Draw9p.rootsz = {		w: webdraw.width,		h: webdraw.height	};	Draw9p.imgnames["webdraw"] = Draw9p.RootImage();	Draw9p.label = "webdraw".toUTF8Array(); 	setevent(cover, "mousedown", function(e){		return mouse.handlebutton(e, 1);	});	setevent(cover, "mouseup", function(e){		return mouse.handlebutton(e, 0);	});	setevent(cover, "mousemove", function(e){		return mouse.handlemove(e);	});	setevent(window, "keydown", function(e){		return cons.handlekeys(e, cons.kbd.down);	});	setevent(window, "keypress", function(e){		return cons.handlekeys(e, cons.kbd.press);	});	setevent(window, "keyup", function(e){		return cons.handlekeys(e, cons.kbd.up);	});	setevent(cover, "contextmenu", function(e){		e.preventDefault();		e.stopPropagation();		return false;	});	setevent(cover, "click", function(e){		e.preventDefault();		e.stopPropagation();		if(			document.pointerLockElement !== cover &&			document.mozPointerLockElement !== cover &&			document.webkitPointerLockElement !== cover		){			cover.requestPointerLock =				cover.requestPointerLock ||				cover.mozRequestPointerLock ||				cover.webkitRequestPointerLock;			cover.requestPointerLock();			return false;		}else{			return false;		}	});}