2010-12-02 6 views
0

Я писал приложение для Android, которое в основном управляется аппаратным клавиатурным вводом. Я в процессе добавления поддержки мягкой клавиатуры, но я еще не совсем там. Но я отвлекся ...Управление Android KeyEvent - KeyCode или GetUnicodeChar?

Первоначально я проверял значение целочисленного значения KeyCode, переданное моей функции OnKey, против перечислений в классе KeyEvent. Достаточно просто ...

Но мне нужно знать, нажала ли пользователь комбинацию клавиш, которые будут генерировать символ>. Поэтому я проверил, были ли нажаты ALT и X keyCode ... но оказывается, что разные клавиши на разных телефонах генерируют символ>.

Теперь вместо этого я проверяю значение метода getUnicodeChar для KeyEvent относительно известных значений для символов Unicode.

Моя проблема решена - но есть ли принятый способ проверки символов? Большинство людей просто не нуждаются в ALT-символах, или большинство людей используют программные клавиатуры, которые являются стандартными для всех устройств? Нет встроенной таблицы перечислений символов Юникода (что я знаю, так или иначе), поэтому код становится немного уродливым. Просто любопытно!

ответ

0

Я считаю, что вы правы в том, что единственный способ определить, какой символ/альтернативный ключ был нажат, - это посмотреть на символ Юникода.

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

Вы не можете зависеть от какой-либо конкретной используемой IME (мягкой клавиатуры). Также обратите внимание, что текст, введенный через IME, осуществляется через текстовые виджеты с помощью InputConnection, поэтому он часто не использует KeyEvents, например, аппаратные клавиатуры.

Смежные вопросы