From b25351e83448cdf45efd56e4e765f7332b3ca173 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Tue, 2 Sep 2014 10:41:48 +0100 Subject: [PATCH] Extend keyboard handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To cope with the Mac’s “meta” key (ie command/⌘) preparatory to trapping command-S --- core/modules/utils/dom/keyboard.js | 10 ++++++++++ core/modules/widgets/keyboard.js | 5 +---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/modules/utils/dom/keyboard.js b/core/modules/utils/dom/keyboard.js index 31ceacc4a..cc0736962 100644 --- a/core/modules/utils/dom/keyboard.js +++ b/core/modules/utils/dom/keyboard.js @@ -48,6 +48,8 @@ exports.parseKeyDescriptor = function(keyDescriptor) { info.shiftKey = true; } else if(s === "alt") { info.altKey = true; + } else if(s === "meta") { + info.metaKey = true; } // Replace named keys with their code if(namedKeys[s]) { @@ -57,4 +59,12 @@ exports.parseKeyDescriptor = function(keyDescriptor) { return info; }; +exports.checkKeyDescriptor = function(event,keyInfo) { + return event.keyCode === keyInfo.keyCode && + event.shiftKey === keyInfo.shiftKey && + event.altKey === keyInfo.altKey && + event.ctrlKey === keyInfo.ctrlKey && + event.metaKey === keyInfo.metaKey; +}; + })(); diff --git a/core/modules/widgets/keyboard.js b/core/modules/widgets/keyboard.js index c30649f86..2eb392a75 100644 --- a/core/modules/widgets/keyboard.js +++ b/core/modules/widgets/keyboard.js @@ -41,10 +41,7 @@ KeyboardWidget.prototype.render = function(parent,nextSibling) { domNode.className = classes.join(" "); // Add a keyboard event handler domNode.addEventListener("keydown",function (event) { - if(event.keyCode === self.keyInfo.keyCode && - event.shiftKey === self.keyInfo.shiftKey && - event.altKey === self.keyInfo.altKey && - event.ctrlKey === self.keyInfo.ctrlKey) { + if($tw.utils.checkKeyDescriptor(event,self.keyInfo)) { self.dispatchMessage(event); event.preventDefault(); event.stopPropagation();