aboutsummaryrefslogtreecommitdiffstats
path: root/vimiumFrontend.js
diff options
context:
space:
mode:
authorilya2009-10-28 23:08:58 -0700
committerilya2009-10-28 23:08:58 -0700
commit1bb0d3bcabb0b874cd3684db8f06dd68fad55a3b (patch)
treeba3aed25e44dcb2f87dad57b2791718e8f1729ef /vimiumFrontend.js
parentaff9db2640db9aa02858d0a98a75919b67cfc61d (diff)
downloadvimium-1bb0d3bcabb0b874cd3684db8f06dd68fad55a3b.tar.bz2
First pass at a better framework for mapping keys to commands.
Diffstat (limited to 'vimiumFrontend.js')
-rw-r--r--vimiumFrontend.js39
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" };