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) {