У меня полноэкранное действие OpenGL, и я пытаюсь получить ввод с виртуальной клавиатуры.
Я пока ничего не делаю с вводом с клавиатуры, просто выхожу из системы, но я заметил некоторые очень странныеповедение.
Если я просто нажимаю клавишу, я нажимаю клавишу, после чего происходит событие нажатия клавиши без флагов, и все довольны.
Если я нажимаю и удерживаю клавишу, чтобы получитьальтернативная клавиша, например, удерживая «h», чтобы получить «&», я немедленно нажимаю клавишу «вниз», и клавишу «h».Когда я отпускаю, я нажимаю клавишу для смены, нажимаю клавишу «&», нажимаю клавишу «&» и затем нажимаю клавишу «shift».
Пять из этих шести событий в точности соответствуют ожиданиям.Клавиша «h» будет иметь смысл, если будет установлено FLAG_CANCELED
, но getFlags()
возвращает ноль, а isCanceled()
возвращает ложь.Кажется, в событии key up нет ничего, что указывало бы на то, что пользователь еще не отпустил ключ.
У меня такое же поведение с onKeyUp
и dispatchKeyEvent
.
Я тоже получаю такое же странное поведение, если сразу же провожу пальцем от одной клавиши к другой.Я получаю ключ вниз и ключ вверх для исходного ключа, а затем ключ вниз и ключ вверх для ключа, на котором я заканчиваю слайд, и я не могу найти ничего, что указывало бы на то, что первый ключ вверх должен игнорироваться.
Моим тестовым устройством является HTC Evo 4G под управлением Android 2.3.3, и я работаю с API уровня 9.
Обновление:
Больше странностей ... Backspaceклавиша посылает клавишу вниз и клавишу вверх, когда клавиатура находится в алфавитном режиме.В символьном режиме он только посылает ключ вниз.