Обнаружение серии сочетаний клавиш с помощью Javascript

Что касается праздника Пасхи, я бы хотел устроить небольшой сюрприз «Пасхальная охота на яйцо». на сайте, для которого я разрабатываю. Два из этих пятиEaster Eggs Я скрываюсь, будет назначено нажатие клавиши. Это не будет похоже на "одновременное нажатие клавиш CTRL и TAB". введите тип сделки, но она будет "Pres UP три раза, а затем - ПРАВА три раза". Тип вещи. Это будет искать серию нажатий клавиш вместо двух нажатий одновременно. Я настроил эту функцию, но по какой-то странной причине она работает не так, как должна.

NOTE: Сценарий ниже ищет следующие клавиши нажатия клавиш:
сюрприз1 - ВЛЕВО (x3), ВПРАВО (x3), ВВЕРХ (x3), ВНИЗ (x3)
сюрприз2 - SHIFT (x3), TAB (x3), CTRL (x3)

<code>$(document.body).keydown(function(e) {
            surprise1(e);
            surprise2(e);
});

function surprise1(e) {
    var ev = (e) ? e : window.event;
    var k = ev.keyCode;
    if (k > 36 && k < 41) {
        typekeys[k] = isNaN(typekeys[k]) ? 0 : typekeys[k];
        typekeys[k]++;
        if (typekeys[37] == 3) {
            if (typekeys[37] == 3 && typekeys[39] == 3) {
                if (typekeys[37] == 3 && typekeys[39] == 3 && typekeys[38] == 3) {
                    if (typekeys[37] == 3 && typekeys[39] == 3 && typekeys[38] == 3 && typekeys[40] == 3) {
                        alert("You've found Surprise 1! Contact the site admin ASAP to get your prize!");
                        typekeys[37] = typekeys[39] = typekeys[38] = typekeys[40] = 0;
                    }
                } else {
                    typekeys[40] = 0;
                }
            } else {
                typekeys[38] = typekeys[40] = 0;
            }
        } else {
            if (typekeys[37] > 3) {
                typekeys[37] = 0;
            }
            typekeys[39] = typekeys[38] = typekeys[40] = 0;
        }
    } else {
        typekeys[37] = typekeys[39] = typekeys[38] = typekeys[40] = 0;
    }
};

function surprise2(e) {
    var ev = (e) ? e : window.event;
    var k = ev.keyCode;
    if (k > 8 && k < 18) {
        typekeys[k] = isNaN(typekeys[k]) ? 0 : typekeys[k];
        typekeys[k]++;
        if (typekeys[16] == 3) {
            if (typekeys[9] == 3) {
                if (typekeys[16] == 3 && typekeys[9] == 3 && typekeys[17] == 3) {
                    alert("You've found Surprise 2! Contact the site admin ASAP to get your prize!");
                    typekeys[16] = typekeys[9] = typekeys[17] = 0;
                }
            }
        } else {
            if (typekeys[16] > 3) {
                typekeys[16] = 0;
            }
            typekeys[9] = typekeys[17] = 0;
        }
    } else {
        typekeys[16] = typekeys[9] = typekeys[17] = 0;
    }
};
</code>

Не могли бы вы мне сказать, почему это не работает? Мне кажется, это должно работать.

Ответы на вопрос(4)

Ваш ответ на вопрос