Я считаю плохой идеей считать нажатия клавиш для чего-то подобного. Мы говорим о вводе в текстовое поле, верно? Что вы будете делать, если пользователь вставит какую-нибудь строку из буфера обмена? Что если он использует мышь, чтобы пометить какой-нибудь текст и удалить его? Заменить его одним символом?
Я думаю, что было бы гораздо разумнее просто взглянуть на текст из текстового поля и (при необходимости) немного поиграть, чтобы обеспечить правильный синтаксис. Позвольте пользователю вводить все, что он хочет, если вы найдете мусорные символы, вы можете просто заменить текст на тот, который не имеет этих символов. Вы также можете обрезать поле в это время (без начальных или конечных пробелов). Кроме того, точное отслеживание длины становится таким же простым, как запрос длины строки, возвращаемой из поля.