callbackKeyboard :: IORef GLFWState -> Callbacks
                  -> GLFW.Window -> GLFW.Key -> Int
                  -> GLFW.KeyState -> GLFW.ModifierKeys -> IO ()
callbackKeyboard ref callbacks _ key scancode state mods =
  keyboardCallback callbacks ref key' state'
  where
    state' = fromGLFW state
    key' =
      if GLFW.modifierKeysShift mods
        then I.shiftKey . fromGLFW $ key
        else fromGLFW key


-- Mouse Movement Callback ----------------------------------------------------
callbackKeyboard :: IORef GLFWState -> Callbacks
                  -> GLFW.Window -> GLFW.Key -> Int
                  -> GLFW.KeyState -> GLFW.ModifierKeys -> IO ()
callbackKeyboard ref callbacks _ key scancode state mods =
  keyboardCallback callbacks ref key' state'
  where
    state' = fromGLFW state
    key' =
      if GLFW.modifierKeysShift mods
        then I.shiftKey . fromGLFW $ key
        else fromGLFW key


-- Mouse Movement Callback ----------------------------------------------------
callbackKeyboard ref callbacks _ key scancode state mods =
  keyboardCallback callbacks ref key' state'
  where
    state' = fromGLFW state
    key' =
      if GLFW.modifierKeysShift mods
        then I.shiftKey . fromGLFW $ key
        else fromGLFW key


-- Mouse Movement Callback ----------------------------------------------------