diff --git a/apple2js.html b/apple2js.html index 33bdb26..b9b4420 100644 --- a/apple2js.html +++ b/apple2js.html @@ -728,6 +728,7 @@ function _keydown(evt) { } } else if (evt.keyCode == 16) { // Shift keyboard.shiftKey(true); + io.buttonDown(2, true); } else if (evt.keyCode == 17) { // Control keyboard.controlKey(true); } else if (!focused && (!evt.metaKey || evt.ctrlKey)) { @@ -747,6 +748,7 @@ function _keyup(evt) { if (evt.keyCode == 16) { // Shift keyboard.shiftKey(false); + io.buttonDown(2, false); } else if (evt.keyCode == 17) { // Control keyboard.controlKey(false); } else { @@ -842,8 +844,8 @@ $(function() { .mousemove(_mousemove) .bind("contextmenu", function(e) { e.preventDefault(); }); - $("input,textarea").focus(function() { focused = true; }); - $("input,textarea").blur(function() { focused = false; }); + $("input,textarea").focus(function() { focused = true; }) + .blur(function() { focused = false; }); keyboard.create($("#keyboard")); diff --git a/apple2jse.html b/apple2jse.html index f1fc727..6bc5ff0 100644 --- a/apple2jse.html +++ b/apple2jse.html @@ -704,6 +704,17 @@ function loadLocalStorage(drive, name) { var _key; function _keydown(evt) { + if (!focused) { + evt.preventDefault(); + + var key = keyboard.mapKeyEvent(evt); + if (key != 0xff) { + if (_key != 0xff) io.keyUp(); + io.keyDown(key, evt.shiftKey); + _key = key; + } + } + if (evt.keyCode === 112) { // F1 - Reset cpu.reset(); } else if (evt.keyCode === 113) { // F2 - Full Screen @@ -727,31 +738,31 @@ function _keydown(evt) { } } else if (evt.keyCode == 16) { // Shift keyboard.shiftKey(true); + io.buttonDown(2, true); } else if (evt.keyCode == 17) { // Control keyboard.controlKey(true); - } else if (!focused && (!evt.metaKey || evt.ctrlKey)) { - evt.preventDefault(); - - var key = keyboard.mapKeyEvent(evt); - if (key != 0xff) { - if (_key != 0xff) io.keyUp(); - io.keyDown(key); - _key = key; - } + } else if (evt.keyCode == 91 || evt.keyCode == 93) { // Command + keyboard.commandKey(true); + } else if (evt.keyCode == 18) { // Alt + keyboard.optionKey(true); } } function _keyup(evt) { _key = 0xff; + if (!focused) + io.keyUp(); + if (evt.keyCode == 16) { // Shift keyboard.shiftKey(false); + io.buttonDown(2, false); } else if (evt.keyCode == 17) { // Control keyboard.controlKey(false); - } else { - if (!focused) { - io.keyUp(); - } + } else if (evt.keyCode == 91 || evt.keyCode == 93) { // Command + keyboard.commandKey(false); + } else if (evt.keyCode == 18) { // Alt + keyboard.optionKey(false); } } @@ -841,6 +852,9 @@ $(function() { .mousemove(_mousemove) .bind("contextmenu", function(e) { e.preventDefault(); }); + $("body > div").hover(function() { focused = false; }, + function() { focused = true; }); + $("input,textarea").focus(function() { focused = true; }); $("input,textarea").blur(function() { focused = false; }); diff --git a/img/closed-apple24-green.png b/img/closed-apple24-green.png new file mode 100644 index 0000000..72f69ab Binary files /dev/null and b/img/closed-apple24-green.png differ diff --git a/img/closed-apple24.png b/img/closed-apple24.png new file mode 100644 index 0000000..268152c Binary files /dev/null and b/img/closed-apple24.png differ diff --git a/img/open-apple24-green.png b/img/open-apple24-green.png new file mode 100644 index 0000000..e806b30 Binary files /dev/null and b/img/open-apple24-green.png differ diff --git a/img/open-apple24.png b/img/open-apple24.png new file mode 100644 index 0000000..40d8694 Binary files /dev/null and b/img/open-apple24.png differ diff --git a/js/ui/keyboard2e.js b/js/ui/keyboard2e.js index 7cfd461..5e7b96c 100644 --- a/js/ui/keyboard2e.js +++ b/js/ui/keyboard2e.js @@ -253,11 +253,11 @@ function KeyBoard(io) { return span; } - function _mouseup() { - $(this).removeClass("pressed"); + function _mouseup(ev) { + $(ev.currentTarget).removeClass("pressed"); } - function _mousedown() { + function _mousedown(ev) { $(this).addClass("pressed"); var key = $(ev.currentTarget).data(shifted ? "key2" : "key1"); switch (key) {