1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-08-06 22:04:19 +00:00

Extend keyboard handling

To cope with the Mac’s “meta” key (ie command/⌘) preparatory to
trapping command-S
This commit is contained in:
Jermolene 2014-09-02 10:41:48 +01:00
parent 44228ed9f7
commit b25351e834
2 changed files with 11 additions and 4 deletions

View File

@ -48,6 +48,8 @@ exports.parseKeyDescriptor = function(keyDescriptor) {
info.shiftKey = true; info.shiftKey = true;
} else if(s === "alt") { } else if(s === "alt") {
info.altKey = true; info.altKey = true;
} else if(s === "meta") {
info.metaKey = true;
} }
// Replace named keys with their code // Replace named keys with their code
if(namedKeys[s]) { if(namedKeys[s]) {
@ -57,4 +59,12 @@ exports.parseKeyDescriptor = function(keyDescriptor) {
return info; 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;
};
})(); })();

View File

@ -41,10 +41,7 @@ KeyboardWidget.prototype.render = function(parent,nextSibling) {
domNode.className = classes.join(" "); domNode.className = classes.join(" ");
// Add a keyboard event handler // Add a keyboard event handler
domNode.addEventListener("keydown",function (event) { domNode.addEventListener("keydown",function (event) {
if(event.keyCode === self.keyInfo.keyCode && if($tw.utils.checkKeyDescriptor(event,self.keyInfo)) {
event.shiftKey === self.keyInfo.shiftKey &&
event.altKey === self.keyInfo.altKey &&
event.ctrlKey === self.keyInfo.ctrlKey) {
self.dispatchMessage(event); self.dispatchMessage(event);
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();