diff options
| author | ilya | 2009-10-28 23:08:58 -0700 |
|---|---|---|
| committer | ilya | 2009-10-28 23:08:58 -0700 |
| commit | 1bb0d3bcabb0b874cd3684db8f06dd68fad55a3b (patch) | |
| tree | ba3aed25e44dcb2f87dad57b2791718e8f1729ef /vimiumFrontend.js | |
| parent | aff9db2640db9aa02858d0a98a75919b67cfc61d (diff) | |
| download | vimium-1bb0d3bcabb0b874cd3684db8f06dd68fad55a3b.tar.bz2 | |
First pass at a better framework for mapping keys to commands.
Diffstat (limited to 'vimiumFrontend.js')
| -rw-r--r-- | vimiumFrontend.js | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js index ea17b97c..1ef865ff 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -6,6 +6,33 @@ document.addEventListener("blur", onBlurCapturePhase, true); // we want executed. var commandPort = chrome.extension.connect({name: "nativeCommand"}); +// Send the key to the key handler in the background page. +var keyPort = chrome.extension.connect({name: "keyDown"}); + +function scrollToBottom() { + console.log("scrollToBottom()"); + window.scrollTo(0, document.body.scrollHeight); +} + +function scrollToTop() { + console.log("scrollToTop()"); + window.scrollTo(0, 0); +} + +var commandRegistry = { + 'scrollToBottom': scrollToBottom, + 'scrollToTop': scrollToTop +}; + +chrome.extension.onConnect.addListener(function (port, name) { + if (port.name == "executePageCommand") + { + port.onMessage.addListener(function (args) { + commandRegistry[args.command].call(); + }); + } +}); + var keymap = { ESC: 27, a: 65, @@ -20,7 +47,7 @@ var insertMode = false; * Executes commands based on the keystroke. * Note that some keys will only register keydown events and not keystroke events, e.g. ESC. */ -function onKeydown(event) { +function onKeydown(event) { var key = event.keyCode; console.log(key); @@ -30,6 +57,16 @@ function onKeydown(event) { return; } + // Ignore modifier keys by themselves. + if (key > 31 && key < 127) + { + var keyChar = String.fromCharCode(key); + if (event.shiftKey) + keyPort.postMessage(keyChar.toUpperCase()); + else + keyPort.postMessage(keyChar.toLowerCase()); + } + var request; if (key == keymap.d) request = { command: "tabs.remove" }; |
