Skip to main content
OpenKeyNav™Open-source JavaScript keyboard operation library

Add direct keyboard operation to websites and web apps.

OpenKeyNav labels detected targets for direct selection and gives developers reusable modes for navigation and configured keyboard drag-and-drop.

  • MIT licensed
  • Configurable shortcuts
  • Framework-agnostic

Install with npm or a browser build

npm
npm install openkeynav
Use a CDN or self-hosted browser build
Built-in and configured paths

Click Mode scans the current view and labels the actions it detects. Developer configuration maps specialized movement workflows.

Interactive demo 01

Click Mode demo

Call a firefly with one shortcut

Enable OpenKeyNav and press K to enter Click Mode. Type the label beside Juniper to send it straight to the lantern.

Click Mode lets you choose a visible target directly. Press Esc to leave Click Mode.

Live Click Mode demoShortcuts off
Midnight gardenThe lantern keeper
7 fireflies
Your task

Call Juniper to the lantern.

  1. Current step.
  2. Upcoming step. Press K to enter Click Mode
  3. Upcoming step. Type Juniper’s label
Garden quietThe lantern keeper waits for Juniper.

Interactive demo 02

Move Mode demo: Keyboard-accessible drag and drop

Choose where the magic lands

Enable OpenKeyNav and press M to enter Move Mode. Type the label beside Moon dust, then type the label beside the Starlight cauldron. The bottle crosses the lab and wakes the station you choose.

OpenKeyNav labels all three brewing stations after you choose an ingredient. One destination label completes the move. Press Esc to leave Move Mode.

Live Move Mode demoShortcuts off
Shortcut sorceryThe traveling apothecary
1 route
Your task

Send Moon dust to the Starlight cauldron.

  1. Current step.
  2. Upcoming step. Press M to enter Move Mode
  3. Upcoming step. Type the Moon dust label
  4. Upcoming step. Type the Starlight cauldron label
IngredientsDrag from here
DestinationsDrop at one station
Awaiting a routeThe Starlight cauldron waits for Moon dust.
Drag each bottle directly to any of the three brewing stations.Configure Move Mode

Modes and tools

Keyboard interaction and navigation modes

Compare interaction modes, navigation commands, and development tooling. Items marked v.next are planned for the next package release.

OpenKeyNav capabilities, default commands, release status, and purposes
CapabilityKindDefault / triggerAvailabilityWhat it does
Click ModeInteraction modeKCurrentLabel detected targets and focus or activate one directly.
Move ModeInteraction modeMCurrentChoose a configured source and valid destination for keyboard-accessible drag-and-drop.
Heading NavigationNavigation commandH / 1–6CurrentMove to the next or previous heading, or jump by heading level.
Scroll NavigationNavigation commandSCurrentJump focus directly between scrollable regions.
Structural NavigationNavigation moderCurrentNavigate page structure through existing focus targets alongside the browser's native Tab sequence.
Debug diagnosticsDevelopment toolOn by defaultCurrentIdentify actions for manual review of semantics, focus, activation, and task completion.
Expanded audit panelDevelopment toolOn enablev.nextRun a page-wide heuristic scan and open a results panel when keyboard-audit debugging is on.

Developer integration

Developer integration for accessible keyboard operation

OpenKeyNav is a developer-integrated JavaScript library for adding direct keyboard operation and navigation to websites and web apps. It is not a one-click accessibility-remediation overlay or an automated compliance product. Connect its reusable mechanisms to your application's semantic controls, accessible names, roles, states, focus behavior, feedback, and complete workflows, then evaluate the resulting experience against applicable accessibility requirements.

OpenKeyNav

  • Provides on-demand labels for detected targets
  • Provides direct focus and activation through Click Mode
  • Provides heading, scroll-region, and structural navigation
  • Provides configurable commands with mode feedback and documented exits
  • Flags detected actions for focused review of semantics, focus, activation, and completion

