From e3a05625b2368b2167a2a1b30aa82369e96a7538 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Thu, 30 Jan 2014 13:40:36 +0000 Subject: [PATCH] Add experimental keyboard shortcut widget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s not cool that we have to use a separate keyboard widget for each keyboard shortcut. Fixes #386 --- core/modules/utils/dom/keyboard.js | 60 +++++++++++++++++++ core/modules/widgets/keyboard.js | 93 ++++++++++++++++++++++++++++++ core/ui/EditTemplate.tid | 2 +- 3 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 core/modules/utils/dom/keyboard.js create mode 100644 core/modules/widgets/keyboard.js diff --git a/core/modules/utils/dom/keyboard.js b/core/modules/utils/dom/keyboard.js new file mode 100644 index 000000000..f8bd1c5b9 --- /dev/null +++ b/core/modules/utils/dom/keyboard.js @@ -0,0 +1,60 @@ +/*\ +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>>
>><$list filter="[is[shadow]!has[draft.of]tag[$:/tags/EditTemplate]] [!is[shadow]!has[draft.of]tag[$:/tags/EditTemplate]] +[tag[$:/tags/EditTemplate]]" variable="listItem"><$transclude tiddler=<>/>
+<$set name="storyTiddler" value=<>>
>><$keyboard key="escape" message="tw-cancel-tiddler"><$keyboard key="ctrl+enter" message="tw-save-tiddler"><$list filter="[is[shadow]!has[draft.of]tag[$:/tags/EditTemplate]] [!is[shadow]!has[draft.of]tag[$:/tags/EditTemplate]] +[tag[$:/tags/EditTemplate]]" variable="listItem"><$transclude tiddler=<>/>