first a general hint: only add primitives directly as configs, otherwise these objects / arrays / functions will get added on prototype level so that they get shared for all instances.

for example use the initComponent method and add them there like this.listeners = ... or use Ext.apply(this, {...});

you are delegating the events to the dom node of the container, which can cause problems since keyevents will only trigger if this dom node has focus. you could also add them to the panel.body, but for most usecases it makes more sense to add them to the children (like input fields).

Ext.window.Window uses listeners for the ESC key, calling a method that is defined in panel:

var keyMap = me.getKeyMap();
keyMap.on(27, me.onEsc, me);

you could use a syntax like this as well, e.g. inside the initComponent under the callParent() call.