1b877906bSopenharmony_ci//========================================================================
2b877906bSopenharmony_ci// GLFW 3.5 - www.glfw.org
3b877906bSopenharmony_ci//------------------------------------------------------------------------
4b877906bSopenharmony_ci// Copyright (c) 2016 Google Inc.
5b877906bSopenharmony_ci// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org>
6b877906bSopenharmony_ci//
7b877906bSopenharmony_ci// This software is provided 'as-is', without any express or implied
8b877906bSopenharmony_ci// warranty. In no event will the authors be held liable for any damages
9b877906bSopenharmony_ci// arising from the use of this software.
10b877906bSopenharmony_ci//
11b877906bSopenharmony_ci// Permission is granted to anyone to use this software for any purpose,
12b877906bSopenharmony_ci// including commercial applications, and to alter it and redistribute it
13b877906bSopenharmony_ci// freely, subject to the following restrictions:
14b877906bSopenharmony_ci//
15b877906bSopenharmony_ci// 1. The origin of this software must not be misrepresented; you must not
16b877906bSopenharmony_ci//    claim that you wrote the original software. If you use this software
17b877906bSopenharmony_ci//    in a product, an acknowledgment in the product documentation would
18b877906bSopenharmony_ci//    be appreciated but is not required.
19b877906bSopenharmony_ci//
20b877906bSopenharmony_ci// 2. Altered source versions must be plainly marked as such, and must not
21b877906bSopenharmony_ci//    be misrepresented as being the original software.
22b877906bSopenharmony_ci//
23b877906bSopenharmony_ci// 3. This notice may not be removed or altered from any source
24b877906bSopenharmony_ci//    distribution.
25b877906bSopenharmony_ci//
26b877906bSopenharmony_ci//========================================================================
27b877906bSopenharmony_ci
28b877906bSopenharmony_ci#include "internal.h"
29b877906bSopenharmony_ci
30b877906bSopenharmony_ci#include <stdlib.h>
31b877906bSopenharmony_ci#include <string.h>
32b877906bSopenharmony_ci
33b877906bSopenharmony_ci
34b877906bSopenharmony_ci//////////////////////////////////////////////////////////////////////////
35b877906bSopenharmony_ci//////                       GLFW platform API                      //////
36b877906bSopenharmony_ci//////////////////////////////////////////////////////////////////////////
37b877906bSopenharmony_ci
38b877906bSopenharmony_ciGLFWbool _glfwConnectNull(int platformID, _GLFWplatform* platform)
39b877906bSopenharmony_ci{
40b877906bSopenharmony_ci    const _GLFWplatform null =
41b877906bSopenharmony_ci    {
42b877906bSopenharmony_ci        .platformID = GLFW_PLATFORM_NULL,
43b877906bSopenharmony_ci        .init = _glfwInitNull,
44b877906bSopenharmony_ci        .terminate = _glfwTerminateNull,
45b877906bSopenharmony_ci        .getCursorPos = _glfwGetCursorPosNull,
46b877906bSopenharmony_ci        .setCursorPos = _glfwSetCursorPosNull,
47b877906bSopenharmony_ci        .setCursorMode = _glfwSetCursorModeNull,
48b877906bSopenharmony_ci        .setRawMouseMotion = _glfwSetRawMouseMotionNull,
49b877906bSopenharmony_ci        .rawMouseMotionSupported = _glfwRawMouseMotionSupportedNull,
50b877906bSopenharmony_ci        .createCursor = _glfwCreateCursorNull,
51b877906bSopenharmony_ci        .createStandardCursor = _glfwCreateStandardCursorNull,
52b877906bSopenharmony_ci        .destroyCursor = _glfwDestroyCursorNull,
53b877906bSopenharmony_ci        .setCursor = _glfwSetCursorNull,
54b877906bSopenharmony_ci        .getScancodeName = _glfwGetScancodeNameNull,
55b877906bSopenharmony_ci        .getKeyScancode = _glfwGetKeyScancodeNull,
56b877906bSopenharmony_ci        .setClipboardString = _glfwSetClipboardStringNull,
57b877906bSopenharmony_ci        .getClipboardString = _glfwGetClipboardStringNull,
58b877906bSopenharmony_ci        .initJoysticks = _glfwInitJoysticksNull,
59b877906bSopenharmony_ci        .terminateJoysticks = _glfwTerminateJoysticksNull,
60b877906bSopenharmony_ci        .pollJoystick = _glfwPollJoystickNull,
61b877906bSopenharmony_ci        .getMappingName = _glfwGetMappingNameNull,
62b877906bSopenharmony_ci        .updateGamepadGUID = _glfwUpdateGamepadGUIDNull,
63b877906bSopenharmony_ci        .freeMonitor = _glfwFreeMonitorNull,
64b877906bSopenharmony_ci        .getMonitorPos = _glfwGetMonitorPosNull,
65b877906bSopenharmony_ci        .getMonitorContentScale = _glfwGetMonitorContentScaleNull,
66b877906bSopenharmony_ci        .getMonitorWorkarea = _glfwGetMonitorWorkareaNull,
67b877906bSopenharmony_ci        .getVideoModes = _glfwGetVideoModesNull,
68b877906bSopenharmony_ci        .getVideoMode = _glfwGetVideoModeNull,
69b877906bSopenharmony_ci        .getGammaRamp = _glfwGetGammaRampNull,
70b877906bSopenharmony_ci        .setGammaRamp = _glfwSetGammaRampNull,
71b877906bSopenharmony_ci        .createWindow = _glfwCreateWindowNull,
72b877906bSopenharmony_ci        .destroyWindow = _glfwDestroyWindowNull,
73b877906bSopenharmony_ci        .setWindowTitle = _glfwSetWindowTitleNull,
74b877906bSopenharmony_ci        .setWindowIcon = _glfwSetWindowIconNull,
75b877906bSopenharmony_ci        .getWindowPos = _glfwGetWindowPosNull,
76b877906bSopenharmony_ci        .setWindowPos = _glfwSetWindowPosNull,
77b877906bSopenharmony_ci        .getWindowSize = _glfwGetWindowSizeNull,
78b877906bSopenharmony_ci        .setWindowSize = _glfwSetWindowSizeNull,
79b877906bSopenharmony_ci        .setWindowSizeLimits = _glfwSetWindowSizeLimitsNull,
80b877906bSopenharmony_ci        .setWindowAspectRatio = _glfwSetWindowAspectRatioNull,
81b877906bSopenharmony_ci        .getFramebufferSize = _glfwGetFramebufferSizeNull,
82b877906bSopenharmony_ci        .getWindowFrameSize = _glfwGetWindowFrameSizeNull,
83b877906bSopenharmony_ci        .getWindowContentScale = _glfwGetWindowContentScaleNull,
84b877906bSopenharmony_ci        .iconifyWindow = _glfwIconifyWindowNull,
85b877906bSopenharmony_ci        .restoreWindow = _glfwRestoreWindowNull,
86b877906bSopenharmony_ci        .maximizeWindow = _glfwMaximizeWindowNull,
87b877906bSopenharmony_ci        .showWindow = _glfwShowWindowNull,
88b877906bSopenharmony_ci        .hideWindow = _glfwHideWindowNull,
89b877906bSopenharmony_ci        .requestWindowAttention = _glfwRequestWindowAttentionNull,
90b877906bSopenharmony_ci        .focusWindow = _glfwFocusWindowNull,
91b877906bSopenharmony_ci        .setWindowMonitor = _glfwSetWindowMonitorNull,
92b877906bSopenharmony_ci        .windowFocused = _glfwWindowFocusedNull,
93b877906bSopenharmony_ci        .windowIconified = _glfwWindowIconifiedNull,
94b877906bSopenharmony_ci        .windowVisible = _glfwWindowVisibleNull,
95b877906bSopenharmony_ci        .windowMaximized = _glfwWindowMaximizedNull,
96b877906bSopenharmony_ci        .windowHovered = _glfwWindowHoveredNull,
97b877906bSopenharmony_ci        .framebufferTransparent = _glfwFramebufferTransparentNull,
98b877906bSopenharmony_ci        .getWindowOpacity = _glfwGetWindowOpacityNull,
99b877906bSopenharmony_ci        .setWindowResizable = _glfwSetWindowResizableNull,
100b877906bSopenharmony_ci        .setWindowDecorated = _glfwSetWindowDecoratedNull,
101b877906bSopenharmony_ci        .setWindowFloating = _glfwSetWindowFloatingNull,
102b877906bSopenharmony_ci        .setWindowOpacity = _glfwSetWindowOpacityNull,
103b877906bSopenharmony_ci        .setWindowMousePassthrough = _glfwSetWindowMousePassthroughNull,
104b877906bSopenharmony_ci        .pollEvents = _glfwPollEventsNull,
105b877906bSopenharmony_ci        .waitEvents = _glfwWaitEventsNull,
106b877906bSopenharmony_ci        .waitEventsTimeout = _glfwWaitEventsTimeoutNull,
107b877906bSopenharmony_ci        .postEmptyEvent = _glfwPostEmptyEventNull,
108b877906bSopenharmony_ci        .getEGLPlatform = _glfwGetEGLPlatformNull,
109b877906bSopenharmony_ci        .getEGLNativeDisplay = _glfwGetEGLNativeDisplayNull,
110b877906bSopenharmony_ci        .getEGLNativeWindow = _glfwGetEGLNativeWindowNull,
111b877906bSopenharmony_ci        .getRequiredInstanceExtensions = _glfwGetRequiredInstanceExtensionsNull,
112b877906bSopenharmony_ci        .getPhysicalDevicePresentationSupport = _glfwGetPhysicalDevicePresentationSupportNull,
113b877906bSopenharmony_ci        .createWindowSurface = _glfwCreateWindowSurfaceNull
114b877906bSopenharmony_ci    };
115b877906bSopenharmony_ci
116b877906bSopenharmony_ci    *platform = null;
117b877906bSopenharmony_ci    return GLFW_TRUE;
118b877906bSopenharmony_ci}
119b877906bSopenharmony_ci
120b877906bSopenharmony_ciint _glfwInitNull(void)
121b877906bSopenharmony_ci{
122b877906bSopenharmony_ci    int scancode;
123b877906bSopenharmony_ci
124b877906bSopenharmony_ci    memset(_glfw.null.keycodes, -1, sizeof(_glfw.null.keycodes));
125b877906bSopenharmony_ci    memset(_glfw.null.scancodes, -1, sizeof(_glfw.null.scancodes));
126b877906bSopenharmony_ci
127b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_SPACE]         = GLFW_KEY_SPACE;
128b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_APOSTROPHE]    = GLFW_KEY_APOSTROPHE;
129b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_COMMA]         = GLFW_KEY_COMMA;
130b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_MINUS]         = GLFW_KEY_MINUS;
131b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_PERIOD]        = GLFW_KEY_PERIOD;
132b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_SLASH]         = GLFW_KEY_SLASH;
133b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_0]             = GLFW_KEY_0;
134b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_1]             = GLFW_KEY_1;
135b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_2]             = GLFW_KEY_2;
136b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_3]             = GLFW_KEY_3;
137b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_4]             = GLFW_KEY_4;
138b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_5]             = GLFW_KEY_5;
139b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_6]             = GLFW_KEY_6;
140b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_7]             = GLFW_KEY_7;
141b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_8]             = GLFW_KEY_8;
142b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_9]             = GLFW_KEY_9;
143b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_SEMICOLON]     = GLFW_KEY_SEMICOLON;
144b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_EQUAL]         = GLFW_KEY_EQUAL;
145b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_A]             = GLFW_KEY_A;
146b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_B]             = GLFW_KEY_B;
147b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_C]             = GLFW_KEY_C;
148b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_D]             = GLFW_KEY_D;
149b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_E]             = GLFW_KEY_E;
150b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F]             = GLFW_KEY_F;
151b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_G]             = GLFW_KEY_G;
152b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_H]             = GLFW_KEY_H;
153b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_I]             = GLFW_KEY_I;
154b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_J]             = GLFW_KEY_J;
155b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_K]             = GLFW_KEY_K;
156b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_L]             = GLFW_KEY_L;
157b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_M]             = GLFW_KEY_M;
158b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_N]             = GLFW_KEY_N;
159b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_O]             = GLFW_KEY_O;
160b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_P]             = GLFW_KEY_P;
161b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_Q]             = GLFW_KEY_Q;
162b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_R]             = GLFW_KEY_R;
163b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_S]             = GLFW_KEY_S;
164b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_T]             = GLFW_KEY_T;
165b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_U]             = GLFW_KEY_U;
166b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_V]             = GLFW_KEY_V;
167b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_W]             = GLFW_KEY_W;
168b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_X]             = GLFW_KEY_X;
169b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_Y]             = GLFW_KEY_Y;
170b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_Z]             = GLFW_KEY_Z;
171b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_LEFT_BRACKET]  = GLFW_KEY_LEFT_BRACKET;
172b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_BACKSLASH]     = GLFW_KEY_BACKSLASH;
173b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_RIGHT_BRACKET] = GLFW_KEY_RIGHT_BRACKET;
174b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_GRAVE_ACCENT]  = GLFW_KEY_GRAVE_ACCENT;
175b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_WORLD_1]       = GLFW_KEY_WORLD_1;
176b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_WORLD_2]       = GLFW_KEY_WORLD_2;
177b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_ESCAPE]        = GLFW_KEY_ESCAPE;
178b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_ENTER]         = GLFW_KEY_ENTER;
179b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_TAB]           = GLFW_KEY_TAB;
180b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_BACKSPACE]     = GLFW_KEY_BACKSPACE;
181b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_INSERT]        = GLFW_KEY_INSERT;
182b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_DELETE]        = GLFW_KEY_DELETE;
183b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_RIGHT]         = GLFW_KEY_RIGHT;
184b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_LEFT]          = GLFW_KEY_LEFT;
185b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_DOWN]          = GLFW_KEY_DOWN;
186b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_UP]            = GLFW_KEY_UP;
187b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_PAGE_UP]       = GLFW_KEY_PAGE_UP;
188b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_PAGE_DOWN]     = GLFW_KEY_PAGE_DOWN;
189b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_HOME]          = GLFW_KEY_HOME;
190b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_END]           = GLFW_KEY_END;
191b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_CAPS_LOCK]     = GLFW_KEY_CAPS_LOCK;
192b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_SCROLL_LOCK]   = GLFW_KEY_SCROLL_LOCK;
193b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_NUM_LOCK]      = GLFW_KEY_NUM_LOCK;
194b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_PRINT_SCREEN]  = GLFW_KEY_PRINT_SCREEN;
195b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_PAUSE]         = GLFW_KEY_PAUSE;
196b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F1]            = GLFW_KEY_F1;
197b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F2]            = GLFW_KEY_F2;
198b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F3]            = GLFW_KEY_F3;
199b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F4]            = GLFW_KEY_F4;
200b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F5]            = GLFW_KEY_F5;
201b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F6]            = GLFW_KEY_F6;
202b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F7]            = GLFW_KEY_F7;
203b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F8]            = GLFW_KEY_F8;
204b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F9]            = GLFW_KEY_F9;
205b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F10]           = GLFW_KEY_F10;
206b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F11]           = GLFW_KEY_F11;
207b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F12]           = GLFW_KEY_F12;
208b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F13]           = GLFW_KEY_F13;
209b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F14]           = GLFW_KEY_F14;
210b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F15]           = GLFW_KEY_F15;
211b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F16]           = GLFW_KEY_F16;
212b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F17]           = GLFW_KEY_F17;
213b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F18]           = GLFW_KEY_F18;
214b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F19]           = GLFW_KEY_F19;
215b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F20]           = GLFW_KEY_F20;
216b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F21]           = GLFW_KEY_F21;
217b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F22]           = GLFW_KEY_F22;
218b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F23]           = GLFW_KEY_F23;
219b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F24]           = GLFW_KEY_F24;
220b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_F25]           = GLFW_KEY_F25;
221b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_0]          = GLFW_KEY_KP_0;
222b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_1]          = GLFW_KEY_KP_1;
223b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_2]          = GLFW_KEY_KP_2;
224b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_3]          = GLFW_KEY_KP_3;
225b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_4]          = GLFW_KEY_KP_4;
226b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_5]          = GLFW_KEY_KP_5;
227b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_6]          = GLFW_KEY_KP_6;
228b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_7]          = GLFW_KEY_KP_7;
229b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_8]          = GLFW_KEY_KP_8;
230b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_9]          = GLFW_KEY_KP_9;
231b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_DECIMAL]    = GLFW_KEY_KP_DECIMAL;
232b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_DIVIDE]     = GLFW_KEY_KP_DIVIDE;
233b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_MULTIPLY]   = GLFW_KEY_KP_MULTIPLY;
234b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_SUBTRACT]   = GLFW_KEY_KP_SUBTRACT;
235b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_ADD]        = GLFW_KEY_KP_ADD;
236b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_ENTER]      = GLFW_KEY_KP_ENTER;
237b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_KP_EQUAL]      = GLFW_KEY_KP_EQUAL;
238b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_LEFT_SHIFT]    = GLFW_KEY_LEFT_SHIFT;
239b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_LEFT_CONTROL]  = GLFW_KEY_LEFT_CONTROL;
240b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_LEFT_ALT]      = GLFW_KEY_LEFT_ALT;
241b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_LEFT_SUPER]    = GLFW_KEY_LEFT_SUPER;
242b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_RIGHT_SHIFT]   = GLFW_KEY_RIGHT_SHIFT;
243b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_RIGHT_CONTROL] = GLFW_KEY_RIGHT_CONTROL;
244b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_RIGHT_ALT]     = GLFW_KEY_RIGHT_ALT;
245b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_RIGHT_SUPER]   = GLFW_KEY_RIGHT_SUPER;
246b877906bSopenharmony_ci    _glfw.null.keycodes[GLFW_NULL_SC_MENU]          = GLFW_KEY_MENU;
247b877906bSopenharmony_ci
248b877906bSopenharmony_ci    for (scancode = GLFW_NULL_SC_FIRST;  scancode < GLFW_NULL_SC_LAST;  scancode++)
249b877906bSopenharmony_ci    {
250b877906bSopenharmony_ci        if (_glfw.null.keycodes[scancode] > 0)
251b877906bSopenharmony_ci            _glfw.null.scancodes[_glfw.null.keycodes[scancode]] = scancode;
252b877906bSopenharmony_ci    }
253b877906bSopenharmony_ci
254b877906bSopenharmony_ci    _glfwPollMonitorsNull();
255b877906bSopenharmony_ci    return GLFW_TRUE;
256b877906bSopenharmony_ci}
257b877906bSopenharmony_ci
258b877906bSopenharmony_civoid _glfwTerminateNull(void)
259b877906bSopenharmony_ci{
260b877906bSopenharmony_ci    free(_glfw.null.clipboardString);
261b877906bSopenharmony_ci    _glfwTerminateOSMesa();
262b877906bSopenharmony_ci    _glfwTerminateEGL();
263b877906bSopenharmony_ci}
264b877906bSopenharmony_ci
265