diff --git a/src/game/lib/keyboard_shortcut.js b/src/game/lib/keyboard_shortcut.js
new file mode 100644
index 0000000..02956f9
--- /dev/null
+++ b/src/game/lib/keyboard_shortcut.js
@@ -0,0 +1,58 @@
+function KeyboardShortcut() {
+ console.log("KeyboardShortcut");
+
+ this.keyHandlerMapper = {};
+ console.log(this.keyHandlerMapper[Phaser.KeyCode.ESC]);
+
+ game.input.keyboard.addCallbacks(this, this.keyDown, this.keyUp, null);
+};
+
+KeyboardShortcut.prototype.addCallback = function(keyCode, keyDownHandler, keyUpHandler, callerClassName) {
+ if(this.keyHandlerMapper[keyCode] != undefined) {
+ this.keyHandlerMapper[keyCode] = null;
+ }
+
+ this.keyHandlerMapper[keyCode] = {
+ "keyDownHandler": keyDownHandler,
+ "keyUpHandler": keyUpHandler,
+ "callerClassName": callerClassName
+ }
+
+ // console.log(this.keyHandlerMapper);
+}
+
+KeyboardShortcut.prototype.keyDown = function(char) {
+ // var keyCode = char.code;
+ var keyCode = char.keyCode;
+ // console.log(keyCode + " is pressed");
+
+ if(this.keyHandlerMapper[keyCode] == undefined)
+ return;
+
+ var keyMapper = this.keyHandlerMapper[keyCode];
+ var keyDownHandler = keyMapper["keyDownHandler"];
+ if(keyDownHandler == undefined)
+ return;
+
+ if(isDebugMode())
+ console.log(keyCode + " key is down (" + keyMapper["callerClassName"] + ")");
+ keyDownHandler();
+}
+
+KeyboardShortcut.prototype.keyUp = function(char) {
+ // var keyCode = char.code;
+ var keyCode = char.keyCode;
+ // console.log(keyCode + " is up");
+
+ if(this.keyHandlerMapper[keyCode] == undefined)
+ return;
+
+ var keyMapper = this.keyHandlerMapper[keyCode];
+ var keyUpHandler = keyMapper["keyUpHandler"];
+ if(keyUpHandler == undefined)
+ return;
+
+ if(isDebugMode())
+ console.log(keyCode + " key is up (" + keyMapper["callerClassName"] + ")");
+ keyUpHandler();
+}
diff --git a/src/game/menu/menu_typing_practice.js b/src/game/menu/menu_typing_practice.js
index c5fd870..2486288 100644
--- a/src/game/menu/menu_typing_practice.js
+++ b/src/game/menu/menu_typing_practice.js
@@ -39,11 +39,17 @@ var MenuTypingPractice = {
// );
+ this.keyboardShortcut = new KeyboardShortcut();
+ this.keyboardShortcut.addCallback(
+ Phaser.KeyCode.ESC, // keyCode
+ null, // keyDownHandler
+ (function() { this.back(); }).bind(this), // keyUpHandler
+ "menu_typing_practice" // callerClassName
+ );
+
// top ui
var screenTopUI = new ScreenTopUI();
- screenTopUI.makeBackButton( function() {
- location.href = '../../web/client/menu_app.html';
- });
+ screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) );
screenTopUI.makeFullScreenButton();
@@ -76,6 +82,10 @@ var MenuTypingPractice = {
this.makeActiveTypingPracticeAppButtons();
},
+ back: function() {
+ location.href = '../../web/client/menu_app.html';
+ },
+
makeActiveTypingPracticeAppButtons: function() {
var dbConnectManager = new DBConnectManager();
diff --git a/src/web/client/menu_typing_practice.html b/src/web/client/menu_typing_practice.html
index 909c267..fbd767d 100644
--- a/src/web/client/menu_typing_practice.html
+++ b/src/web/client/menu_typing_practice.html
@@ -14,6 +14,7 @@
+