win32_init.c
Go to the documentation of this file.
1 //========================================================================
2 // GLFW 3.1 Win32 - www.glfw.org
3 //------------------------------------------------------------------------
4 // Copyright (c) 2002-2006 Marcus Geelnard
5 // Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
6 //
7 // This software is provided 'as-is', without any express or implied
8 // warranty. In no event will the authors be held liable for any damages
9 // arising from the use of this software.
10 //
11 // Permission is granted to anyone to use this software for any purpose,
12 // including commercial applications, and to alter it and redistribute it
13 // freely, subject to the following restrictions:
14 //
15 // 1. The origin of this software must not be misrepresented; you must not
16 // claim that you wrote the original software. If you use this software
17 // in a product, an acknowledgment in the product documentation would
18 // be appreciated but is not required.
19 //
20 // 2. Altered source versions must be plainly marked as such, and must not
21 // be misrepresented as being the original software.
22 //
23 // 3. This notice may not be removed or altered from any source
24 // distribution.
25 //
26 //========================================================================
27 
28 #include "internal.h"
29 
30 #include <stdlib.h>
31 #include <malloc.h>
32 
33 
34 #if defined(_GLFW_USE_HYBRID_HPG) || defined(_GLFW_USE_OPTIMUS_HPG)
35 
36 // Applications exporting this symbol with this value will be automatically
37 // directed to the high-performance GPU on Nvidia Optimus systems with
38 // up-to-date drivers
39 //
40 __declspec(dllexport) DWORD NvOptimusEnablement = 1;
41 
42 // Applications exporting this symbol with this value will be automatically
43 // directed to the high-performance GPU on AMD PowerXpress systems with
44 // up-to-date drivers
45 //
46 __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
47 
48 #endif // _GLFW_USE_HYBRID_HPG
49 
50 #if defined(_GLFW_BUILD_DLL)
51 
52 // GLFW DLL entry point
53 //
54 BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
55 {
56  return TRUE;
57 }
58 
59 #endif // _GLFW_BUILD_DLL
60 
61 // Load necessary libraries (DLLs)
62 //
64 {
65  _glfw.win32.winmm.instance = LoadLibraryW(L"winmm.dll");
66  if (!_glfw.win32.winmm.instance)
67  {
69  "Win32: Failed to load winmm.dll");
70  return GL_FALSE;
71  }
72 
73  _glfw.win32.winmm.joyGetDevCaps = (JOYGETDEVCAPS_T)
74  GetProcAddress(_glfw.win32.winmm.instance, "joyGetDevCapsW");
75  _glfw.win32.winmm.joyGetPos = (JOYGETPOS_T)
76  GetProcAddress(_glfw.win32.winmm.instance, "joyGetPos");
77  _glfw.win32.winmm.joyGetPosEx = (JOYGETPOSEX_T)
78  GetProcAddress(_glfw.win32.winmm.instance, "joyGetPosEx");
79  _glfw.win32.winmm.timeGetTime = (TIMEGETTIME_T)
80  GetProcAddress(_glfw.win32.winmm.instance, "timeGetTime");
81 
82  if (!_glfw.win32.winmm.joyGetDevCaps ||
83  !_glfw.win32.winmm.joyGetPos ||
84  !_glfw.win32.winmm.joyGetPosEx ||
85  !_glfw.win32.winmm.timeGetTime)
86  {
88  "Win32: Failed to load winmm functions");
89  return GL_FALSE;
90  }
91 
92  _glfw.win32.user32.instance = LoadLibraryW(L"user32.dll");
93  if (_glfw.win32.user32.instance)
94  {
95  _glfw.win32.user32.SetProcessDPIAware = (SETPROCESSDPIAWARE_T)
96  GetProcAddress(_glfw.win32.user32.instance, "SetProcessDPIAware");
97  _glfw.win32.user32.ChangeWindowMessageFilterEx = (CHANGEWINDOWMESSAGEFILTEREX_T)
98  GetProcAddress(_glfw.win32.user32.instance, "ChangeWindowMessageFilterEx");
99  }
100 
101  _glfw.win32.dwmapi.instance = LoadLibraryW(L"dwmapi.dll");
102  if (_glfw.win32.dwmapi.instance)
103  {
104  _glfw.win32.dwmapi.DwmIsCompositionEnabled = (DWMISCOMPOSITIONENABLED_T)
105  GetProcAddress(_glfw.win32.dwmapi.instance, "DwmIsCompositionEnabled");
106  _glfw.win32.dwmapi.DwmFlush = (DWMFLUSH_T)
107  GetProcAddress(_glfw.win32.dwmapi.instance, "DwmFlush");
108  }
109 
110  return GL_TRUE;
111 }
112 
113 // Unload used libraries (DLLs)
114 //
115 static void terminateLibraries(void)
116 {
117  if (_glfw.win32.winmm.instance)
118  FreeLibrary(_glfw.win32.winmm.instance);
119 
120  if (_glfw.win32.user32.instance)
121  FreeLibrary(_glfw.win32.user32.instance);
122 
123  if (_glfw.win32.dwmapi.instance)
124  FreeLibrary(_glfw.win32.dwmapi.instance);
125 }
126 
127 // Create key code translation tables
128 //
129 static void createKeyTables(void)
130 {
131  memset(_glfw.win32.publicKeys, -1, sizeof(_glfw.win32.publicKeys));
132 
133  _glfw.win32.publicKeys[0x00B] = GLFW_KEY_0;
134  _glfw.win32.publicKeys[0x002] = GLFW_KEY_1;
135  _glfw.win32.publicKeys[0x003] = GLFW_KEY_2;
136  _glfw.win32.publicKeys[0x004] = GLFW_KEY_3;
137  _glfw.win32.publicKeys[0x005] = GLFW_KEY_4;
138  _glfw.win32.publicKeys[0x006] = GLFW_KEY_5;
139  _glfw.win32.publicKeys[0x007] = GLFW_KEY_6;
140  _glfw.win32.publicKeys[0x008] = GLFW_KEY_7;
141  _glfw.win32.publicKeys[0x009] = GLFW_KEY_8;
142  _glfw.win32.publicKeys[0x00A] = GLFW_KEY_9;
143  _glfw.win32.publicKeys[0x01E] = GLFW_KEY_A;
144  _glfw.win32.publicKeys[0x030] = GLFW_KEY_B;
145  _glfw.win32.publicKeys[0x02E] = GLFW_KEY_C;
146  _glfw.win32.publicKeys[0x020] = GLFW_KEY_D;
147  _glfw.win32.publicKeys[0x012] = GLFW_KEY_E;
148  _glfw.win32.publicKeys[0x021] = GLFW_KEY_F;
149  _glfw.win32.publicKeys[0x022] = GLFW_KEY_G;
150  _glfw.win32.publicKeys[0x023] = GLFW_KEY_H;
151  _glfw.win32.publicKeys[0x017] = GLFW_KEY_I;
152  _glfw.win32.publicKeys[0x024] = GLFW_KEY_J;
153  _glfw.win32.publicKeys[0x025] = GLFW_KEY_K;
154  _glfw.win32.publicKeys[0x026] = GLFW_KEY_L;
155  _glfw.win32.publicKeys[0x032] = GLFW_KEY_M;
156  _glfw.win32.publicKeys[0x031] = GLFW_KEY_N;
157  _glfw.win32.publicKeys[0x018] = GLFW_KEY_O;
158  _glfw.win32.publicKeys[0x019] = GLFW_KEY_P;
159  _glfw.win32.publicKeys[0x010] = GLFW_KEY_Q;
160  _glfw.win32.publicKeys[0x013] = GLFW_KEY_R;
161  _glfw.win32.publicKeys[0x01F] = GLFW_KEY_S;
162  _glfw.win32.publicKeys[0x014] = GLFW_KEY_T;
163  _glfw.win32.publicKeys[0x016] = GLFW_KEY_U;
164  _glfw.win32.publicKeys[0x02F] = GLFW_KEY_V;
165  _glfw.win32.publicKeys[0x011] = GLFW_KEY_W;
166  _glfw.win32.publicKeys[0x02D] = GLFW_KEY_X;
167  _glfw.win32.publicKeys[0x015] = GLFW_KEY_Y;
168  _glfw.win32.publicKeys[0x02C] = GLFW_KEY_Z;
169 
170  _glfw.win32.publicKeys[0x028] = GLFW_KEY_APOSTROPHE;
171  _glfw.win32.publicKeys[0x02B] = GLFW_KEY_BACKSLASH;
172  _glfw.win32.publicKeys[0x033] = GLFW_KEY_COMMA;
173  _glfw.win32.publicKeys[0x00D] = GLFW_KEY_EQUAL;
174  _glfw.win32.publicKeys[0x029] = GLFW_KEY_GRAVE_ACCENT;
175  _glfw.win32.publicKeys[0x01A] = GLFW_KEY_LEFT_BRACKET;
176  _glfw.win32.publicKeys[0x00C] = GLFW_KEY_MINUS;
177  _glfw.win32.publicKeys[0x034] = GLFW_KEY_PERIOD;
178  _glfw.win32.publicKeys[0x01B] = GLFW_KEY_RIGHT_BRACKET;
179  _glfw.win32.publicKeys[0x027] = GLFW_KEY_SEMICOLON;
180  _glfw.win32.publicKeys[0x035] = GLFW_KEY_SLASH;
181  _glfw.win32.publicKeys[0x056] = GLFW_KEY_WORLD_2;
182 
183  _glfw.win32.publicKeys[0x00E] = GLFW_KEY_BACKSPACE;
184  _glfw.win32.publicKeys[0x153] = GLFW_KEY_DELETE;
185  _glfw.win32.publicKeys[0x14F] = GLFW_KEY_END;
186  _glfw.win32.publicKeys[0x01C] = GLFW_KEY_ENTER;
187  _glfw.win32.publicKeys[0x001] = GLFW_KEY_ESCAPE;
188  _glfw.win32.publicKeys[0x147] = GLFW_KEY_HOME;
189  _glfw.win32.publicKeys[0x152] = GLFW_KEY_INSERT;
190  _glfw.win32.publicKeys[0x15D] = GLFW_KEY_MENU;
191  _glfw.win32.publicKeys[0x151] = GLFW_KEY_PAGE_DOWN;
192  _glfw.win32.publicKeys[0x149] = GLFW_KEY_PAGE_UP;
193  _glfw.win32.publicKeys[0x045] = GLFW_KEY_PAUSE;
194  _glfw.win32.publicKeys[0x039] = GLFW_KEY_SPACE;
195  _glfw.win32.publicKeys[0x00F] = GLFW_KEY_TAB;
196  _glfw.win32.publicKeys[0x03A] = GLFW_KEY_CAPS_LOCK;
197  _glfw.win32.publicKeys[0x145] = GLFW_KEY_NUM_LOCK;
198  _glfw.win32.publicKeys[0x046] = GLFW_KEY_SCROLL_LOCK;
199  _glfw.win32.publicKeys[0x03B] = GLFW_KEY_F1;
200  _glfw.win32.publicKeys[0x03C] = GLFW_KEY_F2;
201  _glfw.win32.publicKeys[0x03D] = GLFW_KEY_F3;
202  _glfw.win32.publicKeys[0x03E] = GLFW_KEY_F4;
203  _glfw.win32.publicKeys[0x03F] = GLFW_KEY_F5;
204  _glfw.win32.publicKeys[0x040] = GLFW_KEY_F6;
205  _glfw.win32.publicKeys[0x041] = GLFW_KEY_F7;
206  _glfw.win32.publicKeys[0x042] = GLFW_KEY_F8;
207  _glfw.win32.publicKeys[0x043] = GLFW_KEY_F9;
208  _glfw.win32.publicKeys[0x044] = GLFW_KEY_F10;
209  _glfw.win32.publicKeys[0x057] = GLFW_KEY_F11;
210  _glfw.win32.publicKeys[0x058] = GLFW_KEY_F12;
211  _glfw.win32.publicKeys[0x064] = GLFW_KEY_F13;
212  _glfw.win32.publicKeys[0x065] = GLFW_KEY_F14;
213  _glfw.win32.publicKeys[0x066] = GLFW_KEY_F15;
214  _glfw.win32.publicKeys[0x067] = GLFW_KEY_F16;
215  _glfw.win32.publicKeys[0x068] = GLFW_KEY_F17;
216  _glfw.win32.publicKeys[0x069] = GLFW_KEY_F18;
217  _glfw.win32.publicKeys[0x06A] = GLFW_KEY_F19;
218  _glfw.win32.publicKeys[0x06B] = GLFW_KEY_F20;
219  _glfw.win32.publicKeys[0x06C] = GLFW_KEY_F21;
220  _glfw.win32.publicKeys[0x06D] = GLFW_KEY_F22;
221  _glfw.win32.publicKeys[0x06E] = GLFW_KEY_F23;
222  _glfw.win32.publicKeys[0x076] = GLFW_KEY_F24;
223  _glfw.win32.publicKeys[0x038] = GLFW_KEY_LEFT_ALT;
224  _glfw.win32.publicKeys[0x01D] = GLFW_KEY_LEFT_CONTROL;
225  _glfw.win32.publicKeys[0x02A] = GLFW_KEY_LEFT_SHIFT;
226  _glfw.win32.publicKeys[0x15B] = GLFW_KEY_LEFT_SUPER;
227  _glfw.win32.publicKeys[0x137] = GLFW_KEY_PRINT_SCREEN;
228  _glfw.win32.publicKeys[0x138] = GLFW_KEY_RIGHT_ALT;
229  _glfw.win32.publicKeys[0x11D] = GLFW_KEY_RIGHT_CONTROL;
230  _glfw.win32.publicKeys[0x036] = GLFW_KEY_RIGHT_SHIFT;
231  _glfw.win32.publicKeys[0x15C] = GLFW_KEY_RIGHT_SUPER;
232  _glfw.win32.publicKeys[0x150] = GLFW_KEY_DOWN;
233  _glfw.win32.publicKeys[0x14B] = GLFW_KEY_LEFT;
234  _glfw.win32.publicKeys[0x14D] = GLFW_KEY_RIGHT;
235  _glfw.win32.publicKeys[0x148] = GLFW_KEY_UP;
236 
237  _glfw.win32.publicKeys[0x052] = GLFW_KEY_KP_0;
238  _glfw.win32.publicKeys[0x04F] = GLFW_KEY_KP_1;
239  _glfw.win32.publicKeys[0x050] = GLFW_KEY_KP_2;
240  _glfw.win32.publicKeys[0x051] = GLFW_KEY_KP_3;
241  _glfw.win32.publicKeys[0x04B] = GLFW_KEY_KP_4;
242  _glfw.win32.publicKeys[0x04C] = GLFW_KEY_KP_5;
243  _glfw.win32.publicKeys[0x04D] = GLFW_KEY_KP_6;
244  _glfw.win32.publicKeys[0x047] = GLFW_KEY_KP_7;
245  _glfw.win32.publicKeys[0x048] = GLFW_KEY_KP_8;
246  _glfw.win32.publicKeys[0x049] = GLFW_KEY_KP_9;
247  _glfw.win32.publicKeys[0x04E] = GLFW_KEY_KP_ADD;
248  _glfw.win32.publicKeys[0x053] = GLFW_KEY_KP_DECIMAL;
249  _glfw.win32.publicKeys[0x135] = GLFW_KEY_KP_DIVIDE;
250  _glfw.win32.publicKeys[0x11C] = GLFW_KEY_KP_ENTER;
251  _glfw.win32.publicKeys[0x037] = GLFW_KEY_KP_MULTIPLY;
252  _glfw.win32.publicKeys[0x04A] = GLFW_KEY_KP_SUBTRACT;
253 }
254 
255 
259 
260 // Returns whether desktop compositing is enabled
261 //
263 {
264  BOOL enabled;
265 
267  return FALSE;
268 
269  if (_glfw_DwmIsCompositionEnabled(&enabled) != S_OK)
270  return FALSE;
271 
272  return enabled;
273 }
274 
275 // Returns a wide string version of the specified UTF-8 string
276 //
278 {
279  WCHAR* target;
280  int length;
281 
282  length = MultiByteToWideChar(CP_UTF8, 0, source, -1, NULL, 0);
283  if (!length)
284  return NULL;
285 
286  target = calloc(length, sizeof(WCHAR));
287 
288  if (!MultiByteToWideChar(CP_UTF8, 0, source, -1, target, length))
289  {
290  free(target);
291  return NULL;
292  }
293 
294  return target;
295 }
296 
297 // Returns a UTF-8 string version of the specified wide string
298 //
300 {
301  char* target;
302  int length;
303 
304  length = WideCharToMultiByte(CP_UTF8, 0, source, -1, NULL, 0, NULL, NULL);
305  if (!length)
306  return NULL;
307 
308  target = calloc(length, sizeof(char));
309 
310  if (!WideCharToMultiByte(CP_UTF8, 0, source, -1, target, length, NULL, NULL))
311  {
312  free(target);
313  return NULL;
314  }
315 
316  return target;
317 }
318 
319 
323 
325 {
326  // To make SetForegroundWindow work as we want, we need to fiddle
327  // with the FOREGROUNDLOCKTIMEOUT system setting (we do this as early
328  // as possible in the hope of still being the foreground process)
329  SystemParametersInfoW(SPI_GETFOREGROUNDLOCKTIMEOUT, 0,
330  &_glfw.win32.foregroundLockTimeout, 0);
331  SystemParametersInfoW(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, UIntToPtr(0),
332  SPIF_SENDCHANGE);
333 
334  if (!initLibraries())
335  return GL_FALSE;
336 
337  createKeyTables();
338 
341 
343  return GL_FALSE;
344 
345  if (!_glfwInitContextAPI())
346  return GL_FALSE;
347 
348  _glfwInitTimer();
350 
351  return GL_TRUE;
352 }
353 
355 {
357 
358  // Restore previous foreground lock timeout system setting
359  SystemParametersInfoW(SPI_SETFOREGROUNDLOCKTIMEOUT, 0,
360  UIntToPtr(_glfw.win32.foregroundLockTimeout),
361  SPIF_SENDCHANGE);
362 
363  free(_glfw.win32.clipboardString);
364 
368 }
369 
371 {
372  return _GLFW_VERSION_NUMBER " Win32"
373 #if defined(_GLFW_WGL)
374  " WGL"
375 #elif defined(_GLFW_EGL)
376  " EGL"
377 #endif
378 #if defined(__MINGW32__)
379  " MinGW"
380 #elif defined(_MSC_VER)
381  " VisualC"
382 #endif
383 #if defined(_GLFW_USE_HYBRID_HPG) || defined(_GLFW_USE_OPTIMUS_HPG)
384  " hybrid-GPU"
385 #endif
386 #if defined(_GLFW_BUILD_DLL)
387  " DLL"
388 #endif
389  ;
390 }
391 
#define GLFW_KEY_SCROLL_LOCK
Definition: glfw3.h:336
#define GLFW_KEY_KP_1
Definition: glfw3.h:366
static void createKeyTables(void)
Definition: win32_init.c:129
#define GLFW_KEY_F6
Definition: glfw3.h:345
#define GLFW_KEY_F14
Definition: glfw3.h:353
#define GLFW_KEY_RIGHT_CONTROL
Definition: glfw3.h:387
#define GLFW_KEY_INSERT
Definition: glfw3.h:325
#define GLFW_KEY_KP_DIVIDE
Definition: glfw3.h:376
MMRESULT(WINAPI * JOYGETDEVCAPS_T)(UINT, LPJOYCAPS, UINT)
#define GLFW_KEY_LEFT
Definition: glfw3.h:328
#define GLFW_KEY_I
Definition: glfw3.h:295
#define GLFW_KEY_F
Definition: glfw3.h:292
#define GLFW_KEY_KP_5
Definition: glfw3.h:370
#define _GLFW_VERSION_NUMBER
Definition: internal.h:36
void _glfwInitTimer(void)
Definition: win32_time.c:52
#define GLFW_KEY_SEMICOLON
Definition: glfw3.h:285
#define GLFW_KEY_KP_3
Definition: glfw3.h:368
#define GLFW_KEY_PERIOD
Definition: glfw3.h:273
#define GLFW_KEY_UP
Definition: glfw3.h:330
#define GLFW_KEY_KP_6
Definition: glfw3.h:371
#define GLFW_KEY_X
Definition: glfw3.h:310
#define GLFW_KEY_6
Definition: glfw3.h:281
#define GLFW_KEY_GRAVE_ACCENT
Definition: glfw3.h:316
#define GLFW_KEY_SPACE
Definition: glfw3.h:269
#define GLFW_KEY_WORLD_2
Definition: glfw3.h:318
#define _glfw_SetProcessDPIAware
#define GLFW_KEY_PAUSE
Definition: glfw3.h:339
void _glfwTerminateContextAPI(void)
Definition: wgl_context.c:312
#define GLFW_KEY_KP_2
Definition: glfw3.h:367
#define GLFW_KEY_F7
Definition: glfw3.h:346
#define GLFW_KEY_LEFT_SHIFT
Definition: glfw3.h:382
#define GLFW_KEY_F8
Definition: glfw3.h:347
#define GLFW_KEY_8
Definition: glfw3.h:283
const char * _glfwPlatformGetVersionString(void)
Returns a string describing the compile-time configuration.
Definition: win32_init.c:370
#define GLFW_KEY_P
Definition: glfw3.h:302
#define GLFW_KEY_PAGE_DOWN
Definition: glfw3.h:332
#define GLFW_KEY_F2
Definition: glfw3.h:341
#define GLFW_KEY_LEFT_BRACKET
Definition: glfw3.h:313
#define GLFW_KEY_HOME
Definition: glfw3.h:333
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glext.h:2478
int _glfwPlatformInit(void)
Initializes the platform-specific part of the library.
Definition: win32_init.c:324
#define GLFW_KEY_K
Definition: glfw3.h:297
void _glfwPlatformTerminate(void)
Terminates the platform-specific part of the library.
Definition: win32_init.c:354
#define GLFW_KEY_E
Definition: glfw3.h:291
#define GLFW_KEY_PAGE_UP
Definition: glfw3.h:331
_GLFWlibrary _glfw
All global data protected by _glfwInitialized. This should only be touched after a call to glfwInit t...
GLboolean _glfwRegisterWindowClass(void)
Definition: win32_window.c:753
#define GLFW_KEY_Z
Definition: glfw3.h:312
#define GLFW_KEY_B
Definition: glfw3.h:288
#define GLFW_KEY_7
Definition: glfw3.h:282
#define GLFW_KEY_BACKSPACE
Definition: glfw3.h:324
#define GLFW_KEY_H
Definition: glfw3.h:294
#define GLFW_KEY_A
Definition: glfw3.h:287
BOOL(WINAPI * SETPROCESSDPIAWARE_T)(void)
#define GLFW_KEY_F15
Definition: glfw3.h:354
#define GLFW_KEY_V
Definition: glfw3.h:308
#define GLFW_KEY_F13
Definition: glfw3.h:352
#define GLFW_KEY_KP_DECIMAL
Definition: glfw3.h:375
void _glfwInitJoysticks(void)
#define GLFW_KEY_F5
Definition: glfw3.h:344
#define GLFW_KEY_F20
Definition: glfw3.h:359
#define _glfw_DwmIsCompositionEnabled
#define GLFW_KEY_F9
Definition: glfw3.h:348
#define GLFW_KEY_F10
Definition: glfw3.h:349
#define GLFW_KEY_T
Definition: glfw3.h:306
#define GLFW_KEY_KP_9
Definition: glfw3.h:374
#define GLFW_KEY_1
Definition: glfw3.h:276
#define GLFW_KEY_RIGHT_SUPER
Definition: glfw3.h:389
MMRESULT(WINAPI * JOYGETPOSEX_T)(UINT, LPJOYINFOEX)
typedef GLboolean(APIENTRYP PFNGLISQUERYPROC)(GLuint id)
void _glfwUnregisterWindowClass(void)
Definition: win32_window.c:787
#define GLFW_KEY_KP_ADD
Definition: glfw3.h:379
BOOL(WINAPI * CHANGEWINDOWMESSAGEFILTEREX_T)(HWND, UINT, DWORD, PCHANGEFILTERSTRUCT)
#define GLFW_PLATFORM_ERROR
A platform-specific error occurred that does not match any of the more specific categories.
Definition: glfw3.h:569
#define GLFW_KEY_END
Definition: glfw3.h:334
#define GLFW_KEY_F11
Definition: glfw3.h:350
#define GLFW_KEY_KP_7
Definition: glfw3.h:372
#define GLFW_KEY_EQUAL
Definition: glfw3.h:286
#define GLFW_KEY_CAPS_LOCK
Definition: glfw3.h:335
#define GLFW_KEY_DELETE
Definition: glfw3.h:326
#define GLFW_KEY_ESCAPE
Definition: glfw3.h:321
#define GLFW_KEY_KP_MULTIPLY
Definition: glfw3.h:377
#define GLFW_KEY_S
Definition: glfw3.h:305
#define GLFW_KEY_F1
Definition: glfw3.h:340
#define GLFW_KEY_0
Definition: glfw3.h:275
#define GLFW_KEY_NUM_LOCK
Definition: glfw3.h:337
#define GLFW_KEY_TAB
Definition: glfw3.h:323
static GLboolean initLibraries(void)
Definition: win32_init.c:63
void _glfwTerminateJoysticks(void)
GLenum target
Definition: glext.h:1549
#define GLFW_KEY_W
Definition: glfw3.h:309
#define GLFW_KEY_U
Definition: glfw3.h:307
#define GLFW_KEY_4
Definition: glfw3.h:279
#define GLFW_KEY_N
Definition: glfw3.h:300
#define GLFW_KEY_F12
Definition: glfw3.h:351
#define GLFW_KEY_F17
Definition: glfw3.h:356
#define GLFW_KEY_KP_4
Definition: glfw3.h:369
#define GLFW_KEY_2
Definition: glfw3.h:277
typedef BOOL(WINAPI *PFNWGLSAVEBUFFERREGIONARBPROC)(HANDLE hRegion
#define GLFW_KEY_3
Definition: glfw3.h:278
#define GLFW_KEY_MENU
Definition: glfw3.h:390
#define GLFW_KEY_ENTER
Definition: glfw3.h:322
#define GLFW_KEY_G
Definition: glfw3.h:293
#define GLFW_KEY_D
Definition: glfw3.h:290
HRESULT(WINAPI * DWMISCOMPOSITIONENABLED_T)(BOOL *)
#define GLFW_KEY_F23
Definition: glfw3.h:362
#define GLFW_KEY_M
Definition: glfw3.h:299
static void terminateLibraries(void)
Definition: win32_init.c:115
#define GLFW_KEY_F4
Definition: glfw3.h:343
#define GLFW_KEY_RIGHT_BRACKET
Definition: glfw3.h:315
#define GLFW_KEY_DOWN
Definition: glfw3.h:329
#define GLFW_KEY_J
Definition: glfw3.h:296
#define GLFW_KEY_L
Definition: glfw3.h:298
#define GLFW_KEY_KP_ENTER
Definition: glfw3.h:380
#define GLFW_KEY_KP_SUBTRACT
Definition: glfw3.h:378
#define GLFW_KEY_9
Definition: glfw3.h:284
#define GLFW_KEY_COMMA
Definition: glfw3.h:271
#define GLFW_KEY_RIGHT_ALT
Definition: glfw3.h:388
GLsizei GLsizei GLchar * source
Definition: glext.h:672
#define GLFW_KEY_F19
Definition: glfw3.h:358
#define GLFW_KEY_SLASH
Definition: glfw3.h:274
#define GLFW_KEY_PRINT_SCREEN
Definition: glfw3.h:338
DWORD(WINAPI * TIMEGETTIME_T)(void)
#define GLFW_KEY_F22
Definition: glfw3.h:361
#define GLFW_KEY_LEFT_CONTROL
Definition: glfw3.h:383
GLuint GLsizei GLsizei * length
Definition: glext.h:664
#define GLFW_KEY_KP_8
Definition: glfw3.h:373
#define GLFW_KEY_Q
Definition: glfw3.h:303
#define GLFW_KEY_KP_0
Definition: glfw3.h:365
void _glfwInputError(int error, const char *format,...)
Notifies shared code of an error.
typedef LPVOID(WINAPI *PFNWGLCREATEIMAGEBUFFERI3DPROC)(HDC hDC
#define GLFW_KEY_LEFT_ALT
Definition: glfw3.h:384
#define GLFW_KEY_F3
Definition: glfw3.h:342
BOOL _glfwIsCompositionEnabled(void)
Definition: win32_init.c:262
#define GLFW_KEY_F21
Definition: glfw3.h:360
#define GLFW_KEY_RIGHT_SHIFT
Definition: glfw3.h:386
#define GLFW_KEY_R
Definition: glfw3.h:304
#define GLFW_KEY_F16
Definition: glfw3.h:355
char * _glfwCreateUTF8FromWideString(const WCHAR *source)
Definition: win32_init.c:299
HRESULT(WINAPI * DWMFLUSH_T)(VOID)
#define GLFW_KEY_RIGHT
Definition: glfw3.h:327
#define GLFW_KEY_Y
Definition: glfw3.h:311
#define GLFW_KEY_BACKSLASH
Definition: glfw3.h:314
#define GLFW_KEY_F18
Definition: glfw3.h:357
#define GLFW_KEY_O
Definition: glfw3.h:301
#define GLFW_KEY_APOSTROPHE
Definition: glfw3.h:270
#define GLFW_KEY_MINUS
Definition: glfw3.h:272
#define GLFW_KEY_F24
Definition: glfw3.h:363
MMRESULT(WINAPI * JOYGETPOS_T)(UINT, LPJOYINFO)
int _glfwInitContextAPI(void)
Definition: wgl_context.c:273
#define GLFW_KEY_5
Definition: glfw3.h:280
#define GLFW_KEY_LEFT_SUPER
Definition: glfw3.h:385
WCHAR * _glfwCreateWideStringFromUTF8(const char *source)
Definition: win32_init.c:277
#define GLFW_KEY_C
Definition: glfw3.h:289


librealsense
Author(s): Sergey Dorodnicov , Mark Horn , Reagan Lopez
autogenerated on Fri Mar 13 2020 03:16:18