Forward declarations

void gameSetKey(int, bool);
void gameSetMouse(double, double);
static void onKeyboardInput(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    ...
    else
    {
        gameSetKey(key, action);
    }
}

Mouse Callback

static void onMouseMoved(GLFWwindow* window, double xpos, double ypos)
{
    static double mouseLastX = xpos;
    static double mouseLastY = ypos;

    double deltaX = xpos - mouseLastX;
    double deltaY = ypos - mouseLastY;

    gameSetMouse(deltaX, deltaY);

    mouseLastX = xpos;
    mouseLastY = ypos;
}
bool windowCreate(Settings props)
{

    ...

    glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
    if (glfwRawMouseMotionSupported())
    {
        glfwSetInputMode(window, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE);
    }
    glfwSetCursorPosCallback(window, onMouseMoved);

    return true;
}

Timer

bool windowLoop(double* time)
{
    if (glfwWindowShouldClose(window)) return false;

    glfwSwapBuffers(window);
    glfwPollEvents();
    printFps();

    double now = glfwGetTime();
    static double lastTime = now;
    *time = now - lastTime;
    lastTime = now;

    return true;
}