diff --git a/exec/load/tree.js b/exec/load/tree.js
index db4ff1df65dc7c8431b5492edb8877e72601280a..069e5dafab9098fdd9ec68c9bf97a1343959d8e7 100644
--- a/exec/load/tree.js
+++ b/exec/load/tree.js
@@ -684,10 +684,17 @@ function Tree(frame,text,tree) {
 	function matchHotkey(cmd) {
 		if(!cmd.match(/\w/))
 			return values.NOT_HANDLED;
+		for(var i=0;i<properties.items.length;i++) {
+			if(properties.items[i].hotkey.toUpperCase() == cmd.toUpperCase()) {
+				properties.index = i;
+				return properties.items[i].action();
+			}
+		}
 		var pattern=new RegExp(cmd,"i");
 		var stop=properties.items.length-1;
-		if(this.depth == 0)
+		if(this.depth == 0) {
 			stop=properties.index;
+		}
 		for(var i=properties.index+1;;i++) {
 			if(i >= properties.items.length) 
 				i=0;
@@ -699,8 +706,9 @@ function Tree(frame,text,tree) {
 					properties.items[i].index = -1;
 				return values.HANDLED;
 			}
-			if(i == stop)
+			if(i == stop) {
 				break;
+			}
 		}	
 		return values.NOT_HANDLED;
 	}
@@ -786,7 +794,13 @@ function TreeItem(text,parent,func,args) {
 		properties.parent.line=line;
 	});
 	this.__defineGetter__("hotkey",function() {
-		return properties.text.indexOf("|")+1;
+		var kIndex = properties.text.indexOf("|")+1;
+		if(kIndex > 0) {
+			return properties.text[kIndex];
+		}
+		else {
+			return undefined;
+		}
 	});
 	
 	/* public properties */