Ecore_Win32/WinCE: also do not autorepeat the Win key
authorcaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 26 Mar 2012 17:33:10 +0000 (17:33 +0000)
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 26 Mar 2012 17:33:10 +0000 (17:33 +0000)
Patch by Shinwoo Kim

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@69638 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/lib/ecore_win32/ecore_win32_event.c
src/lib/ecore_wince/ecore_wince_event.c

index 6187370..9cce3c9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
 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/NEWS b/NEWS
index 5d4ed62..1adf4c0 100644 (file)
--- a/NEWS
+++ b/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:
index 348aaff..e0431a8 100644 (file)
@@ -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 = "";
index f4c0a2a..7643047 100644 (file)
@@ -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;