Files
mjs/00140.ввод.js

73 lines
1.7 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 обработатьКлавишу(клавиша, нажата)
{
// Исключаем повторы.
if (мир.ввод.клавиши[клавиша] == нажата)
{
return;
}
мир.ввод.клавиши[клавиша] = нажата;
for (var номер in мир.ввод.задано)
{
var задано = мир.ввод.задано[номер];
var клавиши = [];
for (var элемент in задано)
{
if (элемент.startsWith("клавиши"))
{
клавиши.push(задано[элемент]);
}
}
if (
клавиши.includes(клавиша) &&
задано.действие
) {
мир.действия.исполнить(задано.действие);
}
}
}