Идентификация нелатинских символов в андроиде

Я пытаюсь получить код нажатой клавиши в своей активности Android.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    char ch = (char) event.getUnicodeChar();
    return super.onKeyDown(keyCode, event);
}

но keyCode не зависит от раскладки клавиатуры. Для латинских символов это работает нормально, но для нелатинских символов, например. "П","Э","б"(русский) keyCode возвращает код латинского символа от нажатой клавиши. Кажется, этот код зависит только от клавиши, а не от раскладки клавиатуры.

Таким образом, клавиша с латинским символом G будет возвращать код клавиши G для каждой раскладки клавиатуры.

Как я могу это решить?


person Diaus    schedule 24.11.2013    source источник


Ответы (1)


Вы пытались использовать KeyCharacterMap, как описано здесь? Видеть:

http://developer.android.com/reference/android/view/KeyCharacterMap.html

Не удается получить метасостояние из Android KeyEvent

person ceyquem    schedule 24.11.2013
comment
keyCharacterMap ожидает целочисленного кода ключа. общественное логическое значение onKeyDown (int keyCode, событие KeyEvent) { KeyCharacterMap km = KeyCharacterMap.load (KeyCharacterMap.FULL); setNotification(+ km.getDisplayLabel(keyCode)); вернуть super.onKeyDown (keyCode, событие); } Но этот keyCode одинаков для всех раскладок клавиатуры - person Diaus; 24.11.2013
comment
мета-состояние используется для клавиш alt, ctrl, caps и т. д., а не для раскладок клавиатуры (языков) - person Diaus; 24.11.2013