This repository is a browser-based Emacs key binding reference plus a mini game called Emacs Hero for drilling shortcuts under time pressure.
- Loads key bindings from
public/emacs_keys.yaml. - Renders them in searchable sections.
- Lets you mark sections for training with the section checkbox.
- Includes a timed trainer mode (Emacs Hero) with score tracking and key sequence matching.
- Install dependencies:
npm install- Start the local server:
npm start- Open
http://127.0.0.1:4173/.
- Hover over the Emacs logo icon at the top of the page.
- In the dialog that appears below the icon, click
Yes.
- A command prompt is shown.
- You type the corresponding Emacs key sequence before the timer expires.
- Correct entries increase score and move to the next round.
- Wrong entries reset the current chord input.
Quitexits the game and clears the filter.
- Only sections with the section checkbox enabled are included in the game pool.
index.html: app shell and dialogs.src/main.js: app bootstrap, theme toggle, filtering, section rendering.src/emacshero.js: Emacs Hero game logic and key capture.src/sound.js: game sound effects.src/styles.css: app styling/themes.public/emacs_keys.yaml: editable key binding dataset.server.js: minimal static server for local use.
This repo can be forked to build a key trainer for any editor (Vim, VS Code, Helix, JetBrains, etc.).
Typical adaptation steps:
- Fork the repo.
- Replace
public/emacs_keys.yamlwith your editor’s key bindings and sections. - Update titles/labels in
index.htmlto match your editor branding. - Adjust parsing/matching rules in
src/emacshero.jsif your key notation differs. - Tweak styles/colors in
src/styles.css. - PULL REQUEST WELCOME
