мир.ввод = {
    клавиши: {},
    задано: {},
};

// // // //


мир.ключники.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(клавиша) &&
            задано.действие
        ) {
            мир.действия.исполнить(задано.действие);
        }
    }
};
