function Buttons(session) { var mapping; var mappingsStack = []; document.addEventListener('keydown', function(event) { var button = session.getOptions().layout[event.key]; if(button != undefined && mapping[button] != undefined) { mapping[button](); } }); return { map: map, pop: pop, push: push }; function map(newMapping) { mapping = newMapping; } function pop() { mappingsStack.pop(); map(mappingsStack[mappingsStack.length-1]); } function push(newMapping) { mappingsStack.push(newMapping); map(newMapping); } }