JavaScript. Подробное руководство, 6-е издание, стр. 271
В примере 17.8 определяется класс
<b>Keymар</b><b>Кеуmap</b><b>bind</b><b>unbind()</b><b>Key</b><b>Document</b><b>install().</b><b>Кеуmар</b><b>key</b><b>keyldentifіег</b><b>keyCode</b>Пример 17.8. Класс Key тар для обработки нажатий комбинаций клавиш
<b>/*</b><b>* Keymap.js: связывает события клавиатуры с функциями-обработчиками.</b><b>*</b><b>* Этот модуль определяет класс Keymap. Экземпляр этого класса представляет</b><b>* собой отображение идентификаторов комбинаций клавиш (определяемых ниже)</b><b>* в функции-обработчики. Объект Keymap можно установить в HTML-элемент</b><b>* для обработки событий keydown. Когда возникает это событие, объект Keymap</b><b>* использует свою карту привязок для вызова соответствующего обработчика.</b><b>*</b><b>* При создании объекта Keymap конструктору можно передать JavaScript-объект,</b><b>* представляющий начальную карту привязок. Имена свойств этого объекта должны</b><b>* соответствовать идентификаторам клавиш, а значениями должны быть функции-обработчики.</b><b>* После создания объекта Keymap в него можно добавлять новые привязки, передавая</b><b>* идентификатор клавиши и функцию-обработчик методу bind(). Имеется также возможность</b><b>* удалить привязку, передав идентификатор клавиши методу unbind().</b><b>*</b><b>* Чтобы задействовать объект Keymap, следует вызвать его метод install(), передав ему</b><b>* HTML-элемент, такой как объект document. Метод install() добавит в указанный объект</b><b>* обработчик события onkeydown. Когда этот обработчик будет вызван, он определит</b><b>* идентификатор нажатой клавиши и вызовет функцию-обработчик (если таковая имеется),</b><b>* привязанную к этому идентификатору клавиши. Один и тот же объект Keymap</b><b>* можно установить сразу в несколько HTML-элементов.</b><b>*</b><b>* Идентификаторы клавиш</b><b>*</b><b>* Идентификатор клавиши - это нечувствительная к регистру символов строка,</b><b>* представляющая клавишу, плюс любое количество удерживаемых нажатыми</b><b>* клавиш-модификаторов. Именем клавиши является основной текст, изображаемый</b><b>* на клавише. Допустимыми именами клавиш являются: "А", "7", "F2", "PageUp",</b><b>* "Left", "Backspace" и "Esc".</b><b>*</b><b>* Список имен находится в объекте Keymap.keyCodeToKeyName, внутри этого модуля.</b><b>* Они являются подмножеством имен, определяемых стандартом "DOM Level 3".</b><b>* Кроме того, этот класс будет использовать свойство key, когда оно будет реализовано.</b><b>*</b><b>* Идентификатор клавиши может также включать имена клавиш-модификаторов.</b><b>* Это имена Alt, Ctrl, Meta и Shift. Они нечувствительны к регистру символов и должны</b><b>* отделяться от имени клавиши и друг от друга пробелами или подчеркиваниями, дефисами</b><b>* или знаками +. Например: "SHIFT+A”, "Alt_F2", "meta-v" и "Ctrl alt left".</b><b>* В компьютерах Mac клавише Meta соответствует клавиша Command, а клавише Alt -</b><b>* клавиша Option. Некоторые броузеры отображают клавишу Windows в клавишу Meta.</b><b>*</b><b>* Функции-обработчики</b><b>*</b><b>* Обработчики вызываются как методы объекта document или элемента документа,</b><b>* в зависимости от того, куда был установлен объект Keymap, и им передаются</b><b>* два аргумента:</b><b>* 1) объект события keydown</b>