I have the application with NativeActivity.
I wish to show onscreen keyboard and to listen to keys pressed. Everything works fine when I am typing in english, but when I switch keyboard to russian I receive only zeroes for keycode, metastate etc.
To show keyboard I use this code:
InputMethodManager imm = (InputMethodManager) activity.getSystemService( Context.INPUT_METHOD_SERVICE );
View view = activity.getWindow( ).getDecorView( );
imm.showSoftInput( view, 0 );
I am receiving keyboard events in onInputEvent function in NativeActivity:
int32_t eventType = AInputEvent_getType( event );
if( eventType == AINPUT_EVENT_TYPE_KEY )
{
int32_t keyAction = AKeyEvent_getAction( event );
int32_t keyCode = AKeyEvent_getKeyCode( event );
int32_t repeatCount = AKeyEvent_getRepeatCount( event );
int32_t keyFlags = AKeyEvent_getFlags( event );
int32_t keyScanCode = AKeyEvent_getScanCode( event );
int32_t keyMetaState = AKeyEvent_getMetaState( event );
LOGW( "EventType = AINPUT_EVENT_TYPE_KEY, keyAction = %d, keyCode = %d, repeatCount = %d, keyFlags = %d, keyScan = %d, keyMeta = %d", keyAction, keyCode, repeatCount, keyFlags, keyScanCode, keyMetaState );
}
And I am getting all event params as zeroes.
How can I solve this?
The KeyEvent documentation says:
As soft input methods can use multiple and inventive ways of inputting text, there is no guarantee that any key press on a soft keyboard will generate a key event: this is left to the IME's discretion, and in fact sending such events is discouraged. You should never rely on receiving KeyEvents for any key on a soft input method. In particular, the default software keyboard will never send any key event to any application targetting Jelly Bean or later, and will only send events for some presses of the delete and return keys to applications targetting Ice Cream Sandwich or earlier.