мир.ввод = { клавиши: {}, задано: {}, }; // // // // мир.ключники.push(function(ключ, путь, значение){ if (!ключ.startsWith("ввод")) { return; } var номер = путь[1]; if (!(номер in мир.ввод.задано)) { мир.ввод.задано[номер] = {}; } var свойство = путь.slice(2).join("."); мир.ввод.задано[номер][свойство] = значение; }); // // // // 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(клавиша) && задано.действие ) { мир.действия.исполнить(задано.действие); } } }