void _ecore_win32_event_handle_key_press(Ecore_Win32_Callback_Data *msg, int is_keystroke) { Ecore_Event_Key *e; INF("key pressed"); e = (Ecore_Event_Key *)calloc(1, sizeof(Ecore_Event_Key)); if (!e) return; if (is_keystroke) { if (!_ecore_win32_event_keystroke_get(msg, EINA_TRUE, (char **)&e->keyname, (char **)&e->key, (char **)&e->string, &e->modifiers)) { free(e); return; } } else { if (!_ecore_win32_event_char_get(LOWORD(msg->window_param), (char **)&e->keyname, (char **)&e->key, (char **)&e->string, &e->modifiers)) { free(e); return; } } e->window = (Ecore_Window)GetWindowLongPtr(msg->window, GWLP_USERDATA); if (!e->window) { free(e); return; } e->event_window = e->window; e->timestamp = msg->timestamp; _ecore_win32_event_last_time = e->timestamp; ecore_event_add(ECORE_EVENT_KEY_DOWN, e, _ecore_win32_event_free_key_down, NULL); }
void _ecore_win32_event_handle_key_release(Ecore_Win32_Callback_Data *msg, int is_keystroke) { Ecore_Event_Key *e; INF("key released"); e = (Ecore_Event_Key *)calloc(1, sizeof(Ecore_Event_Key)); if (!e) return; if (is_keystroke) { if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param), msg->data_param & 0x01000000, (char **)&e->keyname, (char **)&e->key, (char **)&e->string)) { free(e); return; } goto store_key; } else { if (!_ecore_win32_event_char_get(LOWORD(msg->window_param), (char **)&e->keyname, (char **)&e->key, (char **)&e->string)) { free(e); return; } } store_key: e->window = (Ecore_Window)GetWindowLongPtr(msg->window, GWL_USERDATA); if (!e->window) { free(e); return; } e->event_window = e->window; e->timestamp = msg->time; _ecore_win32_event_last_time = e->timestamp; ecore_event_add(ECORE_EVENT_KEY_UP, e, _ecore_win32_event_free_key_up, NULL); }
void _ecore_win32_event_handle_key_release(Ecore_Win32_Callback_Data *msg) { Ecore_Event_Key *e; INF("key released"); e = (Ecore_Event_Key *)calloc(1, sizeof(Ecore_Event_Key)); if (!e) return; if (!_ecore_win32_event_keystroke_get(msg, EINA_FALSE, (char **)&e->keyname, (char **)&e->key, (char **)&e->string, &e->modifiers)) { if (msg->discard_ctrl || !_ecore_win32_event_char_get(LOWORD(msg->window_param), (char **)&e->keyname, (char **)&e->key, (char **)&e->string, &e->modifiers)) { free(e); return; } } e->window = (Ecore_Window)GetWindowLongPtr(msg->window, GWLP_USERDATA); if (!e->window) { free(e); return; } e->event_window = e->window; e->timestamp = msg->timestamp; _ecore_win32_event_last_time = e->timestamp; ecore_event_add(ECORE_EVENT_KEY_UP, e, _ecore_win32_event_free_key_up, NULL); }