44
55#include " key_event_handler.h"
66
7- #include " flutter/shell/platform/tizen/flutter_tizen_engine.h "
7+ #include < app.h >
88
9- static constexpr char kPlatformBackButtonName [] = " XF86Back" ;
9+ #include " flutter/shell/platform/tizen/flutter_tizen_engine.h"
10+ #include " flutter/shell/platform/tizen/tizen_log.h"
1011
1112namespace flutter {
1213
14+ namespace {
15+
16+ constexpr char kBackKey [] = " XF86Back" ;
17+ constexpr char kExitKey [] = " XF86Exit" ;
18+
19+ } // namespace
20+
1321KeyEventHandler::KeyEventHandler (FlutterTizenEngine* engine) : engine_(engine) {
1422 key_event_handlers_.push_back (
1523 ecore_event_handler_add (ECORE_EVENT_KEY_DOWN, OnKey, this ));
@@ -30,24 +38,34 @@ Eina_Bool KeyEventHandler::OnKey(void* data, int type, void* event) {
3038 auto * engine = self->engine_ ;
3139 auto is_down = type == ECORE_EVENT_KEY_DOWN;
3240
33- if (strcmp (key->keyname , kPlatformBackButtonName ) == 0 ) {
34- // The device back button was pressed.
35- if (engine->navigation_channel && !is_down) {
36- engine->navigation_channel ->PopRoute ();
37- }
38- } else {
39- if (engine->text_input_channel ) {
40- if (is_down) {
41- engine->text_input_channel ->OnKeyDown (key);
42- }
43- if (engine->text_input_channel ->IsSoftwareKeyboardShowing ()) {
44- return ECORE_CALLBACK_PASS_ON;
45- }
41+ FT_LOGI (" Keycode: %d, name: %s, mods: %d, is_down: %d" , key->keycode ,
42+ key->keyname , key->modifiers , is_down);
43+
44+ if (engine->text_input_channel ) {
45+ if (is_down) {
46+ engine->text_input_channel ->OnKeyDown (key);
4647 }
47- if (engine->key_event_channel ) {
48- engine-> key_event_channel -> SendKeyEvent (key, is_down) ;
48+ if (engine->text_input_channel -> IsSoftwareKeyboardShowing () ) {
49+ return ECORE_CALLBACK_PASS_ON ;
4950 }
5051 }
52+
53+ if (engine->key_event_channel ) {
54+ engine->key_event_channel ->SendKeyEvent (
55+ key, is_down,
56+ [engine, keyname = std::string (key->keyname ), is_down](bool handled) {
57+ if (handled) {
58+ return ;
59+ }
60+ if (keyname == kBackKey && !is_down) {
61+ if (engine->navigation_channel ) {
62+ engine->navigation_channel ->PopRoute ();
63+ }
64+ } else if (keyname == kExitKey && !is_down) {
65+ ui_app_exit ();
66+ }
67+ });
68+ }
5169 return ECORE_CALLBACK_PASS_ON;
5270}
5371
0 commit comments