@@ -118,6 +118,14 @@ static void in_received_put_key_event_handler(DictionaryIterator *received) {
118118 }
119119 event_flag_on_up = true;
120120 break ;
121+ case KEY_EVENT_ATTRIBUTE_ON_KEY_CHANGE :
122+ entry_log2 ( "ON_KEY_CHANGE" , "put_handler" ) ;
123+ if (window == NULL ) {
124+ key_event_window_init ();
125+ }
126+ event_flag_on_down = true;
127+ event_flag_on_up = true;
128+ break ;
121129 default :
122130 // not support
123131 pebble_set_error_code (ERROR_NOT_SUPPORT_ATTRIBUTE );
@@ -149,6 +157,14 @@ static void in_received_delete_key_event_handler(DictionaryIterator *received) {
149157 key_event_window_uninit ();
150158 }
151159 break ;
160+ case KEY_EVENT_ATTRIBUTE_ON_KEY_CHANGE :
161+ entry_log2 ( "ON_KEY_CHANGE" , "del_handler" ) ;
162+ event_flag_on_down = false;
163+ event_flag_on_up = false;
164+ if (event_flag_on_up == false && event_flag_on_down == false && window != NULL ) {
165+ key_event_window_uninit ();
166+ }
167+ break ;
152168 default :
153169 // not support
154170 entry_log ( "not support" , "orientation" ) ;
@@ -379,14 +395,18 @@ static void in_key_event_handler(int action, int keyID) {
379395 // Setting parameter to message queue.
380396 mq_kv_set (KEY_ACTION , ACTION_EVENT );
381397 mq_kv_set (KEY_PROFILE , PROFILE_KEY_EVENT );
382- mq_kv_set (KEY_PARAM_KEY_EVENT_KEY_TYPE , KeyType );
383- mq_kv_set (KEY_PARAM_KEY_EVENT_ID , keyID );
398+ mq_kv_set (KEY_PARAM_KEY_EVENT_KEY_TYPE , KeyType );
399+ mq_kv_set (KEY_PARAM_KEY_EVENT_ID , keyID );
400+ int state = KEY_PARAM_KEY_EVENT_KEY_STATE_UP ;
384401 switch (action ) {
385402 case KEY_EVENT_ACTION_DOWN :
403+ state = KEY_PARAM_KEY_EVENT_KEY_STATE_DOWN ;
386404 mq_kv_set (KEY_ATTRIBUTE , KEY_EVENT_ATTRIBUTE_ON_DOWN );
405+ mq_kv_set (KEY_PARAM_KEY_EVENT_KEY_STATE , state );
387406 break ;
388407 case KEY_EVENT_ACTION_UP :
389408 mq_kv_set (KEY_ATTRIBUTE , KEY_EVENT_ATTRIBUTE_ON_UP );
409+ mq_kv_set (KEY_PARAM_KEY_EVENT_KEY_STATE , state );
390410 break ;
391411 default :
392412 return ;
0 commit comments