Friday, January 4, 2013

ChromeVox R25: Keymap Design Overview

1 ChromeVox Keymap Design

Keymaps in chromeVox R25 have gone through a major overhaul motivated by the need to:

  • Enable keymaps that are consistent with the look and feel of different platforms.
  • Enable ergonomic keybindings for different user communities.
  • Reduce the need for chording, i.e. the need to hold down multiple keys at a given time.

This article gives a high-level overview of the underlying design and user-model.

1.1 Design Overview

ChromeVox provides a rich set of end-user commands that need to be available anywhere within a Web application. Consequently, the key assignments for these commands need to avoid conflicts with Chrome, as well as the underlying platform that Chrome is being run on, e.g., ChromeOS or Windows.

1.1.1 ChromeVox Modifier

Early versions of ChromeVox required the ChromeVox Modifier to be held down to invoke ChromeVox commands. Early releases picked reasonable defaults for the ChromeVox Modifier on different platforms, e.g., Ctrl+Alt on Windows, and Shift+Search on ChromeOS. Starting with R25, we enable users to configure the ChromeVox Modifier key via the ChromeVox Options page … you simply press the desired combination of modifier keys while in the appropriate edit field in the options page.

1.1.2 ChromeVox Prefix

Starting in ChromeVox R25, we provide an alternative mechanism for invoking ChromeVox commands, called the ChromeVox Prefix. Here, you get to pick a ChromeVox Prefix key of your choice … in my case I use Ctrl ;. The ChromeVox Prefix key can be set via the ChromeVox Options page by typing a single character into the appropriate edit field … so in my case, I pressed ; after first deleting the default assignment of Ctrl z.

The ChromeVox Prefix differs from the ChromeVox Modifier in several important ways:

  • You do not need to hold the chromeVox Prefix down while pressing other keys. This eliminates the need for complex key-chords. As an example, you can invoke continuous reading, i.e. ChromeVox+r by pressing the prefix key Ctrl ; and then pressing r.
  • You get access to a lot more keys! As an example, you can unambiguously assign ChromeVox commands to different variations of a given key, e.g., (h,Shift+h, …).

ChromeVox R25 provides an initial set of keymaps; over the next few releases, we hope to provide more custom keymaps, as well as introduce the ability for users to load entirely custom keymaps.