diff --git a/legacy/ecore/ChangeLog b/legacy/ecore/ChangeLog index 6187370592..9cce3c9418 100644 --- a/legacy/ecore/ChangeLog +++ b/legacy/ecore/ChangeLog @@ -589,5 +589,5 @@ 2012-03-26 Shinwoo Kim - * Do not autorepeat Ctrl, Shift and Alt keys on Windows + * Do not autorepeat Ctrl, Shift, Alt and Win keys on Windows diff --git a/legacy/ecore/NEWS b/legacy/ecore/NEWS index 5d4ed62fc2..1adf4c003e 100644 --- a/legacy/ecore/NEWS +++ b/legacy/ecore/NEWS @@ -51,7 +51,7 @@ Fixes: * ecore_x: - ecore_x_randr_modes_info_get does not cut off the trailing '\0' anymore. * ecore_win32/wince: - - do not autorepeat Ctrl, Shift and Alt keys + - do not autorepeat Ctrl, Shift, Alt and Win keys Improvements: * ecore: diff --git a/legacy/ecore/src/lib/ecore_win32/ecore_win32_event.c b/legacy/ecore/src/lib/ecore_win32/ecore_win32_event.c index 348aaffc28..e0431a8e50 100644 --- a/legacy/ecore/src/lib/ecore_win32/ecore_win32_event.c +++ b/legacy/ecore/src/lib/ecore_win32/ecore_win32_event.c @@ -971,6 +971,7 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg, { if (is_down) { + if (previous_key_state) return 0; kn = "Super_L"; ks = "Super_L"; kc = ""; @@ -989,6 +990,7 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg, { if (is_down) { + if (previous_key_state) return 0; kn = "Super_R"; ks = "Super_R"; kc = ""; diff --git a/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c b/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c index f4c0a2a345..764304720c 100644 --- a/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c +++ b/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c @@ -411,6 +411,44 @@ _ecore_wince_event_keystroke_get(int key, } break; } + case VK_LWIN: + { + if (is_down) + { + if (previous_key_state) return 0; + kn = "Super_L"; + ks = "Super_L"; + kc = ""; + *modifiers |= ECORE_EVENT_MODIFIER_WIN; + } + else /* is_up */ + { + kn = "Super_L"; + ks = "Super_L"; + kc = ""; + *modifiers &= ~ECORE_EVENT_MODIFIER_WIN; + } + break; + } + case VK_RWIN: + { + if (is_down) + { + if (previous_key_state) return 0; + kn = "Super_R"; + ks = "Super_R"; + kc = ""; + *modifiers |= ECORE_EVENT_MODIFIER_WIN; + } + else /* is_up */ + { + kn = "Super_R"; + ks = "Super_R"; + kc = ""; + *modifiers &= ~ECORE_EVENT_MODIFIER_WIN; + } + break; + } default: /* other non keystroke characters */ return 0;