Browse Source

Added super modifier bit.

Edited during merge.
Noel Cower 12 năm trước cách đây
mục cha
commit
eff85f9500
5 tập tin đã thay đổi với 13 bổ sung0 xóa
  1. 3 0
      include/GLFW/glfw3.h
  2. 2 0
      src/cocoa_window.m
  3. 4 0
      src/win32_window.c
  4. 2 0
      src/x11_window.c
  5. 2 0
      tests/events.c

+ 3 - 0
include/GLFW/glfw3.h

@@ -419,6 +419,9 @@ extern "C" {
 /*! @ingroup input
  */
 #define GLFW_MOD_ALT             0x0004
+/*! @ingroup input
+ */
+#define GLFW_MOD_SUPER           0x0008
 
 /*! @} */
 

+ 2 - 0
src/cocoa_window.m

@@ -213,6 +213,8 @@ static int convertKeyMods(NSUInteger flags)
         mods |= GLFW_MOD_CONTROL;
     if (flags & NSAlternateKeyMask)
         mods |= GLFW_MOD_ALT;
+    if (flags & NSCommandKeyMask)
+        mods |= GLFW_MOD_SUPER;
 
     return mods;
 }

+ 4 - 0
src/win32_window.c

@@ -116,6 +116,8 @@ static int getKeyMods(void)
         mods |= GLFW_MOD_CONTROL;
     if (GetKeyState(VK_MENU) & (1 << 31))
         mods |= GLFW_MOD_ALT;
+    if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & (1 << 31))
+        mods |= GLFW_MOD_SUPER;
 
     return mods;
 }
@@ -132,6 +134,8 @@ static int getAsyncKeyMods(void)
         mods |= GLFW_MOD_CONTROL;
     if (GetAsyncKeyState(VK_MENU) & (1 << 31))
         mods |= GLFW_MOD_ALT;
+    if ((GetAsyncKeyState(VK_LWIN) | GetAsyncKeyState(VK_RWIN)) & (1 << 31))
+        mods |= GLFW_MOD_SUPER;
 
     return mods;
 }

+ 2 - 0
src/x11_window.c

@@ -70,6 +70,8 @@ int translateState(int state)
         mods |= GLFW_MOD_CONTROL;
     if (state & Mod1Mask)
         mods |= GLFW_MOD_ALT;
+    if (state & Mod4Mask)
+        mods |= GLFW_MOD_SUPER;
 
     return mods;
 }

+ 2 - 0
tests/events.c

@@ -219,6 +219,8 @@ static const char* get_mods_name(int mods)
         strcat(name, " control");
     if (mods & GLFW_MOD_ALT)
         strcat(name, " alt");
+    if (mods & GLFW_MOD_SUPER)
+        strcat(name, " super");
 
     return name;
 }