@@ -404,72 +404,61 @@ void TextInputChannel::SendStateUpdate(const TextInputModel& model) {
404404 channel_->InvokeMethod (kUpdateEditingStateMethod , std::move (args));
405405}
406406
407- bool TextInputChannel::FilterEvent (Ecore_Event_Key* keyDownEvent ) {
407+ bool TextInputChannel::FilterEvent (Ecore_Event_Key* event ) {
408408 bool handled = false ;
409409
410- #ifdef TIZEN_RENDERER_EVAS_GL
411- // Hardware keyboard not supported when running in Evas GL mode .
412- bool isIME = true ;
410+ #ifdef WEARABLE_PROFILE
411+ // Hardware keyboard not supported on watches .
412+ bool is_ime = true ;
413413#else
414- bool isIME = ecore_imf_context_keyboard_mode_get (imf_context_) ==
415- ECORE_IMF_INPUT_PANEL_SW_KEYBOARD_MODE;
414+ bool is_ime = strcmp (ecore_device_name_get (event->dev ), " ime" ) == 0 ;
416415#endif
417416
418- Ecore_IMF_Event_Key_Down ecoreKeyDownEvent;
419- ecoreKeyDownEvent.keyname = keyDownEvent->keyname ;
420- ecoreKeyDownEvent.key = keyDownEvent->key ;
421- ecoreKeyDownEvent.string = keyDownEvent->string ;
422- ecoreKeyDownEvent.compose = keyDownEvent->compose ;
423- ecoreKeyDownEvent.timestamp = keyDownEvent->timestamp ;
424- ecoreKeyDownEvent.modifiers =
425- EcoreInputModifierToEcoreIMFModifier (keyDownEvent->modifiers );
426- ecoreKeyDownEvent.locks =
427- EcoreInputModifierToEcoreIMFLock (keyDownEvent->modifiers );
428- ecoreKeyDownEvent.dev_name = isIME ? " ime" : " " ;
429- ecoreKeyDownEvent.keycode = keyDownEvent->keycode ;
430-
431- if (isIME && strcmp (keyDownEvent->key , " Select" ) == 0 ) {
417+ Ecore_IMF_Event_Key_Down imf_event;
418+ imf_event.keyname = event->keyname ;
419+ imf_event.key = event->key ;
420+ imf_event.string = event->string ;
421+ imf_event.compose = event->compose ;
422+ imf_event.timestamp = event->timestamp ;
423+ imf_event.modifiers = EcoreInputModifierToEcoreIMFModifier (event->modifiers );
424+ imf_event.locks = EcoreInputModifierToEcoreIMFLock (event->modifiers );
425+ imf_event.dev_name = is_ime ? " ime" : " " ;
426+ imf_event.keycode = event->keycode ;
427+
428+ if (is_ime && strcmp (event->key , " Select" ) == 0 ) {
432429 if (engine_->device_profile == DeviceProfile::kWearable ) {
433430 // FIXME: for wearable
434431 in_select_mode_ = true ;
435432 FT_LOGI (" Set select mode[true]" );
436433 }
437434 }
438435
439- if (isIME) {
440- if (!strcmp (keyDownEvent->key , " Left" ) ||
441- !strcmp (keyDownEvent->key , " Right" ) ||
442- !strcmp (keyDownEvent->key , " Up" ) ||
443- !strcmp (keyDownEvent->key , " Down" ) ||
444- !strcmp (keyDownEvent->key , " End" ) ||
445- !strcmp (keyDownEvent->key , " Home" ) ||
446- !strcmp (keyDownEvent->key , " BackSpace" ) ||
447- !strcmp (keyDownEvent->key , " Delete" ) ||
448- (!strcmp (keyDownEvent->key , " Select" ) && !in_select_mode_)) {
436+ if (is_ime) {
437+ if (!strcmp (event->key , " Left" ) || !strcmp (event->key , " Right" ) ||
438+ !strcmp (event->key , " Up" ) || !strcmp (event->key , " Down" ) ||
439+ !strcmp (event->key , " End" ) || !strcmp (event->key , " Home" ) ||
440+ !strcmp (event->key , " BackSpace" ) || !strcmp (event->key , " Delete" ) ||
441+ (!strcmp (event->key , " Select" ) && !in_select_mode_)) {
449442 // Force redirect to fallback!(especially on TV)
450443 // If you don't do this, it affects the input panel.
451444 // For example, when the left key of the input panel is pressed, the focus
452445 // of the input panel is shifted to left!
453446 // What we want is to move only the cursor on the text editor.
454447 ResetCurrentContext ();
455- FT_LOGW (" Force redirect IME key-event[%s] to fallback" ,
456- keyDownEvent->keyname );
448+ FT_LOGW (" Force redirect IME key-event[%s] to fallback" , event->keyname );
457449 return false ;
458450 }
459451 }
460452
461453 handled = ecore_imf_context_filter_event (
462454 imf_context_, ECORE_IMF_EVENT_KEY_DOWN,
463- reinterpret_cast <Ecore_IMF_Event*>(&ecoreKeyDownEvent ));
455+ reinterpret_cast <Ecore_IMF_Event*>(&imf_event ));
464456
465457 if (handled) {
466- last_handled_ecore_event_keyname_ = keyDownEvent ->keyname ;
458+ last_handled_ecore_event_keyname_ = event ->keyname ;
467459 }
468460
469- FT_LOGI (" The %skey-event[%s] are%s filtered" , isIME ? " IME " : " " ,
470- keyDownEvent->keyname , handled ? " " : " not" );
471-
472- if (!handled && !strcmp (keyDownEvent->key , " Return" ) && in_select_mode_ &&
461+ if (!handled && !strcmp (event->key , " Return" ) && in_select_mode_ &&
473462 engine_->device_profile == DeviceProfile::kWearable ) {
474463 in_select_mode_ = false ;
475464 handled = true ;
@@ -479,61 +468,58 @@ bool TextInputChannel::FilterEvent(Ecore_Event_Key* keyDownEvent) {
479468 return handled;
480469}
481470
482- void TextInputChannel::NonIMFFallback (Ecore_Event_Key* keyDownEvent) {
483- FT_LOGI (" NonIMFFallback key name [%s]" , keyDownEvent->keyname );
484-
471+ void TextInputChannel::NonIMFFallback (Ecore_Event_Key* event) {
485472 // For mobile, fix me!
486473 if (engine_->device_profile == DeviceProfile::kMobile &&
487474 edit_status_ == EditStatus::kPreeditEnd ) {
488475 SetEditStatus (EditStatus::kNone );
489- FT_LOGW (" Ignore key-event[%s]!" , keyDownEvent ->keyname );
476+ FT_LOGW (" Ignore key-event[%s]!" , event ->keyname );
490477 return ;
491478 }
492479
493- bool select = !strcmp (keyDownEvent ->key , " Select" );
480+ bool select = !strcmp (event ->key , " Select" );
494481 bool is_filtered = true ;
495- if (!strcmp (keyDownEvent ->key , " Left" )) {
482+ if (!strcmp (event ->key , " Left" )) {
496483 if (active_model_ && active_model_->MoveCursorBack ()) {
497484 SendStateUpdate (*active_model_);
498485 }
499- } else if (!strcmp (keyDownEvent ->key , " Right" )) {
486+ } else if (!strcmp (event ->key , " Right" )) {
500487 if (active_model_ && active_model_->MoveCursorForward ()) {
501488 SendStateUpdate (*active_model_);
502489 }
503- } else if (!strcmp (keyDownEvent ->key , " End" )) {
490+ } else if (!strcmp (event ->key , " End" )) {
504491 if (active_model_) {
505492 active_model_->MoveCursorToEnd ();
506493 SendStateUpdate (*active_model_);
507494 }
508- } else if (!strcmp (keyDownEvent ->key , " Home" )) {
495+ } else if (!strcmp (event ->key , " Home" )) {
509496 if (active_model_) {
510497 active_model_->MoveCursorToBeginning ();
511498 SendStateUpdate (*active_model_);
512499 }
513- } else if (!strcmp (keyDownEvent ->key , " BackSpace" )) {
500+ } else if (!strcmp (event ->key , " BackSpace" )) {
514501 if (active_model_ && active_model_->Backspace ()) {
515502 SendStateUpdate (*active_model_);
516503 }
517- } else if (!strcmp (keyDownEvent ->key , " Delete" )) {
504+ } else if (!strcmp (event ->key , " Delete" )) {
518505 if (active_model_ && active_model_->Delete ()) {
519506 SendStateUpdate (*active_model_);
520507 }
521- } else if (!strcmp (keyDownEvent->key , " Return" ) ||
522- (select && !in_select_mode_)) {
508+ } else if (!strcmp (event->key , " Return" ) || (select && !in_select_mode_)) {
523509 if (active_model_) {
524510 EnterPressed (active_model_.get (), select);
525511 }
526- } else if (keyDownEvent ->string && strlen (keyDownEvent ->string ) == 1 &&
527- IsASCIIPrintableKey (keyDownEvent ->string [0 ])) {
512+ } else if (event ->string && strlen (event ->string ) == 1 &&
513+ IsASCIIPrintableKey (event ->string [0 ])) {
528514 if (active_model_) {
529- active_model_->AddCodePoint (keyDownEvent ->string [0 ]);
515+ active_model_->AddCodePoint (event ->string [0 ]);
530516 SendStateUpdate (*active_model_);
531517 }
532518 } else {
533519 is_filtered = false ;
534520 }
535521 if (!active_model_ && is_filtered) {
536- engine_->platform_view_channel ->SendKeyEvent (keyDownEvent , true );
522+ engine_->platform_view_channel ->SendKeyEvent (event , true );
537523 }
538524 SetEditStatus (EditStatus::kNone );
539525}
0 commit comments