Skip to content

dbmdz/mirador-keyboardshortcuts

Repository files navigation

mirador-keyboardshortcuts

npm package required Mirador version

A Mirador 3 plugin which adds keyboard shortcuts for the following events:

  • scroll to the first canvas (default shortcut: ctrl+left)
  • scroll to the previous canvas (default shortcut: left)
  • scroll to the next canvas (default shortcuts: right, space)
  • scroll to the last canvas (default shortcut: ctrl+right)
  • switch to book view (default shortcut: b)
  • switch to gallery view (default shortcut: g)
  • switch to single view (default shortcut: s)
  • toggle fullscreen mode (default shortcuts: enter, f)

Note: the events will only apply to the currently focussed window.

Installation

Currently the plugin can only be used if you build your own Mirador JavaScript bundle. To include the plugin in your Mirador installation, you need to install it from npm with npm install mirador-keyboardshortcuts, import it into your project and pass it to Mirador when you instantiate the viewer:

import Mirador from 'mirador/dist/es/src/index';
import keyboardShortcutsPlugin from 'mirador-keyboardshortcuts/es';

const miradorConfig = {
  // Your Mirador configuration
}
Mirador.viewer(config, [...keyboardShortcutsPlugin]);

Configuration

You can configure the plugin globally by adding the keyboardShortcuts entry to the top-level configuration:

const miradorConfig = {
  // ...
  keyboardShortcuts: {
    // Global config, see available settings below
    shortcutMapping: {
      "navigate-to-first-canvas": "home",
      "toggle-fullscreen": "f",
    },
  },
  // ...
}

You can view an example configuration in demo/src/index.js.

Available settings

shortcutMapping

This is an override for the default mapping of shortcut(s) to event type, the available event types can be found here.

You can either use e.g. "navigate-to-first-canvas" or KeyboardEventTypes.NAVIGATE_TO_FIRST_CANVAS as key, a documentation of the supported shortcuts given as value can be found here.

Contributing

Found a bug? The plugin is not working with your manifest? Want a new feature? Create an issue, or if you want to take a shot at fixing it yourself, make a fork, create a pull request, we're always open to contributions :-)

For larger changes/features, it's usually wise to open an issue before starting the work, so we can discuss if it's a fit.

Note: The package requires Node.js 16 and npm in major version 8.