2018-11-18 23:08:36 +01:00
|
|
|
function Buttons(session) {
|
|
|
|
var mapping;
|
|
|
|
var mappingsStack = [];
|
|
|
|
|
|
|
|
document.addEventListener('keydown', function(event) {
|
2018-11-23 17:03:09 +01:00
|
|
|
var button = session.getOptions().layout[event.key];
|
2018-11-18 23:08:36 +01:00
|
|
|
if(button != undefined && mapping[button] != undefined) {
|
2018-11-29 22:22:25 +01:00
|
|
|
event.preventDefault();
|
2018-11-18 23:08:36 +01:00
|
|
|
mapping[button]();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return {
|
2018-11-30 14:51:42 +01:00
|
|
|
findKey: findKey,
|
2018-11-18 23:08:36 +01:00
|
|
|
map: map,
|
|
|
|
pop: pop,
|
|
|
|
push: push
|
|
|
|
};
|
|
|
|
|
2018-11-30 14:51:42 +01:00
|
|
|
function findKey(button) {
|
|
|
|
var layout = session.getOptions().layout;
|
|
|
|
for(var key in layout) {
|
|
|
|
if(layout[key] == button) {
|
|
|
|
return key;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-18 23:08:36 +01:00
|
|
|
function map(newMapping) {
|
|
|
|
mapping = newMapping;
|
|
|
|
}
|
|
|
|
|
|
|
|
function pop() {
|
|
|
|
mappingsStack.pop();
|
2018-11-29 21:59:18 +01:00
|
|
|
map(mappingsStack[mappingsStack.length-1]);
|
2018-11-18 23:08:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function push(newMapping) {
|
|
|
|
mappingsStack.push(newMapping);
|
|
|
|
map(newMapping);
|
|
|
|
}
|
|
|
|
}
|