Ну, выглядит страшно, все эти магические цифры (коды клавиш), а этот кусок совсем мрак:
actions[9] = function(e) { // tab
e.preventDefault();
actions[39]();
}
Сам бы наверно сделал, что-то подобное:
keyboard.register(['a', 'b', 'tab'], (evt) => {
console.log(evt);
});
Вот полный пример:
jsbin.com/yeborunuje/edit?js,outputUPD. Хотя вру на самом деле, на данный момент использую
keymaster (точнее его форк, но это не важно), там уже решены многие проблемы, например отлов не просто нажатия отдельных клавиш, но и комбинаций.