Hi,

I wanted my KeyNav function to control when the events were stopped. So I pointed the defaultEventAction to EventObject method getKey. This means when enter is pressed it doesn't stop the browser events, you decide when to stop the event in your own custom handler.

Not sure if this will help anyone but it sure has been bugging me for a while.
Below code is used for 'entering' over a form using enter, obviously text area's are the exception.

Code:
      var map = new Ext.KeyNav(this.getEl(),{
         'enter': function(e){
            var el = e.target;
            if(!el.form || el.type=="textarea"){
               return;
            }
            e.stopEvent();
            var l, i, f, j;
            for(i = l = (f = el.form.elements).length; f[--i] != el;);
            for(j = i; (j = (j + 1) % l) != i && (!f[j].type || f[j].disabled || f[j].readOnly || f[j].type.toLowerCase() == "hidden"););
            e.preventDefault(), j != i && f[j].focus();
            if(el.type !="textarea" && j==0 && this.getXType() != 'LoginForm'){
               this.buttons[0].focus();
            }
         },
         scope:this,
         defaultEventAction:'getKey'
      });