summaryrefslogtreecommitdiff
path: root/src/client/keyshortcuts.js
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-03-03 23:43:59 +0200
committerAlon Levy <alon@pobox.com>2015-03-03 23:44:08 +0200
commit6d650b2ba07078b113ddeda89d6cf15ea56cd0c2 (patch)
tree32d3439841dfce3e214bccab41e7548c13bc78ee /src/client/keyshortcuts.js
parentcb132974c15ec1d2c53dda2f056d8a61963949e6 (diff)
client: add keyshortcuts.js, implement ctrl-a for selecting all
switch to onkeydown to capture ctrl-a before browser action ctrl-a works on text fields since we only handle it if the target is the body (which it is when svg is in focus, although that may be accidental, don't know the logic).
Diffstat (limited to 'src/client/keyshortcuts.js')
-rw-r--r--src/client/keyshortcuts.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/client/keyshortcuts.js b/src/client/keyshortcuts.js
new file mode 100644
index 00000000..92f4182b
--- /dev/null
+++ b/src/client/keyshortcuts.js
@@ -0,0 +1,40 @@
+define(['jquery', 'view/selection'],
+function($, selection)
+{
+var rz_core; // circular dependency
+
+function get_rz_core()
+{
+ if (rz_core === undefined) {
+ rz_core = require('rz_core');
+ }
+ return rz_core;
+}
+
+function install() {
+ document.body.onkeydown = function(e) {
+ var key = ((e.key && String(e.key))
+ || (e.charCode && String.fromCharCode(e.charCode))
+ || (e.which && String.fromCharCode(e.which))).toLowerCase();
+
+ if (e.altKey && e.ctrlKey && 'i' === key) {
+ $('#textanalyser').focus();
+ }
+ if (e.altKey && e.ctrlKey && 'o' === key) {
+ search.focus();
+ }
+ if (e.ctrlKey && 'a' === key && e.target === document.body) {
+ selection.update(get_rz_core().main_graph.nodes(), false);
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ if (e.ctrlKey && 'z' === key && e.target.nodeName !== 'INPUT') {
+ // TODO: rz_core.main_graph.undo();
+ }
+ };
+}
+return {
+ install: install
+ };
+}
+);