Firefox:Configurable Keybindings

Revision as of 02:07, 10 December 2004 by Ben (talk | contribs)

Introduction

Firefox extensions and other functions can fight for keybindings. We should offer the ability for users to configure their keybindings and choose from predefined schemes.

Implementation

The set of <command>s in the browser.xul file is the set of commands for that window. Each command should be modified to include the name of the command by slurping in the text from the appropriate menu item. This would show up in the UI (See "Editor" below).

<key> elements observe <commands> so the connection between the two would be handled by the Editor. Extensions and browser commands insert items into these sets and the Editor would read from them.

The challenge is to create something that works well and yet does not have an effect on Ts/Txul. One implementation strategy might be to use the default hardcoded set until after the window is shown, then in delayedStartup() or something similar load the definition file and create the real keybindings. The downside would be that there would be a brief (probably unexploitable) period in which the browser window was showing with the incorrect "default" keybindings.

Editor

UI TBD. Some kind of list showing a configurations menulist (with various defaults + user ability to save theirs). File should be saved in profile so it can follow them around.

Defaults should include:

  • Firefox
  • IE
  • Netscape 4
  • Safari

etc

Distribution Options

  • on by default, available through a menu item
  • off by default, shipped as an extension
  • not shipped, available as an extension through update.mozilla.org

Questions that affect this are related to how much this is something for users of extensions, advanced users and the like. The answer is that this is probably a power user feature and as such should be an extension. The hesitation I have when I make this claim is that it is a function that relates to manipulation of other extensions and so could be considered part of the "base".

Regardless, source would be hosted in cvs.mozilla.org and this would be a "supported extension" in that we'd commit to upgrading it with every release.

Work Estimate

2 Weeks