Há muitas maneiras de conseguir deixa cair para baixo efeitos do menu, mais de que exigir algum tipo da emenda. Você pode usar efeitos da tecla, ou rolar sobre e desenrolar eventos como o que você fêz. O problema com seu código é as interações entre teclas é completamente obscuro, por exemplo você adiciona o derrubamento do evento da tecla de superfície a uma função chamada floorOut. Quando é verdadeiro que quando você rola sobre a tecla de superfície, você quer a tecla do assoalho fechar-se, porém a maneira alimentadores de evento que é adicionado em toda parte introduz o código elevado do acoplamento, e os erros de lógica.
Eu modifiquei seu código um pouco e e os efeitos são completamente aprovados. Há um erro pequeno embora, aquele é às vezes quando você move o rato sobre e fora da tecla demasiado rapidamente, ele pode terminar acima ter o rato sobre a tecla mas o menu não está aberto. Eu posso viver com aquele. É fixável mas talvez não worth o esforço. Não sure sobre seu cliente embora.