From ad0f7ef59f2d40968f3c69d114383dc7214d201b Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Mon, 5 Sep 2011 15:18:37 -0400 Subject: [PATCH 1/4] =?UTF-8?q?Adding=20unicode=20ctrl=20key=20character?= =?UTF-8?q?=20(=E2=8C=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keymaster.js | 4 ++-- keymaster.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keymaster.js b/keymaster.js index ce120cc..5a9204a 100644 --- a/keymaster.js +++ b/keymaster.js @@ -11,7 +11,7 @@ _MODIFIERS = { '⇧': 16, shift: 16, option: 18, '⌥': 18, alt: 18, - ctrl: 17, control: 17, + '⌃': 17, ctrl: 17, control: 17, command: 91, '⌘': 91 }, // special keys @@ -27,7 +27,7 @@ ',': 188, '.': 190, '/': 191, '`': 192, '-': 189, '=': 187, ';': 186, '\'': 222, - '[': 219, ']': 221, '\\': 220 + '[': 219, ']': 221, '\\': 220 }; for(k=1;k<20;k++) _MODIFIERS['f'+k] = 111+k; diff --git a/keymaster.min.js b/keymaster.min.js index cbdd38f..039dcb4 100644 --- a/keymaster.min.js +++ b/keymaster.min.js @@ -1,4 +1,4 @@ // keymaster.js // (c) 2011 Thomas Fuchs // keymaster.js may be freely distributed under the MIT license. -(function(a){function h(a,b){var c=a.length;while(c--)if(a[c]===b)return c;return-1}function i(a){var b,g,i,j,l,m;g=(a.target||a.srcElement).tagName,b=a.keyCode;if(b==93||b==224)b=91;if(b in d){d[b]=!0;for(j in f)f[j]==b&&(k[j]=!0);return}if(g=="INPUT"||g=="SELECT"||g=="TEXTAREA")return;if(!(b in c))return;for(l=0;l0;for(j in d)if(!d[j]&&h(i.mods,+j)>-1||d[j]&&h(i.mods,+j)==-1)m=!1;(i.mods.length==0&&!d[16]&&!d[18]&&!d[17]&&!d[91]||m)&&i.method(a,i)===!1&&(a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation&&a.stopPropagation(),a.cancelBubble&&(a.cancelBubble=!0))}}}function j(a){var b=a.keyCode,c;if(b==93||b==224)b=91;if(b in d){d[b]=!1;for(c in f)f[c]==b&&(k[c]=!1)}}function k(a,b,d){var e,h,i,j;d===undefined&&(d=b,b="all"),a=a.replace(/\s/g,""),e=a.split(","),e[e.length-1]==""&&(e[e.length-2]+=",");for(i=0;i1){h=a.slice(0,a.length-1);for(j=0;j1){h=a.slice(0,a.length-1);for(j=0;j0;for(j in d)if(!d[j]&&h(i.mods,+j)>-1||d[j]&&h(i.mods,+j)==-1)m=!1;(i.mods.length==0&&!d[16]&&!d[18]&&!d[17]&&!d[91]||m)&&i.method(a,i)===!1&&(a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation&&a.stopPropagation(),a.cancelBubble&&(a.cancelBubble=!0))}}}}function h(a,b){var c=a.length;while(c--)if(a[c]===b)return c;return-1}var b,c={},d={16:!1,18:!1,17:!1,91:!1},e="all",f={"⇧":16,shift:16,option:18,"⌥":18,alt:18,"⌃":17,ctrl:17,control:17,command:91,"⌘":91},g={backspace:8,tab:9,clear:12,enter:13,"return":13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,"delete":46,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220};for(b=1;b<20;b++)f["f"+b]=111+b;for(b in f)k[b]=!1;m(document,"keydown",i),m(document,"keyup",j),a.key=k,a.key.setScope=l,typeof module!="undefined"&&(module.exports=key)})(this) \ No newline at end of file From ae43fffca7f180e49e4caeb043e399d375a17545 Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Mon, 5 Sep 2011 15:20:10 -0400 Subject: [PATCH 2/4] More consistent modifier key ordering --- keymaster.js | 4 ++-- keymaster.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keymaster.js b/keymaster.js index 5a9204a..3fea6af 100644 --- a/keymaster.js +++ b/keymaster.js @@ -10,9 +10,9 @@ // modifier keys _MODIFIERS = { '⇧': 16, shift: 16, - option: 18, '⌥': 18, alt: 18, + '⌥': 18, alt: 18, option: 18, '⌃': 17, ctrl: 17, control: 17, - command: 91, '⌘': 91 + '⌘': 91, command: 91 }, // special keys _MAP = { diff --git a/keymaster.min.js b/keymaster.min.js index 039dcb4..4a69fa3 100644 --- a/keymaster.min.js +++ b/keymaster.min.js @@ -1,4 +1,4 @@ // keymaster.js // (c) 2011 Thomas Fuchs // keymaster.js may be freely distributed under the MIT license. -(function(a){function m(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,function(){c(window.event)})}function l(a){e=a||"all"}function k(a,b,d){var e,h,i,j;d===undefined&&(d=b,b="all"),a=a.replace(/\s/g,""),e=a.split(","),e[e.length-1]==""&&(e[e.length-2]+=",");for(i=0;i1){h=a.slice(0,a.length-1);for(j=0;j0;for(j in d)if(!d[j]&&h(i.mods,+j)>-1||d[j]&&h(i.mods,+j)==-1)m=!1;(i.mods.length==0&&!d[16]&&!d[18]&&!d[17]&&!d[91]||m)&&i.method(a,i)===!1&&(a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation&&a.stopPropagation(),a.cancelBubble&&(a.cancelBubble=!0))}}}}function h(a,b){var c=a.length;while(c--)if(a[c]===b)return c;return-1}var b,c={},d={16:!1,18:!1,17:!1,91:!1},e="all",f={"⇧":16,shift:16,option:18,"⌥":18,alt:18,"⌃":17,ctrl:17,control:17,command:91,"⌘":91},g={backspace:8,tab:9,clear:12,enter:13,"return":13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,"delete":46,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220};for(b=1;b<20;b++)f["f"+b]=111+b;for(b in f)k[b]=!1;m(document,"keydown",i),m(document,"keyup",j),a.key=k,a.key.setScope=l,typeof module!="undefined"&&(module.exports=key)})(this) \ No newline at end of file +(function(a){function m(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,function(){c(window.event)})}function l(a){e=a||"all"}function k(a,b,d){var e,h,i,j;d===undefined&&(d=b,b="all"),a=a.replace(/\s/g,""),e=a.split(","),e[e.length-1]==""&&(e[e.length-2]+=",");for(i=0;i1){h=a.slice(0,a.length-1);for(j=0;j0;for(j in d)if(!d[j]&&h(i.mods,+j)>-1||d[j]&&h(i.mods,+j)==-1)m=!1;(i.mods.length==0&&!d[16]&&!d[18]&&!d[17]&&!d[91]||m)&&i.method(a,i)===!1&&(a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation&&a.stopPropagation(),a.cancelBubble&&(a.cancelBubble=!0))}}}}function h(a,b){var c=a.length;while(c--)if(a[c]===b)return c;return-1}var b,c={},d={16:!1,18:!1,17:!1,91:!1},e="all",f={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,command:91},g={backspace:8,tab:9,clear:12,enter:13,"return":13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,"delete":46,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220};for(b=1;b<20;b++)f["f"+b]=111+b;for(b in f)k[b]=!1;m(document,"keydown",i),m(document,"keyup",j),a.key=k,a.key.setScope=l,typeof module!="undefined"&&(module.exports=key)})(this) \ No newline at end of file From feb658ff3b21c8d3e931be30230d480d536bb6f2 Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Mon, 5 Sep 2011 19:57:01 -0400 Subject: [PATCH 3/4] =?UTF-8?q?Adding=20modifier=20key=20test=20for=20fanc?= =?UTF-8?q?y=20ctrl=20(=E2=8C=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/keymaster.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/test/keymaster.html b/test/keymaster.html index b508fe2..93b9b5a 100644 --- a/test/keymaster.html +++ b/test/keymaster.html @@ -106,15 +106,17 @@

Keymaster unit tests

testFancyModifierKeys: function(t){ var sequence = ''; - key('⇧+a', function(){ sequence += 'a' }); + key('⌃+a', function(){ sequence += 'a' }); key('⌥+b', function(){ sequence += 'b' }); - key('⌘+c', function(){ sequence += 'c' }); + key('⇧+c', function(){ sequence += 'c' }); + key('⌘+d', function(){ sequence += 'd' }); - keydown(KEYS.shift); keydown(65); keyup(65); keyup(KEYS.shift); + keydown(KEYS.ctrl); keydown(65); keyup(65); keyup(KEYS.ctrl); keydown(KEYS.option); keydown(66); keyup(66); keyup(KEYS.option); - keydown(KEYS.command); keydown(67); keyup(67); keyup(KEYS.command); + keydown(KEYS.shift); keydown(67); keyup(67); keyup(KEYS.shift); + keydown(KEYS.command); keydown(68); keyup(68); keyup(KEYS.command); - t.assertEqual('abc', sequence); + t.assertEqual('abcd', sequence); }, testNonAlphanumericKeys: function(t){ From a22dd4af55f9e9e1c135f7a6e5078a56c9d284b2 Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Mon, 5 Sep 2011 19:58:57 -0400 Subject: [PATCH 4/4] Making KEYS object consistent with _MODIFIERS --- test/keymaster.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/keymaster.html b/test/keymaster.html index 93b9b5a..e6f6f16 100644 --- a/test/keymaster.html +++ b/test/keymaster.html @@ -39,10 +39,12 @@

Keymaster unit tests

(el||document).dispatchEvent(event); } - var KEYS = { '⇧': 16, shift: 16, - option: 18, '⌥': 18, alt: 18, - ctrl: 17, control: 17, - command: 91, '⌘': 91 }; + var KEYS = { + '⇧': 16, shift: 16, + '⌥': 18, alt: 18, option: 18, + '⌃': 17, ctrl: 17, control: 17, + '⌘': 91, command: 91 + }; Evidence.TestCase.extend('KeymasterTest', { testShortcut: function(t){