From 9e4da2c15313a62dd54309b264dd00a0430d53ff Mon Sep 17 00:00:00 2001 From: Will Scullin Date: Thu, 19 Dec 2013 14:55:04 -0800 Subject: [PATCH] Keyboard fixes --- apple2js.html | 6 ++++-- apple2jse.html | 40 +++++++++++++++++++++++------------ img/closed-apple24-green.png | Bin 0 -> 487 bytes img/closed-apple24.png | Bin 0 -> 422 bytes img/open-apple24-green.png | Bin 0 -> 569 bytes img/open-apple24.png | Bin 0 -> 503 bytes js/ui/keyboard2e.js | 6 +++--- 7 files changed, 34 insertions(+), 18 deletions(-) create mode 100644 img/closed-apple24-green.png create mode 100644 img/closed-apple24.png create mode 100644 img/open-apple24-green.png create mode 100644 img/open-apple24.png 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 0000000000000000000000000000000000000000..72f69abb1976cc1b47c06b63870d3ec502eaa83f GIT binary patch literal 487 zcmV@57)jAY^WG=&n1>G|9`3r){^_nsNI zKAm~Z>-)X;o^#KAG2i#g{&U2NF^Ip$n+VTdz4!IkJC#b|4#E-)LLWSo%mDFLf(IsM zAQ$$2xncneB5uY?*!DQ*K=%Ae9@h|`EGo$e))Cs^1F3hAc%Qe{0bD%JC1S~%jHstX5`ZbDUIE0DT3cXRf4)s*zB d!e;ykFaZ5VmY?QgxpV*k002ovPDHLkV1mm5(=Px3 literal 0 HcmV?d00001 diff --git a/img/closed-apple24.png b/img/closed-apple24.png new file mode 100644 index 0000000000000000000000000000000000000000..268152cee3d0ed9198703150c9f77e532008b7da GIT binary patch literal 422 zcmV;X0a^ZuP)K&V2$w=p%G02)cB&j-7%!g`YqKLGTdt1tf^Bkq|9}hKIloUJ516@jowwgL&%1S3##}%GdKnJw5~@!wdSsU*JnPljdD# z(FS^gEvlRTMO>QP5T2sE>vK>PBp)4&vKc313uKf$x>&Xqn8vNJz=i8H-4-;viG?uZ z`Xpq5tmJ)gj*gkAcVreV}6z>% literal 0 HcmV?d00001 diff --git a/img/open-apple24-green.png b/img/open-apple24-green.png new file mode 100644 index 0000000000000000000000000000000000000000..e806b30e6fd3ea385a8c4c4f5ae38951b46efe59 GIT binary patch literal 569 zcmV-90>=G`P)6dL%X$N>Z{CMHWbEO4*9M!iqd2CGXda@6=hy;{X3U#;vb2 z|DAKsx%b?2&UN|y{*eD1p?_KIx%VVMxRp*=fQHi%Lr@6$a2YfQ7*9cXLF5tK20KK9 zYFx&MH`e=MrR*}fWQjTAT0ciI-e$MP(g6nJ5Sj3Vu>-y%`P~KUum{=j2)q3M?AQT@ z+=xD?hIfd7dzgV!sE0gw1;2(`!ZmK|K#i}$Cv?INL_;~$ft+F)=HWyWr3lub11H0F zS=0+|6ia^0-NCf-d%UwLIn5y~S*9t9veQPWHMsa>L=Tk8J=vvcj$YcPLE2WqHpVxd z)IpMj17(v2l?KO73+*$2;(LI2rw+~`j<}k%5XqiG)G{dQN!nuLihY4E; zC_iYrRT+kMv*YlHiS!>((^O^Rk z$6@<^zn}NE_vig;4$HEN3b~yBeBKLJAqq5M4M(WSd8hh`3^n4)`du-&a^0U#fo1D& zjoICAy16%H^EsVo95$z@3N3iUDM~SkJw)NhD{mq|;;%cCmvlxKWJ}Y+?)J@WCn9`{iew(CNVx4h(yvHa>&ju0T01<&*1f-hd}` zX1bm}Xl>H8u))v`%D{znCb) z*`UBaPOzj?Kz-eqG|prV%T%vQgy$TzAw=LXoP};AQExYB#W=>OVS#mobknpCanx#V z9>jyBt#(|`AS#(tAw^Y0Z(u=Qs~qY@0)c$udR~(A1NU+yZ_thbBvC2JyJ!;E>G7eC t?jgQY-dE?o6?cedd)QIvzb!uk3;+-!Ej4L=W|9B^002ovPDHLkV1k~M;r##r literal 0 HcmV?d00001 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) {