67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
мир.ввод = {
|
|
клавиши: {},
|
|
задано: {},
|
|
};
|
|
|
|
// // // //
|
|
|
|
|
|
мир.ключники.push(function(ключ, путь, значение){
|
|
if (!ключ.startsWith("ввод"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var номер = путь[1];
|
|
|
|
if (!(номер in мир.ввод.задано))
|
|
{
|
|
мир.ввод.задано[номер] = {};
|
|
}
|
|
|
|
var свойство = путь.slice(2).join(".");
|
|
мир.ввод.задано[номер][свойство] = значение;
|
|
|
|
|
|
console.debug("ввод", ключ, путь, значение);
|
|
});
|
|
|
|
|
|
// // // //
|
|
|
|
|
|
window.addEventListener("keydown", function(o) {
|
|
обработатьКлавишу(o.key, true);
|
|
});
|
|
window.addEventListener("keyup", function(o) {
|
|
обработатьКлавишу(o.key, false);
|
|
});
|
|
|
|
|
|
// // // //
|
|
|
|
|
|
function обработатьКлавишу(клавиша, нажата)
|
|
{
|
|
мир.ввод.клавиши[клавиша] = нажата;
|
|
|
|
for (var номер in мир.ввод.задано)
|
|
{
|
|
var задано = мир.ввод.задано[номер];
|
|
var клавиши = [];
|
|
for (var элемент in задано)
|
|
{
|
|
if (элемент.startsWith("клавиши"))
|
|
{
|
|
клавиши.push(задано[элемент]);
|
|
}
|
|
}
|
|
if (
|
|
клавиши.includes(клавиша) &&
|
|
задано.действие
|
|
) {
|
|
console.debug("исполнить действие", задано.действие, "клавиша", клавиша, "клавиши", клавиши);
|
|
}
|
|
}
|
|
}
|