You

  • Build with semantic HTML and native controls when available
  • Supply accurate names, roles, values, and states
  • Map specialized movement workflows to application behavior
  • Provide logical focus, feedback, and error handling
  • Verify every action and outcome with keyboard and disabled-user testing

WCAG keyboard operation with a reusable implementation path

W3C

WCAG 2.1.1 requires all functionality to be operable through a keyboard interface. OpenKeyNav provides reusable keyboard paths for detected targets and configured workflows, with focused guides for coverage and verification.

ADA Title II

Use OpenKeyNav to build keyboard paths for ADA Title II compliance.

WCAG 2.1 Level AA

  • State and local government websites and mobile apps
  • Content supplied directly or through vendor arrangements
  • April 26, 2027 for entities with populations of 50,000 or more
  • April 26, 2028 for smaller entities and special districts

Build the keyboard path

ATAG Part A keyboard access for the people who create web content

W3C

ATAG Part A addresses authoring-tool interfaces for people with disabilities. OpenKeyNav gives authors direct access to detected actions, documented mode exits, and faster navigation through web-based CMSs, editors, and site builders.

Research

OpenKeyNav in research and guidance

Research presented at IEEE VIS introduces OpenKeyNav for visualization workflows, an IHC study evaluates it, and PLOS Computational Biology guidance cites it for keyboard access and multiple input devices.

Research Conference: IEEE VIS

Using OpenKeyNav to Enhance the Keyboard-Accessibility of Web-based Data Visualization Tools

Presented at the AccessViz workshop, part of IEEE VIS. The National Institutes of Health funded the research paper through Harvard University’s HIDIVE Lab.

Research Journal: PLOS Computational Biology

Ten simple rules for making biomedical data resources accessible

Research affiliated with Harvard Medical School. Rule 6 includes OpenKeyNav in its guidance for keyboard access and multiple input devices.

Research Conference: IHC

Challenges in the Accessibility of Data Visualization: Lessons from an Evaluation of a Dam Safety System

The paper evaluates OpenKeyNav as a keyboard route for reproducing pointer-driven interactions in a dam-safety visualization system.

Accessibility Conference: IHD

Moving Away from Mouse-Dependency: Empowering Productive Web Experiences with Keyboard Accessibility

Presented in a breakout session at the Evidence for Success Disability Conference, hosted by Northern Arizona University’s Institute for Human Development.

Testing

Test before you ship

Complete the full task with a keyboard. Then test the browsers and assistive technologies your users rely on.

Open the accessibility practices
  1. 1
    Keyboard-only task flow

    Reach, operate, reverse, and exit every configured interaction.

  2. 2
    Focus and semantics

    Confirm visible focus, logical order, names, roles, states, and feedback.

  3. 3
    Assistive technology

    Check screen reader and speech-input behavior for shortcut conflicts.

  4. 4
    People using the product

    Include disabled users in evaluation alongside standards testing.

Get started

Install OpenKeyNav

Add the library with your package manager, a CDN, or a self-hosted browser build. Then initialize one instance at the persistent root of your site or app.

Add the library

Choose the route that fits your project.

Package manager

Use the command for the package manager already in your project.

npm command
npm install openkeynav

Browser build

Load the same UMD browser build from a CDN or keep a copy in your project.

CDN · latest npm release
<script src="https://cdn.jsdelivr.net/npm/openkeynav/dist/openkeynav.umd.min.js"></script>
Self-hosted file
<script src="/vendor/openkeynav.umd.min.js"></script>
Download the current browser build

Initialize it in your environment

These examples keep one instance at the document or application root.

Before the closing body tag
<script src="https://cdn.jsdelivr.net/npm/openkeynav/dist/openkeynav.umd.min.js"></script>

<script>
  new OpenKeyNav().init();
</script>

Using the self-hosted file? Replace the first script URL with /vendor/openkeynav.umd.min.js.

Start implementing

Add the operation layer, verify detected targets, and map specialized workflows.