Как я могу обнаружить ошибочные KeyEvent's? - PullRequest
2 голосов
/ 15 ноября 2011

У меня полноэкранное действие OpenGL, и я пытаюсь получить ввод с виртуальной клавиатуры.

Я пока ничего не делаю с вводом с клавиатуры, просто выхожу из системы, но я заметил некоторые очень странныеповедение.

Если я просто нажимаю клавишу, я нажимаю клавишу, после чего происходит событие нажатия клавиши без флагов, и все довольны.

Если я нажимаю и удерживаю клавишу, чтобы получитьальтернативная клавиша, например, удерживая «h», чтобы получить «&», я немедленно нажимаю клавишу «вниз», и клавишу «h».Когда я отпускаю, я нажимаю клавишу для смены, нажимаю клавишу «&», нажимаю клавишу «&» и затем нажимаю клавишу «shift».

Пять из этих шести событий в точности соответствуют ожиданиям.Клавиша «h» будет иметь смысл, если будет установлено FLAG_CANCELED, но getFlags() возвращает ноль, а isCanceled() возвращает ложь.Кажется, в событии key up нет ничего, что указывало бы на то, что пользователь еще не отпустил ключ.

У меня такое же поведение с onKeyUp и dispatchKeyEvent.

Я тоже получаю такое же странное поведение, если сразу же провожу пальцем от одной клавиши к другой.Я получаю ключ вниз и ключ вверх для исходного ключа, а затем ключ вниз и ключ вверх для ключа, на котором я заканчиваю слайд, и я не могу найти ничего, что указывало бы на то, что первый ключ вверх должен игнорироваться.

Моим тестовым устройством является HTC Evo 4G под управлением Android 2.3.3, и я работаю с API уровня 9.

Обновление:

Больше странностей ... Backspaceклавиша посылает клавишу вниз и клавишу вверх, когда клавиатура находится в алфавитном режиме.В символьном режиме он только посылает ключ вниз.

...