9webdraw: trap tab and backspace in keydown rather than keypress. This stops Chrome from firing the default action. Also call preventDefault()/stopPropagation() on mouse-fkeys. . Reference: /n/atom/patch/applied/9wd-kbd-trap Date: Mon May 19 20:55:59 CES 2014 Signed-off-by: root@davidrhoskin.com --- /usr/web/9wd/js/cons.js Mon May 19 20:53:21 2014 +++ /usr/web/9wd/js/cons.js Mon May 19 20:53:23 2014 @@ -10,11 +10,11 @@ var compose = new Compose(this); this.log = function(s){ - if(this.debug){ + //if(this.debug){ var span = document.createElement("span"); span.textContent = s; this.elem.appendChild(span); - } + //} } this.write = function(s){ @@ -30,6 +30,8 @@ this.handlekeys = function(e, dir){ if(!mouse.handlefkeys(e, dir == cons.kbd.down? mouse.states.down : mouse.states.up)){ + e.preventDefault(); + e.stopPropagation(); return 0; } @@ -57,6 +59,12 @@ e.stopPropagation(); return 0; } + + if(dir == cons.kbd.up){ + e.preventDefault(); + e.stopPropagation(); + return 0; + } return 0; } @@ -65,6 +73,10 @@ switch(e.which){ case 0: break; + case 8: + return "\b"; + case 9: + return "\t"; case 13: return "\n"; case 18: --- /usr/web/9wd/js/init.js Mon May 19 20:53:26 2014 +++ /usr/web/9wd/js/init.js Mon May 19 20:53:28 2014 @@ -3,7 +3,7 @@ } function addevent(elem, evt, handler){ - elem.addEventListener(evt, handler, true); + elem.addEventListener(evt, handler, false); } /* this should not be necessary, but */ @@ -22,6 +22,7 @@ window.onload = function(){ var wsurl = Socket.wsurl(window.location.toString()); + //var wsurl = Socket.wsurl("http://wd.9atom.org/9wd.html"); var webdraw = elem("webdraw"); basetime = Date.now(); @@ -39,13 +40,13 @@ Draw9p.imgnames["webdraw"] = Draw9p.RootImage(); Draw9p.label = "webdraw".toUTF8Array(); - addevent(webdraw, "mousedown", function(e){ + setevent(webdraw, "mousedown", function(e){ return mouse.handlebutton(e, 1); }); - addevent(webdraw, "mouseup", function(e){ + setevent(webdraw, "mouseup", function(e){ return mouse.handlebutton(e, 0); }); - addevent(webdraw, "mousemove", function(e){ + setevent(webdraw, "mousemove", function(e){ return mouse.handlemove(e); }); setevent(window, "keydown", function(e){