mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-10-06 02:40:44 +00:00
61 lines
1.0 KiB
JavaScript
61 lines
1.0 KiB
JavaScript
|
/*\
|
||
|
title: $:/core/modules/utils/dom/keyboard.js
|
||
|
type: application/javascript
|
||
|
module-type: utils
|
||
|
|
||
|
Keyboard utilities
|
||
|
|
||
|
\*/
|
||
|
(function(){
|
||
|
|
||
|
/*jslint node: true, browser: true */
|
||
|
/*global $tw: false */
|
||
|
"use strict";
|
||
|
|
||
|
var namedKeys = {
|
||
|
"backspace": 8,
|
||
|
"tab": 9,
|
||
|
"enter": 13,
|
||
|
"escape": 27
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
Parses a key descriptor into the structure:
|
||
|
{
|
||
|
keyCode: numeric keycode
|
||
|
shiftKey: boolean
|
||
|
altKey: boolean
|
||
|
ctrlKey: boolean
|
||
|
}
|
||
|
Key descriptors have the following format:
|
||
|
ctrl+enter
|
||
|
ctrl+A
|
||
|
*/
|
||
|
exports.parseKeyDescriptor = function(keyDescriptor) {
|
||
|
var components = keyDescriptor.split("+"),
|
||
|
info = {
|
||
|
keyCode: 0,
|
||
|
shiftKey: false,
|
||
|
altKey: false,
|
||
|
ctrlKey: false
|
||
|
};
|
||
|
for(var t=0; t<components.length; t++) {
|
||
|
var s = components[t].toLowerCase();
|
||
|
// Look for modifier keys
|
||
|
if(s === "ctrl") {
|
||
|
info.ctrlKey = true;
|
||
|
} else if(s === "shift") {
|
||
|
info.shiftKey = true;
|
||
|
} else if(s === "alt") {
|
||
|
info.altKey = true;
|
||
|
}
|
||
|
// Replace named keys with their code
|
||
|
if(namedKeys[s]) {
|
||
|
info.keyCode = namedKeys[s];
|
||
|
}
|
||
|
}
|
||
|
return info;
|
||
|
};
|
||
|
|
||
|
})();
|