From f4a0f8b79678fd8d67f1ccb140f838df04a7313a Mon Sep 17 00:00:00 2001 From: ilya Date: Fri, 26 Feb 2010 22:47:55 -0800 Subject: Key Mapping - Initial support. Basics work. --- background_page.html | 1 + commands.js | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/background_page.html b/background_page.html index faf1fa1b..b2493b3e 100644 --- a/background_page.html +++ b/background_page.html @@ -425,6 +425,7 @@ } function init() { + parseCustomKeyMappings(localStorage["keyMappings"]); populateValidFirstKeys(); populateSingleKeyCommands(); if (shouldShowUpgradeMessage()) diff --git a/commands.js b/commands.js index a2e53a18..d7c8b12a 100644 --- a/commands.js +++ b/commands.js @@ -11,8 +11,7 @@ function addCommand(command, description, isBackgroundCommand) { availableCommands[command] = { description: description, isBackgroundCommand: isBackgroundCommand }; } -function mapKeyToCommand(key, command) -{ +function mapKeyToCommand(key, command) { if (!availableCommands[command]) { console.log(command, "doesn't exist!"); @@ -22,6 +21,36 @@ function mapKeyToCommand(key, command) keyToCommandRegistry[key] = { command: command, isBackgroundCommand: availableCommands[command].isBackgroundCommand }; } +function unmapKey(key) { delete keyToCommandRegistry[key]; } + +function parseCustomKeyMappings(customKeyMappings) { + lines = customKeyMappings.split("\n"); + + for (var i = 0; i < lines.length; i++) { + line = lines[i].split(" "); // TODO(ilya): Support all whitespace. + if (line.length < 2) { continue } + + var lineCommand = line[0]; + var key = line[1]; + + if (lineCommand == "map") { + if (line.length != 3) { continue } + + var vimiumCommand = line[2]; + + if (!availableCommands[vimiumCommand]) { continue } + + console.log("Mapping", key, "to", vimiumCommand); + mapKeyToCommand(key, vimiumCommand); + } + else if (lineCommand == "unmap") { + console.log("Unmapping", key); + unmapKey(key); + } + } +} + +// TODO(ilya): Fill in these descriptions. addCommand('scrollDown', ''); addCommand('scrollUp', ''); addCommand('scrollLeft', ''); @@ -36,9 +65,6 @@ addCommand('reload', ''); addCommand('toggleViewSource', ''); addCommand('enterInsertMode', ''); addCommand('goBack', ''); -addCommand('goBack', ''); -addCommand('goForward', ''); -addCommand('goForward', ''); addCommand('goForward', ''); addCommand('zoomIn', ''); addCommand('zoomOut', ''); -- cgit v1.2.3