code: function(ctx) {
  		// TODO: return promise?
  		var res,
  			event = ctx.originalEvent,
  			node = ctx.node,
  			tree = ctx.tree,
  			opts = ctx.options,
  			handled = true,
  			activate = !(event.ctrlKey || !opts.autoActivate ),
  			KC = $.ui.keyCode;
  
  //		node.debug("ftnode.nodeKeydown(" + event.type + "): ftnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
  
  		// Set focus to first node, if no other node has the focus yet
  		if( !node ){
  			this.rootNode.getFirstChild().setFocus();
  			node = ctx.node = this.focusNode;
  			node.debug("Keydown force focus on first node");
  		}
  
  		switch( event.which ) {
  			// charCodes:
  			case KC.NUMPAD_ADD: //107: // '+'
  			case 187: // '+' @ Chrome, Safari
  				tree.nodeSetExpanded(ctx, true);
  				break;
  			case KC.NUMPAD_SUBTRACT: // '-'
  			case 189: // '-' @ Chrome, Safari
  				tree.nodeSetExpanded(ctx, false);
  				break;
  			case KC.SPACE:
  				if(opts.checkbox){
  					tree.nodeToggleSelected(ctx);
  				}else{
  					tree.nodeSetActive(ctx, true);
  				}
  				break;
  			case KC.ENTER:
  				tree.nodeSetActive(ctx, true);
  				break;
  			case KC.BACKSPACE:
  			case KC.LEFT:
  			case KC.RIGHT:
  			case KC.UP:
  			case KC.DOWN:
  				res = node.navigate(event.which, activate);
  				break;
  			default:
  				handled = false;
  		}
  		if(handled){
  			event.preventDefault();
  		}
  	}
docs: Default handling for mouse keydown events.
  
  NOTE: this may be called with node == null if tree (but no node) has focus.
  @param {EventData} ctx