packages feed

gi-gdk-0.3.16.8: GI/Gdk.hs

-- Generated code.

{-# OPTIONS_GHC -fno-warn-unused-imports #-}

{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
    TypeFamilies, MultiParamTypeClasses, KindSignatures,
    FlexibleInstances, UndecidableInstances, DataKinds,
    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}

module GI.Gdk where

import Prelude ()
import Data.GI.Base.ShortPrelude
import Data.Char
import Data.Int
import Data.Word
import qualified Data.ByteString.Char8 as B
import Data.ByteString.Char8 (ByteString)
import qualified Data.Map as Map
import Foreign.C
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
import Foreign.Storable (peek, poke, sizeOf)
import Control.Applicative ((<$>))
import Control.Exception (onException)
import Control.Monad.IO.Class
import qualified Data.Text as T

import Data.GI.Base.Attributes hiding (get, set)
import Data.GI.Base.BasicTypes
import Data.GI.Base.BasicConversions
import Data.GI.Base.Closure
import Data.GI.Base.GError
import Data.GI.Base.GHashTable
import Data.GI.Base.GParamSpec
import Data.GI.Base.GVariant
import Data.GI.Base.GValue
import Data.GI.Base.ManagedPtr
import Data.GI.Base.Overloading
import Data.GI.Base.Properties hiding (new)
import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
import Data.GI.Base.Utils

import qualified GI.GLib as GLib
import qualified GI.GLibAttributes as GLibA
import qualified GI.GObject as GObject
import qualified GI.GObjectAttributes as GObjectA
import qualified GI.GdkPixbuf as GdkPixbuf
import qualified GI.GdkPixbufAttributes as GdkPixbufA
import qualified GI.Gio as Gio
import qualified GI.GioAttributes as GioA
import qualified GI.Pango as Pango
import qualified GI.PangoAttributes as PangoA
import qualified GI.Cairo as Cairo
import qualified GI.CairoAttributes as CairoA

-- object AppLaunchContext 
newtype AppLaunchContext = AppLaunchContext (ForeignPtr AppLaunchContext)
noAppLaunchContext :: Maybe AppLaunchContext
noAppLaunchContext = Nothing

foreign import ccall "gdk_app_launch_context_get_type"
    c_gdk_app_launch_context_get_type :: IO GType

type instance ParentTypes AppLaunchContext = '[Gio.AppLaunchContext, GObject.Object]

instance GObject AppLaunchContext where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_app_launch_context_get_type
    

class GObject o => AppLaunchContextK o
instance (GObject o, IsDescendantOf AppLaunchContext o) => AppLaunchContextK o

toAppLaunchContext :: AppLaunchContextK o => o -> IO AppLaunchContext
toAppLaunchContext = unsafeCastTo AppLaunchContext

-- method AppLaunchContext::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "AppLaunchContext"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_new" gdk_app_launch_context_new :: 
    IO (Ptr AppLaunchContext)

{-# DEPRECATED appLaunchContextNew ["(Since version 3.0)","Use gdk_display_get_app_launch_context() instead"]#-}
appLaunchContextNew ::
    (MonadIO m) =>
    m AppLaunchContext
appLaunchContextNew  = liftIO $ do
    result <- gdk_app_launch_context_new
    result' <- (wrapObject AppLaunchContext) result
    return result'

-- method AppLaunchContext::set_desktop
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desktop", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desktop", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_set_desktop" gdk_app_launch_context_set_desktop :: 
    Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
    Int32 ->                                -- desktop : TBasicType TInt32
    IO ()


appLaunchContextSetDesktop ::
    (MonadIO m, AppLaunchContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- desktop
    m ()
appLaunchContextSetDesktop _obj desktop = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_app_launch_context_set_desktop _obj' desktop
    touchManagedPtr _obj
    return ()

-- method AppLaunchContext::set_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_set_display" gdk_app_launch_context_set_display :: 
    Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    IO ()

{-# DEPRECATED appLaunchContextSetDisplay ["(Since version 3.0)","Use gdk_display_get_app_launch_context() instead"]#-}
appLaunchContextSetDisplay ::
    (MonadIO m, AppLaunchContextK a, DisplayK b) =>
    a ->                                    -- _obj
    b ->                                    -- display
    m ()
appLaunchContextSetDisplay _obj display = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let display' = unsafeManagedPtrCastPtr display
    gdk_app_launch_context_set_display _obj' display'
    touchManagedPtr _obj
    touchManagedPtr display
    return ()

-- method AppLaunchContext::set_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_set_icon" gdk_app_launch_context_set_icon :: 
    Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
    Ptr Gio.Icon ->                         -- icon : TInterface "Gio" "Icon"
    IO ()


appLaunchContextSetIcon ::
    (MonadIO m, AppLaunchContextK a, Gio.IconK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- icon
    m ()
appLaunchContextSetIcon _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeIcon <- case icon of
        Nothing -> return nullPtr
        Just jIcon -> do
            let jIcon' = unsafeManagedPtrCastPtr jIcon
            return jIcon'
    gdk_app_launch_context_set_icon _obj' maybeIcon
    touchManagedPtr _obj
    whenJust icon touchManagedPtr
    return ()

-- method AppLaunchContext::set_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_set_icon_name" gdk_app_launch_context_set_icon_name :: 
    Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
    CString ->                              -- icon_name : TBasicType TUTF8
    IO ()


appLaunchContextSetIconName ::
    (MonadIO m, AppLaunchContextK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- icon_name
    m ()
appLaunchContextSetIconName _obj icon_name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeIcon_name <- case icon_name of
        Nothing -> return nullPtr
        Just jIcon_name -> do
            jIcon_name' <- textToCString jIcon_name
            return jIcon_name'
    gdk_app_launch_context_set_icon_name _obj' maybeIcon_name
    touchManagedPtr _obj
    freeMem maybeIcon_name
    return ()

-- method AppLaunchContext::set_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_set_screen" gdk_app_launch_context_set_screen :: 
    Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
    Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
    IO ()


appLaunchContextSetScreen ::
    (MonadIO m, AppLaunchContextK a, ScreenK b) =>
    a ->                                    -- _obj
    b ->                                    -- screen
    m ()
appLaunchContextSetScreen _obj screen = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let screen' = unsafeManagedPtrCastPtr screen
    gdk_app_launch_context_set_screen _obj' screen'
    touchManagedPtr _obj
    touchManagedPtr screen
    return ()

-- method AppLaunchContext::set_timestamp
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "AppLaunchContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_app_launch_context_set_timestamp" gdk_app_launch_context_set_timestamp :: 
    Ptr AppLaunchContext ->                 -- _obj : TInterface "Gdk" "AppLaunchContext"
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


appLaunchContextSetTimestamp ::
    (MonadIO m, AppLaunchContextK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- timestamp
    m ()
appLaunchContextSetTimestamp _obj timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_app_launch_context_set_timestamp _obj' timestamp
    touchManagedPtr _obj
    return ()

-- struct Atom
newtype Atom = Atom (ForeignPtr Atom)
noAtom :: Maybe Atom
noAtom = Nothing

-- method Atom::name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_atom_name" gdk_atom_name :: 
    Ptr Atom ->                             -- _obj : TInterface "Gdk" "Atom"
    IO CString


atomName ::
    (MonadIO m) =>
    Atom ->                                 -- _obj
    m T.Text
atomName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_atom_name _obj'
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- Enum AxisUse

data AxisUse = 
      AxisUseIgnore
    | AxisUseX
    | AxisUseY
    | AxisUsePressure
    | AxisUseXtilt
    | AxisUseYtilt
    | AxisUseWheel
    | AxisUseLast
    | AnotherAxisUse Int
    deriving (Show, Eq)

instance Enum AxisUse where
    fromEnum AxisUseIgnore = 0
    fromEnum AxisUseX = 1
    fromEnum AxisUseY = 2
    fromEnum AxisUsePressure = 3
    fromEnum AxisUseXtilt = 4
    fromEnum AxisUseYtilt = 5
    fromEnum AxisUseWheel = 6
    fromEnum AxisUseLast = 7
    fromEnum (AnotherAxisUse k) = k

    toEnum 0 = AxisUseIgnore
    toEnum 1 = AxisUseX
    toEnum 2 = AxisUseY
    toEnum 3 = AxisUsePressure
    toEnum 4 = AxisUseXtilt
    toEnum 5 = AxisUseYtilt
    toEnum 6 = AxisUseWheel
    toEnum 7 = AxisUseLast
    toEnum k = AnotherAxisUse k

foreign import ccall "gdk_axis_use_get_type" c_gdk_axis_use_get_type :: 
    IO GType

instance BoxedEnum AxisUse where
    boxedEnumType _ = c_gdk_axis_use_get_type

-- Enum ByteOrder

data ByteOrder = 
      ByteOrderLsbFirst
    | ByteOrderMsbFirst
    | AnotherByteOrder Int
    deriving (Show, Eq)

instance Enum ByteOrder where
    fromEnum ByteOrderLsbFirst = 0
    fromEnum ByteOrderMsbFirst = 1
    fromEnum (AnotherByteOrder k) = k

    toEnum 0 = ByteOrderLsbFirst
    toEnum 1 = ByteOrderMsbFirst
    toEnum k = AnotherByteOrder k

foreign import ccall "gdk_byte_order_get_type" c_gdk_byte_order_get_type :: 
    IO GType

instance BoxedEnum ByteOrder where
    boxedEnumType _ = c_gdk_byte_order_get_type

-- struct Color
newtype Color = Color (ForeignPtr Color)
noColor :: Maybe Color
noColor = Nothing

foreign import ccall "gdk_color_get_type" c_gdk_color_get_type :: 
    IO GType

instance BoxedObject Color where
    boxedType _ = c_gdk_color_get_type

colorReadPixel :: Color -> IO Word32
colorReadPixel s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Word32
    return val

colorReadRed :: Color -> IO Word16
colorReadRed s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO Word16
    return val

colorReadGreen :: Color -> IO Word16
colorReadGreen s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 6) :: IO Word16
    return val

colorReadBlue :: Color -> IO Word16
colorReadBlue s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Word16
    return val

-- method Color::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Color"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_color_copy" gdk_color_copy :: 
    Ptr Color ->                            -- _obj : TInterface "Gdk" "Color"
    IO (Ptr Color)

{-# DEPRECATED colorCopy ["(Since version 3.14)","Use #GdkRGBA"]#-}
colorCopy ::
    (MonadIO m) =>
    Color ->                                -- _obj
    m Color
colorCopy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_color_copy _obj'
    result' <- (wrapBoxed Color) result
    touchManagedPtr _obj
    return result'

-- method Color::equal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "colorb", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "colorb", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_color_equal" gdk_color_equal :: 
    Ptr Color ->                            -- _obj : TInterface "Gdk" "Color"
    Ptr Color ->                            -- colorb : TInterface "Gdk" "Color"
    IO CInt

{-# DEPRECATED colorEqual ["(Since version 3.14)","Use #GdkRGBA"]#-}
colorEqual ::
    (MonadIO m) =>
    Color ->                                -- _obj
    Color ->                                -- colorb
    m Bool
colorEqual _obj colorb = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let colorb' = unsafeManagedPtrGetPtr colorb
    result <- gdk_color_equal _obj' colorb'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr colorb
    return result'

-- method Color::free
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_color_free" gdk_color_free :: 
    Ptr Color ->                            -- _obj : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED colorFree ["(Since version 3.14)","Use #GdkRGBA"]#-}
colorFree ::
    (MonadIO m) =>
    Color ->                                -- _obj
    m ()
colorFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gdk_color_free _obj'
    touchManagedPtr _obj
    return ()

-- method Color::hash
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_color_hash" gdk_color_hash :: 
    Ptr Color ->                            -- _obj : TInterface "Gdk" "Color"
    IO Word32

{-# DEPRECATED colorHash ["(Since version 3.14)","Use #GdkRGBA"]#-}
colorHash ::
    (MonadIO m) =>
    Color ->                                -- _obj
    m Word32
colorHash _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_color_hash _obj'
    touchManagedPtr _obj
    return result

-- method Color::to_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_color_to_string" gdk_color_to_string :: 
    Ptr Color ->                            -- _obj : TInterface "Gdk" "Color"
    IO CString

{-# DEPRECATED colorToString ["(Since version 3.14)","Use #GdkRGBA"]#-}
colorToString ::
    (MonadIO m) =>
    Color ->                                -- _obj
    m T.Text
colorToString _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_color_to_string _obj'
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- Enum CrossingMode

data CrossingMode = 
      CrossingModeNormal
    | CrossingModeGrab
    | CrossingModeUngrab
    | CrossingModeGtkGrab
    | CrossingModeGtkUngrab
    | CrossingModeStateChanged
    | CrossingModeTouchBegin
    | CrossingModeTouchEnd
    | CrossingModeDeviceSwitch
    | AnotherCrossingMode Int
    deriving (Show, Eq)

instance Enum CrossingMode where
    fromEnum CrossingModeNormal = 0
    fromEnum CrossingModeGrab = 1
    fromEnum CrossingModeUngrab = 2
    fromEnum CrossingModeGtkGrab = 3
    fromEnum CrossingModeGtkUngrab = 4
    fromEnum CrossingModeStateChanged = 5
    fromEnum CrossingModeTouchBegin = 6
    fromEnum CrossingModeTouchEnd = 7
    fromEnum CrossingModeDeviceSwitch = 8
    fromEnum (AnotherCrossingMode k) = k

    toEnum 0 = CrossingModeNormal
    toEnum 1 = CrossingModeGrab
    toEnum 2 = CrossingModeUngrab
    toEnum 3 = CrossingModeGtkGrab
    toEnum 4 = CrossingModeGtkUngrab
    toEnum 5 = CrossingModeStateChanged
    toEnum 6 = CrossingModeTouchBegin
    toEnum 7 = CrossingModeTouchEnd
    toEnum 8 = CrossingModeDeviceSwitch
    toEnum k = AnotherCrossingMode k

foreign import ccall "gdk_crossing_mode_get_type" c_gdk_crossing_mode_get_type :: 
    IO GType

instance BoxedEnum CrossingMode where
    boxedEnumType _ = c_gdk_crossing_mode_get_type

-- object Cursor 
newtype Cursor = Cursor (ForeignPtr Cursor)
noCursor :: Maybe Cursor
noCursor = Nothing

foreign import ccall "gdk_cursor_get_type"
    c_gdk_cursor_get_type :: IO GType

type instance ParentTypes Cursor = '[GObject.Object]

instance GObject Cursor where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_cursor_get_type
    

class GObject o => CursorK o
instance (GObject o, IsDescendantOf Cursor o) => CursorK o

toCursor :: CursorK o => o -> IO Cursor
toCursor = unsafeCastTo Cursor

-- method Cursor::new
-- method type : Constructor
-- Args : [Arg {argName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_new" gdk_cursor_new :: 
    CUInt ->                                -- cursor_type : TInterface "Gdk" "CursorType"
    IO (Ptr Cursor)

{-# DEPRECATED cursorNew ["(Since version 3.16)","Use gdk_cursor_new_for_display() instead."]#-}
cursorNew ::
    (MonadIO m) =>
    CursorType ->                           -- cursor_type
    m Cursor
cursorNew cursor_type = liftIO $ do
    let cursor_type' = (fromIntegral . fromEnum) cursor_type
    result <- gdk_cursor_new cursor_type'
    result' <- (wrapObject Cursor) result
    return result'

-- method Cursor::new_for_display
-- method type : Constructor
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_new_for_display" gdk_cursor_new_for_display :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    CUInt ->                                -- cursor_type : TInterface "Gdk" "CursorType"
    IO (Ptr Cursor)


cursorNewForDisplay ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- display
    CursorType ->                           -- cursor_type
    m Cursor
cursorNewForDisplay display cursor_type = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    let cursor_type' = (fromIntegral . fromEnum) cursor_type
    result <- gdk_cursor_new_for_display display' cursor_type'
    result' <- (wrapObject Cursor) result
    touchManagedPtr display
    return result'

-- method Cursor::new_from_name
-- method type : Constructor
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_new_from_name" gdk_cursor_new_from_name :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr Cursor)


cursorNewFromName ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- display
    T.Text ->                               -- name
    m Cursor
cursorNewFromName display name = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    name' <- textToCString name
    result <- gdk_cursor_new_from_name display' name'
    result' <- (wrapObject Cursor) result
    touchManagedPtr display
    freeMem name'
    return result'

-- method Cursor::new_from_pixbuf
-- method type : Constructor
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_new_from_pixbuf" gdk_cursor_new_from_pixbuf :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO (Ptr Cursor)


cursorNewFromPixbuf ::
    (MonadIO m, DisplayK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- display
    b ->                                    -- pixbuf
    Int32 ->                                -- x
    Int32 ->                                -- y
    m Cursor
cursorNewFromPixbuf display pixbuf x y = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
    result <- gdk_cursor_new_from_pixbuf display' pixbuf' x y
    result' <- (wrapObject Cursor) result
    touchManagedPtr display
    touchManagedPtr pixbuf
    return result'

-- method Cursor::new_from_surface
-- method type : Constructor
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_new_from_surface" gdk_cursor_new_from_surface :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr Cairo.Surface ->                    -- surface : TInterface "cairo" "Surface"
    CDouble ->                              -- x : TBasicType TDouble
    CDouble ->                              -- y : TBasicType TDouble
    IO (Ptr Cursor)


cursorNewFromSurface ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- display
    Cairo.Surface ->                        -- surface
    Double ->                               -- x
    Double ->                               -- y
    m Cursor
cursorNewFromSurface display surface x y = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    let surface' = unsafeManagedPtrGetPtr surface
    let x' = realToFrac x
    let y' = realToFrac y
    result <- gdk_cursor_new_from_surface display' surface' x' y'
    result' <- (wrapObject Cursor) result
    touchManagedPtr display
    touchManagedPtr surface
    return result'

-- method Cursor::get_cursor_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "CursorType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_get_cursor_type" gdk_cursor_get_cursor_type :: 
    Ptr Cursor ->                           -- _obj : TInterface "Gdk" "Cursor"
    IO CUInt


cursorGetCursorType ::
    (MonadIO m, CursorK a) =>
    a ->                                    -- _obj
    m CursorType
cursorGetCursorType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_cursor_get_cursor_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Cursor::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_get_display" gdk_cursor_get_display :: 
    Ptr Cursor ->                           -- _obj : TInterface "Gdk" "Cursor"
    IO (Ptr Display)


cursorGetDisplay ::
    (MonadIO m, CursorK a) =>
    a ->                                    -- _obj
    m Display
cursorGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_cursor_get_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method Cursor::get_image
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_get_image" gdk_cursor_get_image :: 
    Ptr Cursor ->                           -- _obj : TInterface "Gdk" "Cursor"
    IO (Ptr GdkPixbuf.Pixbuf)


cursorGetImage ::
    (MonadIO m, CursorK a) =>
    a ->                                    -- _obj
    m GdkPixbuf.Pixbuf
cursorGetImage _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_cursor_get_image _obj'
    result' <- (wrapObject GdkPixbuf.Pixbuf) result
    touchManagedPtr _obj
    return result'

-- method Cursor::get_surface
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_hot", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y_hot", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Surface"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_get_surface" gdk_cursor_get_surface :: 
    Ptr Cursor ->                           -- _obj : TInterface "Gdk" "Cursor"
    Ptr CDouble ->                          -- x_hot : TBasicType TDouble
    Ptr CDouble ->                          -- y_hot : TBasicType TDouble
    IO (Ptr Cairo.Surface)


cursorGetSurface ::
    (MonadIO m, CursorK a) =>
    a ->                                    -- _obj
    m (Cairo.Surface,Double,Double)
cursorGetSurface _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x_hot <- allocMem :: IO (Ptr CDouble)
    y_hot <- allocMem :: IO (Ptr CDouble)
    result <- gdk_cursor_get_surface _obj' x_hot y_hot
    result' <- (wrapBoxed Cairo.Surface) result
    x_hot' <- peek x_hot
    let x_hot'' = realToFrac x_hot'
    y_hot' <- peek y_hot
    let y_hot'' = realToFrac y_hot'
    touchManagedPtr _obj
    freeMem x_hot
    freeMem y_hot
    return (result', x_hot'', y_hot'')

-- method Cursor::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_ref" gdk_cursor_ref :: 
    Ptr Cursor ->                           -- _obj : TInterface "Gdk" "Cursor"
    IO (Ptr Cursor)

{-# DEPRECATED cursorRef ["(Since version 3.0)","Use g_object_ref() instead"]#-}
cursorRef ::
    (MonadIO m, CursorK a) =>
    a ->                                    -- _obj
    m Cursor
cursorRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_cursor_ref _obj'
    result' <- (wrapObject Cursor) result
    touchManagedPtr _obj
    return result'

-- method Cursor::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cursor_unref" gdk_cursor_unref :: 
    Ptr Cursor ->                           -- _obj : TInterface "Gdk" "Cursor"
    IO ()

{-# DEPRECATED cursorUnref ["(Since version 3.0)","Use g_object_unref() instead"]#-}
cursorUnref ::
    (MonadIO m, CursorK a) =>
    a ->                                    -- _obj
    m ()
cursorUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_cursor_unref _obj'
    touchManagedPtr _obj
    return ()

-- Enum CursorType

data CursorType = 
      CursorTypeXCursor
    | CursorTypeArrow
    | CursorTypeBasedArrowDown
    | CursorTypeBasedArrowUp
    | CursorTypeBoat
    | CursorTypeBogosity
    | CursorTypeBottomLeftCorner
    | CursorTypeBottomRightCorner
    | CursorTypeBottomSide
    | CursorTypeBottomTee
    | CursorTypeBoxSpiral
    | CursorTypeCenterPtr
    | CursorTypeCircle
    | CursorTypeClock
    | CursorTypeCoffeeMug
    | CursorTypeCross
    | CursorTypeCrossReverse
    | CursorTypeCrosshair
    | CursorTypeDiamondCross
    | CursorTypeDot
    | CursorTypeDotbox
    | CursorTypeDoubleArrow
    | CursorTypeDraftLarge
    | CursorTypeDraftSmall
    | CursorTypeDrapedBox
    | CursorTypeExchange
    | CursorTypeFleur
    | CursorTypeGobbler
    | CursorTypeGumby
    | CursorTypeHand1
    | CursorTypeHand2
    | CursorTypeHeart
    | CursorTypeIcon
    | CursorTypeIronCross
    | CursorTypeLeftPtr
    | CursorTypeLeftSide
    | CursorTypeLeftTee
    | CursorTypeLeftbutton
    | CursorTypeLlAngle
    | CursorTypeLrAngle
    | CursorTypeMan
    | CursorTypeMiddlebutton
    | CursorTypeMouse
    | CursorTypePencil
    | CursorTypePirate
    | CursorTypePlus
    | CursorTypeQuestionArrow
    | CursorTypeRightPtr
    | CursorTypeRightSide
    | CursorTypeRightTee
    | CursorTypeRightbutton
    | CursorTypeRtlLogo
    | CursorTypeSailboat
    | CursorTypeSbDownArrow
    | CursorTypeSbHDoubleArrow
    | CursorTypeSbLeftArrow
    | CursorTypeSbRightArrow
    | CursorTypeSbUpArrow
    | CursorTypeSbVDoubleArrow
    | CursorTypeShuttle
    | CursorTypeSizing
    | CursorTypeSpider
    | CursorTypeSpraycan
    | CursorTypeStar
    | CursorTypeTarget
    | CursorTypeTcross
    | CursorTypeTopLeftArrow
    | CursorTypeTopLeftCorner
    | CursorTypeTopRightCorner
    | CursorTypeTopSide
    | CursorTypeTopTee
    | CursorTypeTrek
    | CursorTypeUlAngle
    | CursorTypeUmbrella
    | CursorTypeUrAngle
    | CursorTypeWatch
    | CursorTypeXterm
    | CursorTypeLastCursor
    | CursorTypeBlankCursor
    | CursorTypeCursorIsPixmap
    | AnotherCursorType Int
    deriving (Show, Eq)

instance Enum CursorType where
    fromEnum CursorTypeXCursor = 0
    fromEnum CursorTypeArrow = 2
    fromEnum CursorTypeBasedArrowDown = 4
    fromEnum CursorTypeBasedArrowUp = 6
    fromEnum CursorTypeBoat = 8
    fromEnum CursorTypeBogosity = 10
    fromEnum CursorTypeBottomLeftCorner = 12
    fromEnum CursorTypeBottomRightCorner = 14
    fromEnum CursorTypeBottomSide = 16
    fromEnum CursorTypeBottomTee = 18
    fromEnum CursorTypeBoxSpiral = 20
    fromEnum CursorTypeCenterPtr = 22
    fromEnum CursorTypeCircle = 24
    fromEnum CursorTypeClock = 26
    fromEnum CursorTypeCoffeeMug = 28
    fromEnum CursorTypeCross = 30
    fromEnum CursorTypeCrossReverse = 32
    fromEnum CursorTypeCrosshair = 34
    fromEnum CursorTypeDiamondCross = 36
    fromEnum CursorTypeDot = 38
    fromEnum CursorTypeDotbox = 40
    fromEnum CursorTypeDoubleArrow = 42
    fromEnum CursorTypeDraftLarge = 44
    fromEnum CursorTypeDraftSmall = 46
    fromEnum CursorTypeDrapedBox = 48
    fromEnum CursorTypeExchange = 50
    fromEnum CursorTypeFleur = 52
    fromEnum CursorTypeGobbler = 54
    fromEnum CursorTypeGumby = 56
    fromEnum CursorTypeHand1 = 58
    fromEnum CursorTypeHand2 = 60
    fromEnum CursorTypeHeart = 62
    fromEnum CursorTypeIcon = 64
    fromEnum CursorTypeIronCross = 66
    fromEnum CursorTypeLeftPtr = 68
    fromEnum CursorTypeLeftSide = 70
    fromEnum CursorTypeLeftTee = 72
    fromEnum CursorTypeLeftbutton = 74
    fromEnum CursorTypeLlAngle = 76
    fromEnum CursorTypeLrAngle = 78
    fromEnum CursorTypeMan = 80
    fromEnum CursorTypeMiddlebutton = 82
    fromEnum CursorTypeMouse = 84
    fromEnum CursorTypePencil = 86
    fromEnum CursorTypePirate = 88
    fromEnum CursorTypePlus = 90
    fromEnum CursorTypeQuestionArrow = 92
    fromEnum CursorTypeRightPtr = 94
    fromEnum CursorTypeRightSide = 96
    fromEnum CursorTypeRightTee = 98
    fromEnum CursorTypeRightbutton = 100
    fromEnum CursorTypeRtlLogo = 102
    fromEnum CursorTypeSailboat = 104
    fromEnum CursorTypeSbDownArrow = 106
    fromEnum CursorTypeSbHDoubleArrow = 108
    fromEnum CursorTypeSbLeftArrow = 110
    fromEnum CursorTypeSbRightArrow = 112
    fromEnum CursorTypeSbUpArrow = 114
    fromEnum CursorTypeSbVDoubleArrow = 116
    fromEnum CursorTypeShuttle = 118
    fromEnum CursorTypeSizing = 120
    fromEnum CursorTypeSpider = 122
    fromEnum CursorTypeSpraycan = 124
    fromEnum CursorTypeStar = 126
    fromEnum CursorTypeTarget = 128
    fromEnum CursorTypeTcross = 130
    fromEnum CursorTypeTopLeftArrow = 132
    fromEnum CursorTypeTopLeftCorner = 134
    fromEnum CursorTypeTopRightCorner = 136
    fromEnum CursorTypeTopSide = 138
    fromEnum CursorTypeTopTee = 140
    fromEnum CursorTypeTrek = 142
    fromEnum CursorTypeUlAngle = 144
    fromEnum CursorTypeUmbrella = 146
    fromEnum CursorTypeUrAngle = 148
    fromEnum CursorTypeWatch = 150
    fromEnum CursorTypeXterm = 152
    fromEnum CursorTypeLastCursor = 153
    fromEnum CursorTypeBlankCursor = -2
    fromEnum CursorTypeCursorIsPixmap = -1
    fromEnum (AnotherCursorType k) = k

    toEnum -2 = CursorTypeBlankCursor
    toEnum -1 = CursorTypeCursorIsPixmap
    toEnum 0 = CursorTypeXCursor
    toEnum 2 = CursorTypeArrow
    toEnum 4 = CursorTypeBasedArrowDown
    toEnum 6 = CursorTypeBasedArrowUp
    toEnum 8 = CursorTypeBoat
    toEnum 10 = CursorTypeBogosity
    toEnum 12 = CursorTypeBottomLeftCorner
    toEnum 14 = CursorTypeBottomRightCorner
    toEnum 16 = CursorTypeBottomSide
    toEnum 18 = CursorTypeBottomTee
    toEnum 20 = CursorTypeBoxSpiral
    toEnum 22 = CursorTypeCenterPtr
    toEnum 24 = CursorTypeCircle
    toEnum 26 = CursorTypeClock
    toEnum 28 = CursorTypeCoffeeMug
    toEnum 30 = CursorTypeCross
    toEnum 32 = CursorTypeCrossReverse
    toEnum 34 = CursorTypeCrosshair
    toEnum 36 = CursorTypeDiamondCross
    toEnum 38 = CursorTypeDot
    toEnum 40 = CursorTypeDotbox
    toEnum 42 = CursorTypeDoubleArrow
    toEnum 44 = CursorTypeDraftLarge
    toEnum 46 = CursorTypeDraftSmall
    toEnum 48 = CursorTypeDrapedBox
    toEnum 50 = CursorTypeExchange
    toEnum 52 = CursorTypeFleur
    toEnum 54 = CursorTypeGobbler
    toEnum 56 = CursorTypeGumby
    toEnum 58 = CursorTypeHand1
    toEnum 60 = CursorTypeHand2
    toEnum 62 = CursorTypeHeart
    toEnum 64 = CursorTypeIcon
    toEnum 66 = CursorTypeIronCross
    toEnum 68 = CursorTypeLeftPtr
    toEnum 70 = CursorTypeLeftSide
    toEnum 72 = CursorTypeLeftTee
    toEnum 74 = CursorTypeLeftbutton
    toEnum 76 = CursorTypeLlAngle
    toEnum 78 = CursorTypeLrAngle
    toEnum 80 = CursorTypeMan
    toEnum 82 = CursorTypeMiddlebutton
    toEnum 84 = CursorTypeMouse
    toEnum 86 = CursorTypePencil
    toEnum 88 = CursorTypePirate
    toEnum 90 = CursorTypePlus
    toEnum 92 = CursorTypeQuestionArrow
    toEnum 94 = CursorTypeRightPtr
    toEnum 96 = CursorTypeRightSide
    toEnum 98 = CursorTypeRightTee
    toEnum 100 = CursorTypeRightbutton
    toEnum 102 = CursorTypeRtlLogo
    toEnum 104 = CursorTypeSailboat
    toEnum 106 = CursorTypeSbDownArrow
    toEnum 108 = CursorTypeSbHDoubleArrow
    toEnum 110 = CursorTypeSbLeftArrow
    toEnum 112 = CursorTypeSbRightArrow
    toEnum 114 = CursorTypeSbUpArrow
    toEnum 116 = CursorTypeSbVDoubleArrow
    toEnum 118 = CursorTypeShuttle
    toEnum 120 = CursorTypeSizing
    toEnum 122 = CursorTypeSpider
    toEnum 124 = CursorTypeSpraycan
    toEnum 126 = CursorTypeStar
    toEnum 128 = CursorTypeTarget
    toEnum 130 = CursorTypeTcross
    toEnum 132 = CursorTypeTopLeftArrow
    toEnum 134 = CursorTypeTopLeftCorner
    toEnum 136 = CursorTypeTopRightCorner
    toEnum 138 = CursorTypeTopSide
    toEnum 140 = CursorTypeTopTee
    toEnum 142 = CursorTypeTrek
    toEnum 144 = CursorTypeUlAngle
    toEnum 146 = CursorTypeUmbrella
    toEnum 148 = CursorTypeUrAngle
    toEnum 150 = CursorTypeWatch
    toEnum 152 = CursorTypeXterm
    toEnum 153 = CursorTypeLastCursor
    toEnum k = AnotherCursorType k

foreign import ccall "gdk_cursor_type_get_type" c_gdk_cursor_type_get_type :: 
    IO GType

instance BoxedEnum CursorType where
    boxedEnumType _ = c_gdk_cursor_type_get_type

-- object Device 
newtype Device = Device (ForeignPtr Device)
noDevice :: Maybe Device
noDevice = Nothing

foreign import ccall "gdk_device_get_type"
    c_gdk_device_get_type :: IO GType

type instance ParentTypes Device = '[GObject.Object]

instance GObject Device where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_device_get_type
    

class GObject o => DeviceK o
instance (GObject o, IsDescendantOf Device o) => DeviceK o

toDevice :: DeviceK o => o -> IO Device
toDevice = unsafeCastTo Device

-- method Device::get_associated_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Device"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_associated_device" gdk_device_get_associated_device :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO (Ptr Device)


deviceGetAssociatedDevice ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m Device
deviceGetAssociatedDevice _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_associated_device _obj'
    result' <- (newObject Device) result
    touchManagedPtr _obj
    return result'

-- method Device::get_axis_use
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "AxisUse"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_axis_use" gdk_device_get_axis_use :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Word32 ->                               -- index_ : TBasicType TUInt32
    IO CUInt


deviceGetAxisUse ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- index_
    m AxisUse
deviceGetAxisUse _obj index_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_axis_use _obj' index_
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Device::get_device_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DeviceType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_device_type" gdk_device_get_device_type :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CUInt


deviceGetDeviceType ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m DeviceType
deviceGetDeviceType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_device_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Device::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_display" gdk_device_get_display :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO (Ptr Display)


deviceGetDisplay ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m Display
deviceGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method Device::get_has_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_has_cursor" gdk_device_get_has_cursor :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CInt


deviceGetHasCursor ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m Bool
deviceGetHasCursor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_has_cursor _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Device::get_key
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_key" gdk_device_get_key :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Word32 ->                               -- index_ : TBasicType TUInt32
    Ptr Word32 ->                           -- keyval : TBasicType TUInt32
    Ptr CUInt ->                            -- modifiers : TInterface "Gdk" "ModifierType"
    IO CInt


deviceGetKey ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- index_
    m (Bool,Word32,[ModifierType])
deviceGetKey _obj index_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    keyval <- allocMem :: IO (Ptr Word32)
    modifiers <- allocMem :: IO (Ptr CUInt)
    result <- gdk_device_get_key _obj' index_ keyval modifiers
    let result' = (/= 0) result
    keyval' <- peek keyval
    modifiers' <- peek modifiers
    let modifiers'' = wordToGFlags modifiers'
    touchManagedPtr _obj
    freeMem keyval
    freeMem modifiers
    return (result', keyval', modifiers'')

-- method Device::get_last_event_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_last_event_window" gdk_device_get_last_event_window :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO (Ptr Window)


deviceGetLastEventWindow ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m Window
deviceGetLastEventWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_last_event_window _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Device::get_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "InputMode"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_mode" gdk_device_get_mode :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CUInt


deviceGetMode ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m InputMode
deviceGetMode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_mode _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Device::get_n_axes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_n_axes" gdk_device_get_n_axes :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO Int32


deviceGetNAxes ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m Int32
deviceGetNAxes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_n_axes _obj'
    touchManagedPtr _obj
    return result

-- method Device::get_n_keys
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_n_keys" gdk_device_get_n_keys :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO Int32


deviceGetNKeys ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m Int32
deviceGetNKeys _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_n_keys _obj'
    touchManagedPtr _obj
    return result

-- method Device::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_name" gdk_device_get_name :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CString


deviceGetName ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m T.Text
deviceGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_name _obj'
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Device::get_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_position" gdk_device_get_position :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Ptr (Ptr Screen) ->                     -- screen : TInterface "Gdk" "Screen"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    IO ()


deviceGetPosition ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m (Screen,Int32,Int32)
deviceGetPosition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    screen <- allocMem :: IO (Ptr (Ptr Screen))
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    gdk_device_get_position _obj' screen x y
    screen' <- peek screen
    screen'' <- (newObject Screen) screen'
    x' <- peek x
    y' <- peek y
    touchManagedPtr _obj
    freeMem screen
    freeMem x
    freeMem y
    return (screen'', x', y')

-- method Device::get_position_double
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_position_double" gdk_device_get_position_double :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Ptr (Ptr Screen) ->                     -- screen : TInterface "Gdk" "Screen"
    Ptr CDouble ->                          -- x : TBasicType TDouble
    Ptr CDouble ->                          -- y : TBasicType TDouble
    IO ()


deviceGetPositionDouble ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m (Screen,Double,Double)
deviceGetPositionDouble _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    screen <- allocMem :: IO (Ptr (Ptr Screen))
    x <- allocMem :: IO (Ptr CDouble)
    y <- allocMem :: IO (Ptr CDouble)
    gdk_device_get_position_double _obj' screen x y
    screen' <- peek screen
    screen'' <- (newObject Screen) screen'
    x' <- peek x
    let x'' = realToFrac x'
    y' <- peek y
    let y'' = realToFrac y'
    touchManagedPtr _obj
    freeMem screen
    freeMem x
    freeMem y
    return (screen'', x'', y'')

-- method Device::get_product_id
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_product_id" gdk_device_get_product_id :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CString


deviceGetProductId ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m T.Text
deviceGetProductId _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_product_id _obj'
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Device::get_source
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "InputSource"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_source" gdk_device_get_source :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CUInt


deviceGetSource ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m InputSource
deviceGetSource _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_source _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Device::get_vendor_id
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_vendor_id" gdk_device_get_vendor_id :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO CString


deviceGetVendorId ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m T.Text
deviceGetVendorId _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_get_vendor_id _obj'
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Device::get_window_at_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "win_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "win_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_window_at_position" gdk_device_get_window_at_position :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Ptr Int32 ->                            -- win_x : TBasicType TInt32
    Ptr Int32 ->                            -- win_y : TBasicType TInt32
    IO (Ptr Window)


deviceGetWindowAtPosition ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m (Window,Int32,Int32)
deviceGetWindowAtPosition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    win_x <- allocMem :: IO (Ptr Int32)
    win_y <- allocMem :: IO (Ptr Int32)
    result <- gdk_device_get_window_at_position _obj' win_x win_y
    result' <- (newObject Window) result
    win_x' <- peek win_x
    win_y' <- peek win_y
    touchManagedPtr _obj
    freeMem win_x
    freeMem win_y
    return (result', win_x', win_y')

-- method Device::get_window_at_position_double
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "win_x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "win_y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_get_window_at_position_double" gdk_device_get_window_at_position_double :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Ptr CDouble ->                          -- win_x : TBasicType TDouble
    Ptr CDouble ->                          -- win_y : TBasicType TDouble
    IO (Ptr Window)


deviceGetWindowAtPositionDouble ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m (Window,Double,Double)
deviceGetWindowAtPositionDouble _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    win_x <- allocMem :: IO (Ptr CDouble)
    win_y <- allocMem :: IO (Ptr CDouble)
    result <- gdk_device_get_window_at_position_double _obj' win_x win_y
    result' <- (newObject Window) result
    win_x' <- peek win_x
    let win_x'' = realToFrac win_x'
    win_y' <- peek win_y
    let win_y'' = realToFrac win_y'
    touchManagedPtr _obj
    freeMem win_x
    freeMem win_y
    return (result', win_x'', win_y'')

-- method Device::grab
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "grab_ownership", argType = TInterface "Gdk" "GrabOwnership", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "grab_ownership", argType = TInterface "Gdk" "GrabOwnership", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "GrabStatus"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_grab" gdk_device_grab :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    CUInt ->                                -- grab_ownership : TInterface "Gdk" "GrabOwnership"
    CInt ->                                 -- owner_events : TBasicType TBoolean
    CUInt ->                                -- event_mask : TInterface "Gdk" "EventMask"
    Ptr Cursor ->                           -- cursor : TInterface "Gdk" "Cursor"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO CUInt


deviceGrab ::
    (MonadIO m, DeviceK a, WindowK b, CursorK c) =>
    a ->                                    -- _obj
    b ->                                    -- window
    GrabOwnership ->                        -- grab_ownership
    Bool ->                                 -- owner_events
    [EventMask] ->                          -- event_mask
    Maybe (c) ->                            -- cursor
    Word32 ->                               -- time_
    m GrabStatus
deviceGrab _obj window grab_ownership owner_events event_mask cursor time_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let window' = unsafeManagedPtrCastPtr window
    let grab_ownership' = (fromIntegral . fromEnum) grab_ownership
    let owner_events' = (fromIntegral . fromEnum) owner_events
    let event_mask' = gflagsToWord event_mask
    maybeCursor <- case cursor of
        Nothing -> return nullPtr
        Just jCursor -> do
            let jCursor' = unsafeManagedPtrCastPtr jCursor
            return jCursor'
    result <- gdk_device_grab _obj' window' grab_ownership' owner_events' event_mask' maybeCursor time_
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    touchManagedPtr window
    whenJust cursor touchManagedPtr
    return result'

-- method Device::list_axes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Atom")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_list_axes" gdk_device_list_axes :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO (Ptr (GList (Ptr Atom)))


deviceListAxes ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m [Atom]
deviceListAxes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_list_axes _obj'
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- unpackGList result
    result'' <- mapM (\x -> Atom <$> newForeignPtr_ x) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Device::list_slave_devices
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Device")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_list_slave_devices" gdk_device_list_slave_devices :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    IO (Ptr (GList (Ptr Device)))


deviceListSlaveDevices ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    m [Device]
deviceListSlaveDevices _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_list_slave_devices _obj'
    result' <- unpackGList result
    result'' <- mapM (newObject Device) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Device::set_axis_use
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_set_axis_use" gdk_device_set_axis_use :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Word32 ->                               -- index_ : TBasicType TUInt32
    CUInt ->                                -- use : TInterface "Gdk" "AxisUse"
    IO ()


deviceSetAxisUse ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- index_
    AxisUse ->                              -- use
    m ()
deviceSetAxisUse _obj index_ use = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let use' = (fromIntegral . fromEnum) use
    gdk_device_set_axis_use _obj' index_ use'
    touchManagedPtr _obj
    return ()

-- method Device::set_key
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_set_key" gdk_device_set_key :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Word32 ->                               -- index_ : TBasicType TUInt32
    Word32 ->                               -- keyval : TBasicType TUInt32
    CUInt ->                                -- modifiers : TInterface "Gdk" "ModifierType"
    IO ()


deviceSetKey ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- index_
    Word32 ->                               -- keyval
    [ModifierType] ->                       -- modifiers
    m ()
deviceSetKey _obj index_ keyval modifiers = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let modifiers' = gflagsToWord modifiers
    gdk_device_set_key _obj' index_ keyval modifiers'
    touchManagedPtr _obj
    return ()

-- method Device::set_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mode", argType = TInterface "Gdk" "InputMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mode", argType = TInterface "Gdk" "InputMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_set_mode" gdk_device_set_mode :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    CUInt ->                                -- mode : TInterface "Gdk" "InputMode"
    IO CInt


deviceSetMode ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    InputMode ->                            -- mode
    m Bool
deviceSetMode _obj mode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let mode' = (fromIntegral . fromEnum) mode
    result <- gdk_device_set_mode _obj' mode'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Device::ungrab
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_ungrab" gdk_device_ungrab :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


deviceUngrab ::
    (MonadIO m, DeviceK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- time_
    m ()
deviceUngrab _obj time_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_device_ungrab _obj' time_
    touchManagedPtr _obj
    return ()

-- method Device::warp
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_warp" gdk_device_warp :: 
    Ptr Device ->                           -- _obj : TInterface "Gdk" "Device"
    Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO ()


deviceWarp ::
    (MonadIO m, DeviceK a, ScreenK b) =>
    a ->                                    -- _obj
    b ->                                    -- screen
    Int32 ->                                -- x
    Int32 ->                                -- y
    m ()
deviceWarp _obj screen x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let screen' = unsafeManagedPtrCastPtr screen
    gdk_device_warp _obj' screen' x y
    touchManagedPtr _obj
    touchManagedPtr screen
    return ()

-- method Device::grab_info_libgtk_only
-- method type : MemberFunction
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "grab_window", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_grab_info_libgtk_only" gdk_device_grab_info_libgtk_only :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Ptr (Ptr Window) ->                     -- grab_window : TInterface "Gdk" "Window"
    Ptr CInt ->                             -- owner_events : TBasicType TBoolean
    IO CInt

{-# DEPRECATED deviceGrabInfoLibgtkOnly ["(Since version 3.16)","The symbol was never meant to be used outside","  of GTK+"]#-}
deviceGrabInfoLibgtkOnly ::
    (MonadIO m, DisplayK a, DeviceK b) =>
    a ->                                    -- display
    b ->                                    -- device
    m (Bool,Window,Bool)
deviceGrabInfoLibgtkOnly display device = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    let device' = unsafeManagedPtrCastPtr device
    grab_window <- allocMem :: IO (Ptr (Ptr Window))
    owner_events <- allocMem :: IO (Ptr CInt)
    result <- gdk_device_grab_info_libgtk_only display' device' grab_window owner_events
    let result' = (/= 0) result
    grab_window' <- peek grab_window
    grab_window'' <- (newObject Window) grab_window'
    owner_events' <- peek owner_events
    let owner_events'' = (/= 0) owner_events'
    touchManagedPtr display
    touchManagedPtr device
    freeMem grab_window
    freeMem owner_events
    return (result', grab_window'', owner_events'')

-- signal Device::changed
type DeviceChangedCallback =
    IO ()

noDeviceChangedCallback :: Maybe DeviceChangedCallback
noDeviceChangedCallback = Nothing

type DeviceChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDeviceChangedCallback :: DeviceChangedCallbackC -> IO (FunPtr DeviceChangedCallbackC)

deviceChangedClosure :: DeviceChangedCallback -> IO Closure
deviceChangedClosure cb = newCClosure =<< mkDeviceChangedCallback wrapped
    where wrapped = deviceChangedCallbackWrapper cb

deviceChangedCallbackWrapper ::
    DeviceChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
deviceChangedCallbackWrapper _cb _ _ = do
    _cb 

onDeviceChanged :: (GObject a, MonadIO m) => a -> DeviceChangedCallback -> m SignalHandlerId
onDeviceChanged obj cb = liftIO $ connectDeviceChanged obj cb SignalConnectBefore
afterDeviceChanged :: (GObject a, MonadIO m) => a -> DeviceChangedCallback -> m SignalHandlerId
afterDeviceChanged obj cb = connectDeviceChanged obj cb SignalConnectAfter

connectDeviceChanged :: (GObject a, MonadIO m) =>
                        a -> DeviceChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectDeviceChanged obj cb after = liftIO $ do
    cb' <- mkDeviceChangedCallback (deviceChangedCallbackWrapper cb)
    connectSignalFunPtr obj "changed" cb' after

-- object DeviceManager 
newtype DeviceManager = DeviceManager (ForeignPtr DeviceManager)
noDeviceManager :: Maybe DeviceManager
noDeviceManager = Nothing

foreign import ccall "gdk_device_manager_get_type"
    c_gdk_device_manager_get_type :: IO GType

type instance ParentTypes DeviceManager = '[GObject.Object]

instance GObject DeviceManager where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_device_manager_get_type
    

class GObject o => DeviceManagerK o
instance (GObject o, IsDescendantOf DeviceManager o) => DeviceManagerK o

toDeviceManager :: DeviceManagerK o => o -> IO DeviceManager
toDeviceManager = unsafeCastTo DeviceManager

-- method DeviceManager::get_client_pointer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Device"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_manager_get_client_pointer" gdk_device_manager_get_client_pointer :: 
    Ptr DeviceManager ->                    -- _obj : TInterface "Gdk" "DeviceManager"
    IO (Ptr Device)


deviceManagerGetClientPointer ::
    (MonadIO m, DeviceManagerK a) =>
    a ->                                    -- _obj
    m Device
deviceManagerGetClientPointer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_manager_get_client_pointer _obj'
    result' <- (newObject Device) result
    touchManagedPtr _obj
    return result'

-- method DeviceManager::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_manager_get_display" gdk_device_manager_get_display :: 
    Ptr DeviceManager ->                    -- _obj : TInterface "Gdk" "DeviceManager"
    IO (Ptr Display)


deviceManagerGetDisplay ::
    (MonadIO m, DeviceManagerK a) =>
    a ->                                    -- _obj
    m Display
deviceManagerGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_device_manager_get_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method DeviceManager::list_devices
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gdk" "DeviceType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DeviceManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gdk" "DeviceType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Device")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_device_manager_list_devices" gdk_device_manager_list_devices :: 
    Ptr DeviceManager ->                    -- _obj : TInterface "Gdk" "DeviceManager"
    CUInt ->                                -- type : TInterface "Gdk" "DeviceType"
    IO (Ptr (GList (Ptr Device)))


deviceManagerListDevices ::
    (MonadIO m, DeviceManagerK a) =>
    a ->                                    -- _obj
    DeviceType ->                           -- type
    m [Device]
deviceManagerListDevices _obj type_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let type_' = (fromIntegral . fromEnum) type_
    result <- gdk_device_manager_list_devices _obj' type_'
    result' <- unpackGList result
    result'' <- mapM (newObject Device) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- signal DeviceManager::device-added
type DeviceManagerDeviceAddedCallback =
    Device ->
    IO ()

noDeviceManagerDeviceAddedCallback :: Maybe DeviceManagerDeviceAddedCallback
noDeviceManagerDeviceAddedCallback = Nothing

type DeviceManagerDeviceAddedCallbackC =
    Ptr () ->                               -- object
    Ptr Device ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDeviceManagerDeviceAddedCallback :: DeviceManagerDeviceAddedCallbackC -> IO (FunPtr DeviceManagerDeviceAddedCallbackC)

deviceManagerDeviceAddedClosure :: DeviceManagerDeviceAddedCallback -> IO Closure
deviceManagerDeviceAddedClosure cb = newCClosure =<< mkDeviceManagerDeviceAddedCallback wrapped
    where wrapped = deviceManagerDeviceAddedCallbackWrapper cb

deviceManagerDeviceAddedCallbackWrapper ::
    DeviceManagerDeviceAddedCallback ->
    Ptr () ->
    Ptr Device ->
    Ptr () ->
    IO ()
deviceManagerDeviceAddedCallbackWrapper _cb _ device _ = do
    device' <- (newObject Device) device
    _cb  device'

onDeviceManagerDeviceAdded :: (GObject a, MonadIO m) => a -> DeviceManagerDeviceAddedCallback -> m SignalHandlerId
onDeviceManagerDeviceAdded obj cb = liftIO $ connectDeviceManagerDeviceAdded obj cb SignalConnectBefore
afterDeviceManagerDeviceAdded :: (GObject a, MonadIO m) => a -> DeviceManagerDeviceAddedCallback -> m SignalHandlerId
afterDeviceManagerDeviceAdded obj cb = connectDeviceManagerDeviceAdded obj cb SignalConnectAfter

connectDeviceManagerDeviceAdded :: (GObject a, MonadIO m) =>
                                   a -> DeviceManagerDeviceAddedCallback -> SignalConnectMode -> m SignalHandlerId
connectDeviceManagerDeviceAdded obj cb after = liftIO $ do
    cb' <- mkDeviceManagerDeviceAddedCallback (deviceManagerDeviceAddedCallbackWrapper cb)
    connectSignalFunPtr obj "device-added" cb' after

-- signal DeviceManager::device-changed
type DeviceManagerDeviceChangedCallback =
    Device ->
    IO ()

noDeviceManagerDeviceChangedCallback :: Maybe DeviceManagerDeviceChangedCallback
noDeviceManagerDeviceChangedCallback = Nothing

type DeviceManagerDeviceChangedCallbackC =
    Ptr () ->                               -- object
    Ptr Device ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDeviceManagerDeviceChangedCallback :: DeviceManagerDeviceChangedCallbackC -> IO (FunPtr DeviceManagerDeviceChangedCallbackC)

deviceManagerDeviceChangedClosure :: DeviceManagerDeviceChangedCallback -> IO Closure
deviceManagerDeviceChangedClosure cb = newCClosure =<< mkDeviceManagerDeviceChangedCallback wrapped
    where wrapped = deviceManagerDeviceChangedCallbackWrapper cb

deviceManagerDeviceChangedCallbackWrapper ::
    DeviceManagerDeviceChangedCallback ->
    Ptr () ->
    Ptr Device ->
    Ptr () ->
    IO ()
deviceManagerDeviceChangedCallbackWrapper _cb _ device _ = do
    device' <- (newObject Device) device
    _cb  device'

onDeviceManagerDeviceChanged :: (GObject a, MonadIO m) => a -> DeviceManagerDeviceChangedCallback -> m SignalHandlerId
onDeviceManagerDeviceChanged obj cb = liftIO $ connectDeviceManagerDeviceChanged obj cb SignalConnectBefore
afterDeviceManagerDeviceChanged :: (GObject a, MonadIO m) => a -> DeviceManagerDeviceChangedCallback -> m SignalHandlerId
afterDeviceManagerDeviceChanged obj cb = connectDeviceManagerDeviceChanged obj cb SignalConnectAfter

connectDeviceManagerDeviceChanged :: (GObject a, MonadIO m) =>
                                     a -> DeviceManagerDeviceChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectDeviceManagerDeviceChanged obj cb after = liftIO $ do
    cb' <- mkDeviceManagerDeviceChangedCallback (deviceManagerDeviceChangedCallbackWrapper cb)
    connectSignalFunPtr obj "device-changed" cb' after

-- signal DeviceManager::device-removed
type DeviceManagerDeviceRemovedCallback =
    Device ->
    IO ()

noDeviceManagerDeviceRemovedCallback :: Maybe DeviceManagerDeviceRemovedCallback
noDeviceManagerDeviceRemovedCallback = Nothing

type DeviceManagerDeviceRemovedCallbackC =
    Ptr () ->                               -- object
    Ptr Device ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDeviceManagerDeviceRemovedCallback :: DeviceManagerDeviceRemovedCallbackC -> IO (FunPtr DeviceManagerDeviceRemovedCallbackC)

deviceManagerDeviceRemovedClosure :: DeviceManagerDeviceRemovedCallback -> IO Closure
deviceManagerDeviceRemovedClosure cb = newCClosure =<< mkDeviceManagerDeviceRemovedCallback wrapped
    where wrapped = deviceManagerDeviceRemovedCallbackWrapper cb

deviceManagerDeviceRemovedCallbackWrapper ::
    DeviceManagerDeviceRemovedCallback ->
    Ptr () ->
    Ptr Device ->
    Ptr () ->
    IO ()
deviceManagerDeviceRemovedCallbackWrapper _cb _ device _ = do
    device' <- (newObject Device) device
    _cb  device'

onDeviceManagerDeviceRemoved :: (GObject a, MonadIO m) => a -> DeviceManagerDeviceRemovedCallback -> m SignalHandlerId
onDeviceManagerDeviceRemoved obj cb = liftIO $ connectDeviceManagerDeviceRemoved obj cb SignalConnectBefore
afterDeviceManagerDeviceRemoved :: (GObject a, MonadIO m) => a -> DeviceManagerDeviceRemovedCallback -> m SignalHandlerId
afterDeviceManagerDeviceRemoved obj cb = connectDeviceManagerDeviceRemoved obj cb SignalConnectAfter

connectDeviceManagerDeviceRemoved :: (GObject a, MonadIO m) =>
                                     a -> DeviceManagerDeviceRemovedCallback -> SignalConnectMode -> m SignalHandlerId
connectDeviceManagerDeviceRemoved obj cb after = liftIO $ do
    cb' <- mkDeviceManagerDeviceRemovedCallback (deviceManagerDeviceRemovedCallbackWrapper cb)
    connectSignalFunPtr obj "device-removed" cb' after

-- Enum DeviceType

data DeviceType = 
      DeviceTypeMaster
    | DeviceTypeSlave
    | DeviceTypeFloating
    | AnotherDeviceType Int
    deriving (Show, Eq)

instance Enum DeviceType where
    fromEnum DeviceTypeMaster = 0
    fromEnum DeviceTypeSlave = 1
    fromEnum DeviceTypeFloating = 2
    fromEnum (AnotherDeviceType k) = k

    toEnum 0 = DeviceTypeMaster
    toEnum 1 = DeviceTypeSlave
    toEnum 2 = DeviceTypeFloating
    toEnum k = AnotherDeviceType k

foreign import ccall "gdk_device_type_get_type" c_gdk_device_type_get_type :: 
    IO GType

instance BoxedEnum DeviceType where
    boxedEnumType _ = c_gdk_device_type_get_type

-- object Display 
newtype Display = Display (ForeignPtr Display)
noDisplay :: Maybe Display
noDisplay = Nothing

foreign import ccall "gdk_display_get_type"
    c_gdk_display_get_type :: IO GType

type instance ParentTypes Display = '[GObject.Object]

instance GObject Display where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_display_get_type
    

class GObject o => DisplayK o
instance (GObject o, IsDescendantOf Display o) => DisplayK o

toDisplay :: DisplayK o => o -> IO Display
toDisplay = unsafeCastTo Display

-- method Display::beep
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_beep" gdk_display_beep :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO ()


displayBeep ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m ()
displayBeep _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_beep _obj'
    touchManagedPtr _obj
    return ()

-- method Display::close
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_close" gdk_display_close :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO ()


displayClose ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m ()
displayClose _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_close _obj'
    touchManagedPtr _obj
    return ()

-- method Display::device_is_grabbed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_device_is_grabbed" gdk_display_device_is_grabbed :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    IO CInt


displayDeviceIsGrabbed ::
    (MonadIO m, DisplayK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m Bool
displayDeviceIsGrabbed _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    result <- gdk_display_device_is_grabbed _obj' device'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr device
    return result'

-- method Display::flush
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_flush" gdk_display_flush :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO ()


displayFlush ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m ()
displayFlush _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_flush _obj'
    touchManagedPtr _obj
    return ()

-- method Display::get_app_launch_context
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "AppLaunchContext"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_app_launch_context" gdk_display_get_app_launch_context :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr AppLaunchContext)


displayGetAppLaunchContext ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m AppLaunchContext
displayGetAppLaunchContext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_app_launch_context _obj'
    result' <- (wrapObject AppLaunchContext) result
    touchManagedPtr _obj
    return result'

-- method Display::get_default_cursor_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_default_cursor_size" gdk_display_get_default_cursor_size :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO Word32


displayGetDefaultCursorSize ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Word32
displayGetDefaultCursorSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_default_cursor_size _obj'
    touchManagedPtr _obj
    return result

-- method Display::get_default_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_default_group" gdk_display_get_default_group :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr Window)


displayGetDefaultGroup ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Window
displayGetDefaultGroup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_default_group _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Display::get_default_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_default_screen" gdk_display_get_default_screen :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr Screen)


displayGetDefaultScreen ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Screen
displayGetDefaultScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_default_screen _obj'
    result' <- (newObject Screen) result
    touchManagedPtr _obj
    return result'

-- method Display::get_device_manager
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DeviceManager"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_device_manager" gdk_display_get_device_manager :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr DeviceManager)


displayGetDeviceManager ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m DeviceManager
displayGetDeviceManager _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_device_manager _obj'
    result' <- (newObject DeviceManager) result
    touchManagedPtr _obj
    return result'

-- method Display::get_event
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_event" gdk_display_get_event :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr Event)


displayGetEvent ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Event
displayGetEvent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_event _obj'
    result' <- (wrapBoxed Event) result
    touchManagedPtr _obj
    return result'

-- method Display::get_maximal_cursor_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_maximal_cursor_size" gdk_display_get_maximal_cursor_size :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Word32 ->                           -- width : TBasicType TUInt32
    Ptr Word32 ->                           -- height : TBasicType TUInt32
    IO ()


displayGetMaximalCursorSize ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m (Word32,Word32)
displayGetMaximalCursorSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    width <- allocMem :: IO (Ptr Word32)
    height <- allocMem :: IO (Ptr Word32)
    gdk_display_get_maximal_cursor_size _obj' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr _obj
    freeMem width
    freeMem height
    return (width', height')

-- method Display::get_n_screens
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_n_screens" gdk_display_get_n_screens :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO Int32

{-# DEPRECATED displayGetNScreens ["(Since version 3.10)","The number of screens is always 1."]#-}
displayGetNScreens ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Int32
displayGetNScreens _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_n_screens _obj'
    touchManagedPtr _obj
    return result

-- method Display::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_name" gdk_display_get_name :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CString


displayGetName ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m T.Text
displayGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_name _obj'
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Display::get_pointer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_pointer" gdk_display_get_pointer :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr (Ptr Screen) ->                     -- screen : TInterface "Gdk" "Screen"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
    IO ()

{-# DEPRECATED displayGetPointer ["(Since version 3.0)","Use gdk_device_get_position() instead."]#-}
displayGetPointer ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m (Screen,Int32,Int32,[ModifierType])
displayGetPointer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    screen <- allocMem :: IO (Ptr (Ptr Screen))
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    mask <- allocMem :: IO (Ptr CUInt)
    gdk_display_get_pointer _obj' screen x y mask
    screen' <- peek screen
    screen'' <- (newObject Screen) screen'
    x' <- peek x
    y' <- peek y
    mask' <- peek mask
    let mask'' = wordToGFlags mask'
    touchManagedPtr _obj
    freeMem screen
    freeMem x
    freeMem y
    freeMem mask
    return (screen'', x', y', mask'')

-- method Display::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_screen" gdk_display_get_screen :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Int32 ->                                -- screen_num : TBasicType TInt32
    IO (Ptr Screen)


displayGetScreen ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- screen_num
    m Screen
displayGetScreen _obj screen_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_get_screen _obj' screen_num
    result' <- (newObject Screen) result
    touchManagedPtr _obj
    return result'

-- method Display::get_window_at_pointer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "win_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "win_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_window_at_pointer" gdk_display_get_window_at_pointer :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Int32 ->                            -- win_x : TBasicType TInt32
    Ptr Int32 ->                            -- win_y : TBasicType TInt32
    IO (Ptr Window)

{-# DEPRECATED displayGetWindowAtPointer ["(Since version 3.0)","Use gdk_device_get_window_at_position() instead."]#-}
displayGetWindowAtPointer ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m (Window,Int32,Int32)
displayGetWindowAtPointer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    win_x <- allocMem :: IO (Ptr Int32)
    win_y <- allocMem :: IO (Ptr Int32)
    result <- gdk_display_get_window_at_pointer _obj' win_x win_y
    result' <- (newObject Window) result
    win_x' <- peek win_x
    win_y' <- peek win_y
    touchManagedPtr _obj
    freeMem win_x
    freeMem win_y
    return (result', win_x', win_y')

-- method Display::has_pending
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_has_pending" gdk_display_has_pending :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displayHasPending ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displayHasPending _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_has_pending _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::is_closed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_is_closed" gdk_display_is_closed :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displayIsClosed ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displayIsClosed _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_is_closed _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::keyboard_ungrab
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_keyboard_ungrab" gdk_display_keyboard_ungrab :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()

{-# DEPRECATED displayKeyboardUngrab ["(Since version 3.0)","Use gdk_device_ungrab(), together with gdk_device_grab()","            instead."]#-}
displayKeyboardUngrab ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- time_
    m ()
displayKeyboardUngrab _obj time_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_keyboard_ungrab _obj' time_
    touchManagedPtr _obj
    return ()

-- method Display::list_devices
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Device")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_list_devices" gdk_display_list_devices :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr (GList (Ptr Device)))

{-# DEPRECATED displayListDevices ["(Since version 3.0)","Use gdk_device_manager_list_devices() instead."]#-}
displayListDevices ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m [Device]
displayListDevices _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_list_devices _obj'
    result' <- unpackGList result
    result'' <- mapM (newObject Device) result'
    touchManagedPtr _obj
    return result''

-- method Display::notify_startup_complete
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_notify_startup_complete" gdk_display_notify_startup_complete :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    CString ->                              -- startup_id : TBasicType TUTF8
    IO ()


displayNotifyStartupComplete ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- startup_id
    m ()
displayNotifyStartupComplete _obj startup_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    startup_id' <- textToCString startup_id
    gdk_display_notify_startup_complete _obj' startup_id'
    touchManagedPtr _obj
    freeMem startup_id'
    return ()

-- method Display::peek_event
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_peek_event" gdk_display_peek_event :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO (Ptr Event)


displayPeekEvent ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Event
displayPeekEvent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_peek_event _obj'
    result' <- (wrapBoxed Event) result
    touchManagedPtr _obj
    return result'

-- method Display::pointer_is_grabbed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_pointer_is_grabbed" gdk_display_pointer_is_grabbed :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt

{-# DEPRECATED displayPointerIsGrabbed ["(Since version 3.0)","Use gdk_display_device_is_grabbed() instead."]#-}
displayPointerIsGrabbed ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displayPointerIsGrabbed _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_pointer_is_grabbed _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::pointer_ungrab
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_pointer_ungrab" gdk_display_pointer_ungrab :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()

{-# DEPRECATED displayPointerUngrab ["(Since version 3.0)","Use gdk_device_ungrab(), together with gdk_device_grab()","            instead."]#-}
displayPointerUngrab ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- time_
    m ()
displayPointerUngrab _obj time_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_pointer_ungrab _obj' time_
    touchManagedPtr _obj
    return ()

-- method Display::put_event
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_put_event" gdk_display_put_event :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Event ->                            -- event : TInterface "Gdk" "Event"
    IO ()


displayPutEvent ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Event ->                                -- event
    m ()
displayPutEvent _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    gdk_display_put_event _obj' event'
    touchManagedPtr _obj
    touchManagedPtr event
    return ()

-- method Display::request_selection_notification
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_request_selection_notification" gdk_display_request_selection_notification :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    IO CInt


displayRequestSelectionNotification ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Atom ->                                 -- selection
    m Bool
displayRequestSelectionNotification _obj selection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let selection' = unsafeManagedPtrGetPtr selection
    result <- gdk_display_request_selection_notification _obj' selection'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr selection
    return result'

-- method Display::set_double_click_distance
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "distance", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "distance", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_set_double_click_distance" gdk_display_set_double_click_distance :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Word32 ->                               -- distance : TBasicType TUInt32
    IO ()


displaySetDoubleClickDistance ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- distance
    m ()
displaySetDoubleClickDistance _obj distance = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_set_double_click_distance _obj' distance
    touchManagedPtr _obj
    return ()

-- method Display::set_double_click_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "msec", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "msec", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_set_double_click_time" gdk_display_set_double_click_time :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Word32 ->                               -- msec : TBasicType TUInt32
    IO ()


displaySetDoubleClickTime ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- msec
    m ()
displaySetDoubleClickTime _obj msec = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_set_double_click_time _obj' msec
    touchManagedPtr _obj
    return ()

-- method Display::store_clipboard
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clipboard_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TCArray False (-1) 4 (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : [Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clipboard_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TCArray False (-1) 4 (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_store_clipboard" gdk_display_store_clipboard :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Window ->                           -- clipboard_window : TInterface "Gdk" "Window"
    Word32 ->                               -- time_ : TBasicType TUInt32
    Ptr (Ptr Atom) ->                       -- targets : TCArray False (-1) 4 (TInterface "Gdk" "Atom")
    Int32 ->                                -- n_targets : TBasicType TInt32
    IO ()


displayStoreClipboard ::
    (MonadIO m, DisplayK a, WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- clipboard_window
    Word32 ->                               -- time_
    [Atom] ->                               -- targets
    m ()
displayStoreClipboard _obj clipboard_window time_ targets = liftIO $ do
    let n_targets = fromIntegral $ length targets
    let _obj' = unsafeManagedPtrCastPtr _obj
    let clipboard_window' = unsafeManagedPtrCastPtr clipboard_window
    let targets' = map unsafeManagedPtrGetPtr targets
    targets'' <- packPtrArray targets'
    gdk_display_store_clipboard _obj' clipboard_window' time_ targets'' n_targets
    touchManagedPtr _obj
    touchManagedPtr clipboard_window
    mapM_ touchManagedPtr targets
    freeMem targets''
    return ()

-- method Display::supports_clipboard_persistence
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_clipboard_persistence" gdk_display_supports_clipboard_persistence :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displaySupportsClipboardPersistence ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsClipboardPersistence _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_clipboard_persistence _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::supports_composite
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_composite" gdk_display_supports_composite :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt

{-# DEPRECATED displaySupportsComposite ["(Since version 3.16)","Compositing is an outdated technology that","  only ever worked on X11."]#-}
displaySupportsComposite ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsComposite _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_composite _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::supports_cursor_alpha
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_cursor_alpha" gdk_display_supports_cursor_alpha :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displaySupportsCursorAlpha ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsCursorAlpha _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_cursor_alpha _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::supports_cursor_color
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_cursor_color" gdk_display_supports_cursor_color :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displaySupportsCursorColor ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsCursorColor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_cursor_color _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::supports_input_shapes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_input_shapes" gdk_display_supports_input_shapes :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displaySupportsInputShapes ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsInputShapes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_input_shapes _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::supports_selection_notification
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_selection_notification" gdk_display_supports_selection_notification :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displaySupportsSelectionNotification ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsSelectionNotification _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_selection_notification _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::supports_shapes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_supports_shapes" gdk_display_supports_shapes :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO CInt


displaySupportsShapes ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m Bool
displaySupportsShapes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_supports_shapes _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Display::sync
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_sync" gdk_display_sync :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    IO ()


displaySync ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- _obj
    m ()
displaySync _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_display_sync _obj'
    touchManagedPtr _obj
    return ()

-- method Display::warp_pointer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_warp_pointer" gdk_display_warp_pointer :: 
    Ptr Display ->                          -- _obj : TInterface "Gdk" "Display"
    Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO ()

{-# DEPRECATED displayWarpPointer ["(Since version 3.0)","Use gdk_device_warp() instead."]#-}
displayWarpPointer ::
    (MonadIO m, DisplayK a, ScreenK b) =>
    a ->                                    -- _obj
    b ->                                    -- screen
    Int32 ->                                -- x
    Int32 ->                                -- y
    m ()
displayWarpPointer _obj screen x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let screen' = unsafeManagedPtrCastPtr screen
    gdk_display_warp_pointer _obj' screen' x y
    touchManagedPtr _obj
    touchManagedPtr screen
    return ()

-- method Display::get_default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_get_default" gdk_display_get_default :: 
    IO (Ptr Display)


displayGetDefault ::
    (MonadIO m) =>
    m Display
displayGetDefault  = liftIO $ do
    result <- gdk_display_get_default
    result' <- (newObject Display) result
    return result'

-- method Display::open
-- method type : MemberFunction
-- Args : [Arg {argName = "display_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_open" gdk_display_open :: 
    CString ->                              -- display_name : TBasicType TUTF8
    IO (Ptr Display)


displayOpen ::
    (MonadIO m) =>
    T.Text ->                               -- display_name
    m Display
displayOpen display_name = liftIO $ do
    display_name' <- textToCString display_name
    result <- gdk_display_open display_name'
    result' <- (newObject Display) result
    freeMem display_name'
    return result'

-- method Display::open_default_libgtk_only
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_open_default_libgtk_only" gdk_display_open_default_libgtk_only :: 
    IO (Ptr Display)

{-# DEPRECATED displayOpenDefaultLibgtkOnly ["(Since version 3.16)","This symbol was never meant to be used outside","  of GTK+"]#-}
displayOpenDefaultLibgtkOnly ::
    (MonadIO m) =>
    m Display
displayOpenDefaultLibgtkOnly  = liftIO $ do
    result <- gdk_display_open_default_libgtk_only
    result' <- (newObject Display) result
    return result'

-- signal Display::closed
type DisplayClosedCallback =
    Bool ->
    IO ()

noDisplayClosedCallback :: Maybe DisplayClosedCallback
noDisplayClosedCallback = Nothing

type DisplayClosedCallbackC =
    Ptr () ->                               -- object
    CInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDisplayClosedCallback :: DisplayClosedCallbackC -> IO (FunPtr DisplayClosedCallbackC)

displayClosedClosure :: DisplayClosedCallback -> IO Closure
displayClosedClosure cb = newCClosure =<< mkDisplayClosedCallback wrapped
    where wrapped = displayClosedCallbackWrapper cb

displayClosedCallbackWrapper ::
    DisplayClosedCallback ->
    Ptr () ->
    CInt ->
    Ptr () ->
    IO ()
displayClosedCallbackWrapper _cb _ is_error _ = do
    let is_error' = (/= 0) is_error
    _cb  is_error'

onDisplayClosed :: (GObject a, MonadIO m) => a -> DisplayClosedCallback -> m SignalHandlerId
onDisplayClosed obj cb = liftIO $ connectDisplayClosed obj cb SignalConnectBefore
afterDisplayClosed :: (GObject a, MonadIO m) => a -> DisplayClosedCallback -> m SignalHandlerId
afterDisplayClosed obj cb = connectDisplayClosed obj cb SignalConnectAfter

connectDisplayClosed :: (GObject a, MonadIO m) =>
                        a -> DisplayClosedCallback -> SignalConnectMode -> m SignalHandlerId
connectDisplayClosed obj cb after = liftIO $ do
    cb' <- mkDisplayClosedCallback (displayClosedCallbackWrapper cb)
    connectSignalFunPtr obj "closed" cb' after

-- signal Display::opened
type DisplayOpenedCallback =
    IO ()

noDisplayOpenedCallback :: Maybe DisplayOpenedCallback
noDisplayOpenedCallback = Nothing

type DisplayOpenedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDisplayOpenedCallback :: DisplayOpenedCallbackC -> IO (FunPtr DisplayOpenedCallbackC)

displayOpenedClosure :: DisplayOpenedCallback -> IO Closure
displayOpenedClosure cb = newCClosure =<< mkDisplayOpenedCallback wrapped
    where wrapped = displayOpenedCallbackWrapper cb

displayOpenedCallbackWrapper ::
    DisplayOpenedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
displayOpenedCallbackWrapper _cb _ _ = do
    _cb 

onDisplayOpened :: (GObject a, MonadIO m) => a -> DisplayOpenedCallback -> m SignalHandlerId
onDisplayOpened obj cb = liftIO $ connectDisplayOpened obj cb SignalConnectBefore
afterDisplayOpened :: (GObject a, MonadIO m) => a -> DisplayOpenedCallback -> m SignalHandlerId
afterDisplayOpened obj cb = connectDisplayOpened obj cb SignalConnectAfter

connectDisplayOpened :: (GObject a, MonadIO m) =>
                        a -> DisplayOpenedCallback -> SignalConnectMode -> m SignalHandlerId
connectDisplayOpened obj cb after = liftIO $ do
    cb' <- mkDisplayOpenedCallback (displayOpenedCallbackWrapper cb)
    connectSignalFunPtr obj "opened" cb' after

-- object DisplayManager 
newtype DisplayManager = DisplayManager (ForeignPtr DisplayManager)
noDisplayManager :: Maybe DisplayManager
noDisplayManager = Nothing

foreign import ccall "gdk_display_manager_get_type"
    c_gdk_display_manager_get_type :: IO GType

type instance ParentTypes DisplayManager = '[GObject.Object]

instance GObject DisplayManager where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_display_manager_get_type
    

class GObject o => DisplayManagerK o
instance (GObject o, IsDescendantOf DisplayManager o) => DisplayManagerK o

toDisplayManager :: DisplayManagerK o => o -> IO DisplayManager
toDisplayManager = unsafeCastTo DisplayManager

-- method DisplayManager::get_default_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_manager_get_default_display" gdk_display_manager_get_default_display :: 
    Ptr DisplayManager ->                   -- _obj : TInterface "Gdk" "DisplayManager"
    IO (Ptr Display)


displayManagerGetDefaultDisplay ::
    (MonadIO m, DisplayManagerK a) =>
    a ->                                    -- _obj
    m Display
displayManagerGetDefaultDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_manager_get_default_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method DisplayManager::list_displays
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGSList (TInterface "Gdk" "Display")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_manager_list_displays" gdk_display_manager_list_displays :: 
    Ptr DisplayManager ->                   -- _obj : TInterface "Gdk" "DisplayManager"
    IO (Ptr (GSList (Ptr Display)))


displayManagerListDisplays ::
    (MonadIO m, DisplayManagerK a) =>
    a ->                                    -- _obj
    m [Display]
displayManagerListDisplays _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_display_manager_list_displays _obj'
    result' <- unpackGSList result
    result'' <- mapM (newObject Display) result'
    g_slist_free result
    touchManagedPtr _obj
    return result''

-- method DisplayManager::open_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_manager_open_display" gdk_display_manager_open_display :: 
    Ptr DisplayManager ->                   -- _obj : TInterface "Gdk" "DisplayManager"
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr Display)


displayManagerOpenDisplay ::
    (MonadIO m, DisplayManagerK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    m Display
displayManagerOpenDisplay _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    result <- gdk_display_manager_open_display _obj' name'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    freeMem name'
    return result'

-- method DisplayManager::set_default_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DisplayManager", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_manager_set_default_display" gdk_display_manager_set_default_display :: 
    Ptr DisplayManager ->                   -- _obj : TInterface "Gdk" "DisplayManager"
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    IO ()


displayManagerSetDefaultDisplay ::
    (MonadIO m, DisplayManagerK a, DisplayK b) =>
    a ->                                    -- _obj
    b ->                                    -- display
    m ()
displayManagerSetDefaultDisplay _obj display = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let display' = unsafeManagedPtrCastPtr display
    gdk_display_manager_set_default_display _obj' display'
    touchManagedPtr _obj
    touchManagedPtr display
    return ()

-- method DisplayManager::get
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "DisplayManager"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_display_manager_get" gdk_display_manager_get :: 
    IO (Ptr DisplayManager)


displayManagerGet ::
    (MonadIO m) =>
    m DisplayManager
displayManagerGet  = liftIO $ do
    result <- gdk_display_manager_get
    result' <- (newObject DisplayManager) result
    return result'

-- signal DisplayManager::display-opened
type DisplayManagerDisplayOpenedCallback =
    Display ->
    IO ()

noDisplayManagerDisplayOpenedCallback :: Maybe DisplayManagerDisplayOpenedCallback
noDisplayManagerDisplayOpenedCallback = Nothing

type DisplayManagerDisplayOpenedCallbackC =
    Ptr () ->                               -- object
    Ptr Display ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkDisplayManagerDisplayOpenedCallback :: DisplayManagerDisplayOpenedCallbackC -> IO (FunPtr DisplayManagerDisplayOpenedCallbackC)

displayManagerDisplayOpenedClosure :: DisplayManagerDisplayOpenedCallback -> IO Closure
displayManagerDisplayOpenedClosure cb = newCClosure =<< mkDisplayManagerDisplayOpenedCallback wrapped
    where wrapped = displayManagerDisplayOpenedCallbackWrapper cb

displayManagerDisplayOpenedCallbackWrapper ::
    DisplayManagerDisplayOpenedCallback ->
    Ptr () ->
    Ptr Display ->
    Ptr () ->
    IO ()
displayManagerDisplayOpenedCallbackWrapper _cb _ display _ = do
    display' <- (newObject Display) display
    _cb  display'

onDisplayManagerDisplayOpened :: (GObject a, MonadIO m) => a -> DisplayManagerDisplayOpenedCallback -> m SignalHandlerId
onDisplayManagerDisplayOpened obj cb = liftIO $ connectDisplayManagerDisplayOpened obj cb SignalConnectBefore
afterDisplayManagerDisplayOpened :: (GObject a, MonadIO m) => a -> DisplayManagerDisplayOpenedCallback -> m SignalHandlerId
afterDisplayManagerDisplayOpened obj cb = connectDisplayManagerDisplayOpened obj cb SignalConnectAfter

connectDisplayManagerDisplayOpened :: (GObject a, MonadIO m) =>
                                      a -> DisplayManagerDisplayOpenedCallback -> SignalConnectMode -> m SignalHandlerId
connectDisplayManagerDisplayOpened obj cb after = liftIO $ do
    cb' <- mkDisplayManagerDisplayOpenedCallback (displayManagerDisplayOpenedCallbackWrapper cb)
    connectSignalFunPtr obj "display-opened" cb' after

-- Flags DragAction

data DragAction = 
      DragActionDefault
    | DragActionCopy
    | DragActionMove
    | DragActionLink
    | DragActionPrivate
    | DragActionAsk
    | AnotherDragAction Int
    deriving (Show, Eq)

instance Enum DragAction where
    fromEnum DragActionDefault = 1
    fromEnum DragActionCopy = 2
    fromEnum DragActionMove = 4
    fromEnum DragActionLink = 8
    fromEnum DragActionPrivate = 16
    fromEnum DragActionAsk = 32
    fromEnum (AnotherDragAction k) = k

    toEnum 1 = DragActionDefault
    toEnum 2 = DragActionCopy
    toEnum 4 = DragActionMove
    toEnum 8 = DragActionLink
    toEnum 16 = DragActionPrivate
    toEnum 32 = DragActionAsk
    toEnum k = AnotherDragAction k

foreign import ccall "gdk_drag_action_get_type" c_gdk_drag_action_get_type :: 
    IO GType

instance BoxedEnum DragAction where
    boxedEnumType _ = c_gdk_drag_action_get_type

instance IsGFlag DragAction

-- object DragContext 
newtype DragContext = DragContext (ForeignPtr DragContext)
noDragContext :: Maybe DragContext
noDragContext = Nothing

foreign import ccall "gdk_drag_context_get_type"
    c_gdk_drag_context_get_type :: IO GType

type instance ParentTypes DragContext = '[GObject.Object]

instance GObject DragContext where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_drag_context_get_type
    

class GObject o => DragContextK o
instance (GObject o, IsDescendantOf DragContext o) => DragContextK o

toDragContext :: DragContextK o => o -> IO DragContext
toDragContext = unsafeCastTo DragContext

-- method DragContext::get_actions
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragAction"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_actions" gdk_drag_context_get_actions :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO CUInt


dragContextGetActions ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m [DragAction]
dragContextGetActions _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_actions _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method DragContext::get_dest_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_dest_window" gdk_drag_context_get_dest_window :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO (Ptr Window)


dragContextGetDestWindow ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m Window
dragContextGetDestWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_dest_window _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method DragContext::get_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Device"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_device" gdk_drag_context_get_device :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO (Ptr Device)


dragContextGetDevice ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m Device
dragContextGetDevice _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_device _obj'
    result' <- (newObject Device) result
    touchManagedPtr _obj
    return result'

-- method DragContext::get_protocol
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragProtocol"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_protocol" gdk_drag_context_get_protocol :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO CUInt


dragContextGetProtocol ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m DragProtocol
dragContextGetProtocol _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_protocol _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method DragContext::get_selected_action
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragAction"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_selected_action" gdk_drag_context_get_selected_action :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO CUInt


dragContextGetSelectedAction ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m [DragAction]
dragContextGetSelectedAction _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_selected_action _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method DragContext::get_source_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_source_window" gdk_drag_context_get_source_window :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO (Ptr Window)


dragContextGetSourceWindow ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m Window
dragContextGetSourceWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_source_window _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method DragContext::get_suggested_action
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragAction"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_get_suggested_action" gdk_drag_context_get_suggested_action :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO CUInt


dragContextGetSuggestedAction ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m [DragAction]
dragContextGetSuggestedAction _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_get_suggested_action _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method DragContext::list_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Atom")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_list_targets" gdk_drag_context_list_targets :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    IO (Ptr (GList (Ptr Atom)))


dragContextListTargets ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- _obj
    m [Atom]
dragContextListTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_drag_context_list_targets _obj'
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- unpackGList result
    result'' <- mapM (\x -> Atom <$> newForeignPtr_ x) result'
    touchManagedPtr _obj
    return result''

-- method DragContext::set_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_context_set_device" gdk_drag_context_set_device :: 
    Ptr DragContext ->                      -- _obj : TInterface "Gdk" "DragContext"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    IO ()


dragContextSetDevice ::
    (MonadIO m, DragContextK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m ()
dragContextSetDevice _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    gdk_drag_context_set_device _obj' device'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- Enum DragProtocol

data DragProtocol = 
      DragProtocolNone
    | DragProtocolMotif
    | DragProtocolXdnd
    | DragProtocolRootwin
    | DragProtocolWin32Dropfiles
    | DragProtocolOle2
    | DragProtocolLocal
    | DragProtocolWayland
    | AnotherDragProtocol Int
    deriving (Show, Eq)

instance Enum DragProtocol where
    fromEnum DragProtocolNone = 0
    fromEnum DragProtocolMotif = 1
    fromEnum DragProtocolXdnd = 2
    fromEnum DragProtocolRootwin = 3
    fromEnum DragProtocolWin32Dropfiles = 4
    fromEnum DragProtocolOle2 = 5
    fromEnum DragProtocolLocal = 6
    fromEnum DragProtocolWayland = 7
    fromEnum (AnotherDragProtocol k) = k

    toEnum 0 = DragProtocolNone
    toEnum 1 = DragProtocolMotif
    toEnum 2 = DragProtocolXdnd
    toEnum 3 = DragProtocolRootwin
    toEnum 4 = DragProtocolWin32Dropfiles
    toEnum 5 = DragProtocolOle2
    toEnum 6 = DragProtocolLocal
    toEnum 7 = DragProtocolWayland
    toEnum k = AnotherDragProtocol k

foreign import ccall "gdk_drag_protocol_get_type" c_gdk_drag_protocol_get_type :: 
    IO GType

instance BoxedEnum DragProtocol where
    boxedEnumType _ = c_gdk_drag_protocol_get_type

-- union Event 
newtype Event = Event (ForeignPtr Event)
noEvent :: Maybe Event
noEvent = Nothing

foreign import ccall "gdk_event_get_type" c_gdk_event_get_type :: 
    IO GType

instance BoxedObject Event where
    boxedType _ = c_gdk_event_get_type

eventReadType :: Event -> IO EventType
eventReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventReadAny :: Event -> IO EventAny
eventReadAny s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventAny)
    val' <- (newPtr 24 EventAny) val
    return val'

eventReadExpose :: Event -> IO EventExpose
eventReadExpose s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventExpose)
    val' <- (newPtr 56 EventExpose) val
    return val'

eventReadVisibility :: Event -> IO EventVisibility
eventReadVisibility s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventVisibility)
    val' <- (newPtr 24 EventVisibility) val
    return val'

eventReadMotion :: Event -> IO EventMotion
eventReadMotion s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventMotion)
    val' <- (newPtr 80 EventMotion) val
    return val'

eventReadButton :: Event -> IO EventButton
eventReadButton s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventButton)
    val' <- (newPtr 80 EventButton) val
    return val'

eventReadTouch :: Event -> IO EventTouch
eventReadTouch s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventTouch)
    val' <- (newPtr 96 EventTouch) val
    return val'

eventReadScroll :: Event -> IO EventScroll
eventReadScroll s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventScroll)
    val' <- (newPtr 88 EventScroll) val
    return val'

eventReadKey :: Event -> IO EventKey
eventReadKey s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventKey)
    val' <- (newPtr 56 EventKey) val
    return val'

eventReadCrossing :: Event -> IO EventCrossing
eventReadCrossing s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventCrossing)
    val' <- (newPtr 88 EventCrossing) val
    return val'

eventReadFocusChange :: Event -> IO EventFocus
eventReadFocusChange s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventFocus)
    val' <- (newPtr 24 EventFocus) val
    return val'

eventReadConfigure :: Event -> IO EventConfigure
eventReadConfigure s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventConfigure)
    val' <- (newPtr 40 EventConfigure) val
    return val'

eventReadProperty :: Event -> IO EventProperty
eventReadProperty s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventProperty)
    val' <- (newPtr 40 EventProperty) val
    return val'

eventReadSelection :: Event -> IO EventSelection
eventReadSelection s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventSelection)
    val' <- (newPtr 64 EventSelection) val
    return val'

eventReadOwnerChange :: Event -> IO EventOwnerChange
eventReadOwnerChange s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventOwnerChange)
    val' <- (newPtr 56 EventOwnerChange) val
    return val'

eventReadProximity :: Event -> IO EventProximity
eventReadProximity s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventProximity)
    val' <- (newPtr 32 EventProximity) val
    return val'

eventReadDnd :: Event -> IO EventDND
eventReadDnd s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventDND)
    val' <- (newPtr 40 EventDND) val
    return val'

eventReadWindowState :: Event -> IO EventWindowState
eventReadWindowState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventWindowState)
    val' <- (newPtr 32 EventWindowState) val
    return val'

eventReadSetting :: Event -> IO EventSetting
eventReadSetting s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventSetting)
    val' <- (newPtr 32 EventSetting) val
    return val'

eventReadGrabBroken :: Event -> IO EventGrabBroken
eventReadGrabBroken s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EventGrabBroken)
    val' <- (newPtr 40 EventGrabBroken) val
    return val'

-- method Event::new
-- method type : Constructor
-- Args : [Arg {argName = "type", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "type", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_new" gdk_event_new :: 
    CUInt ->                                -- type : TInterface "Gdk" "EventType"
    IO (Ptr Event)


eventNew ::
    (MonadIO m) =>
    EventType ->                            -- type
    m Event
eventNew type_ = liftIO $ do
    let type_' = (fromIntegral . fromEnum) type_
    result <- gdk_event_new type_'
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_copy" gdk_event_copy :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO (Ptr Event)


eventCopy ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Event
eventCopy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_copy _obj'
    result' <- (wrapBoxed Event) result
    touchManagedPtr _obj
    return result'

-- method Event::free
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_free" gdk_event_free :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO ()


eventFree ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m ()
eventFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gdk_event_free _obj'
    touchManagedPtr _obj
    return ()

-- method Event::get_axis
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "axis_use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "axis_use", argType = TInterface "Gdk" "AxisUse", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_axis" gdk_event_get_axis :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    CUInt ->                                -- axis_use : TInterface "Gdk" "AxisUse"
    Ptr CDouble ->                          -- value : TBasicType TDouble
    IO CInt


eventGetAxis ::
    (MonadIO m) =>
    Event ->                                -- _obj
    AxisUse ->                              -- axis_use
    m (Bool,Double)
eventGetAxis _obj axis_use = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let axis_use' = (fromIntegral . fromEnum) axis_use
    value <- allocMem :: IO (Ptr CDouble)
    result <- gdk_event_get_axis _obj' axis_use' value
    let result' = (/= 0) result
    value' <- peek value
    let value'' = realToFrac value'
    touchManagedPtr _obj
    freeMem value
    return (result', value'')

-- method Event::get_button
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_button" gdk_event_get_button :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Word32 ->                           -- button : TBasicType TUInt32
    IO CInt


eventGetButton ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Word32)
eventGetButton _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    button <- allocMem :: IO (Ptr Word32)
    result <- gdk_event_get_button _obj' button
    let result' = (/= 0) result
    button' <- peek button
    touchManagedPtr _obj
    freeMem button
    return (result', button')

-- method Event::get_click_count
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "click_count", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_click_count" gdk_event_get_click_count :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Word32 ->                           -- click_count : TBasicType TUInt32
    IO CInt


eventGetClickCount ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Word32)
eventGetClickCount _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    click_count <- allocMem :: IO (Ptr Word32)
    result <- gdk_event_get_click_count _obj' click_count
    let result' = (/= 0) result
    click_count' <- peek click_count
    touchManagedPtr _obj
    freeMem click_count
    return (result', click_count')

-- method Event::get_coords
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_win", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y_win", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_coords" gdk_event_get_coords :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr CDouble ->                          -- x_win : TBasicType TDouble
    Ptr CDouble ->                          -- y_win : TBasicType TDouble
    IO CInt


eventGetCoords ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Double,Double)
eventGetCoords _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    x_win <- allocMem :: IO (Ptr CDouble)
    y_win <- allocMem :: IO (Ptr CDouble)
    result <- gdk_event_get_coords _obj' x_win y_win
    let result' = (/= 0) result
    x_win' <- peek x_win
    let x_win'' = realToFrac x_win'
    y_win' <- peek y_win
    let y_win'' = realToFrac y_win'
    touchManagedPtr _obj
    freeMem x_win
    freeMem y_win
    return (result', x_win'', y_win'')

-- method Event::get_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Device"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_device" gdk_event_get_device :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO (Ptr Device)


eventGetDevice ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Device
eventGetDevice _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_device _obj'
    result' <- (newObject Device) result
    touchManagedPtr _obj
    return result'

-- method Event::get_event_sequence
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "EventSequence"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_event_sequence" gdk_event_get_event_sequence :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO (Ptr EventSequence)


eventGetEventSequence ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m EventSequence
eventGetEventSequence _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_event_sequence _obj'
    result' <- (newBoxed EventSequence) result
    touchManagedPtr _obj
    return result'

-- method Event::get_event_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "EventType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_event_type" gdk_event_get_event_type :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO CUInt


eventGetEventType ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m EventType
eventGetEventType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_event_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Event::get_keycode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keycode", argType = TBasicType TUInt16, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_keycode" gdk_event_get_keycode :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Word16 ->                           -- keycode : TBasicType TUInt16
    IO CInt


eventGetKeycode ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Word16)
eventGetKeycode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    keycode <- allocMem :: IO (Ptr Word16)
    result <- gdk_event_get_keycode _obj' keycode
    let result' = (/= 0) result
    keycode' <- peek keycode
    touchManagedPtr _obj
    freeMem keycode
    return (result', keycode')

-- method Event::get_keyval
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_keyval" gdk_event_get_keyval :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Word32 ->                           -- keyval : TBasicType TUInt32
    IO CInt


eventGetKeyval ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Word32)
eventGetKeyval _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    keyval <- allocMem :: IO (Ptr Word32)
    result <- gdk_event_get_keyval _obj' keyval
    let result' = (/= 0) result
    keyval' <- peek keyval
    touchManagedPtr _obj
    freeMem keyval
    return (result', keyval')

-- method Event::get_root_coords
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_root", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y_root", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_root_coords" gdk_event_get_root_coords :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr CDouble ->                          -- x_root : TBasicType TDouble
    Ptr CDouble ->                          -- y_root : TBasicType TDouble
    IO CInt


eventGetRootCoords ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Double,Double)
eventGetRootCoords _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    x_root <- allocMem :: IO (Ptr CDouble)
    y_root <- allocMem :: IO (Ptr CDouble)
    result <- gdk_event_get_root_coords _obj' x_root y_root
    let result' = (/= 0) result
    x_root' <- peek x_root
    let x_root'' = realToFrac x_root'
    y_root' <- peek y_root
    let y_root'' = realToFrac y_root'
    touchManagedPtr _obj
    freeMem x_root
    freeMem y_root
    return (result', x_root'', y_root'')

-- method Event::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_screen" gdk_event_get_screen :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO (Ptr Screen)


eventGetScreen ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Screen
eventGetScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_screen _obj'
    result' <- (newObject Screen) result
    touchManagedPtr _obj
    return result'

-- method Event::get_scroll_deltas
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "delta_x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "delta_y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_scroll_deltas" gdk_event_get_scroll_deltas :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr CDouble ->                          -- delta_x : TBasicType TDouble
    Ptr CDouble ->                          -- delta_y : TBasicType TDouble
    IO CInt


eventGetScrollDeltas ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,Double,Double)
eventGetScrollDeltas _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    delta_x <- allocMem :: IO (Ptr CDouble)
    delta_y <- allocMem :: IO (Ptr CDouble)
    result <- gdk_event_get_scroll_deltas _obj' delta_x delta_y
    let result' = (/= 0) result
    delta_x' <- peek delta_x
    let delta_x'' = realToFrac delta_x'
    delta_y' <- peek delta_y
    let delta_y'' = realToFrac delta_y'
    touchManagedPtr _obj
    freeMem delta_x
    freeMem delta_y
    return (result', delta_x'', delta_y'')

-- method Event::get_scroll_direction
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Gdk" "ScrollDirection", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_scroll_direction" gdk_event_get_scroll_direction :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr CUInt ->                            -- direction : TInterface "Gdk" "ScrollDirection"
    IO CInt


eventGetScrollDirection ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,ScrollDirection)
eventGetScrollDirection _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    direction <- allocMem :: IO (Ptr CUInt)
    result <- gdk_event_get_scroll_direction _obj' direction
    let result' = (/= 0) result
    direction' <- peek direction
    let direction'' = (toEnum . fromIntegral) direction'
    touchManagedPtr _obj
    freeMem direction
    return (result', direction'')

-- method Event::get_source_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Device"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_source_device" gdk_event_get_source_device :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO (Ptr Device)


eventGetSourceDevice ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Device
eventGetSourceDevice _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_source_device _obj'
    result' <- (newObject Device) result
    touchManagedPtr _obj
    return result'

-- method Event::get_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_state" gdk_event_get_state :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr CUInt ->                            -- state : TInterface "Gdk" "ModifierType"
    IO CInt


eventGetState ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m (Bool,[ModifierType])
eventGetState _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    state <- allocMem :: IO (Ptr CUInt)
    result <- gdk_event_get_state _obj' state
    let result' = (/= 0) result
    state' <- peek state
    let state'' = wordToGFlags state'
    touchManagedPtr _obj
    freeMem state
    return (result', state'')

-- method Event::get_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_time" gdk_event_get_time :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO Word32


eventGetTime ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Word32
eventGetTime _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_time _obj'
    touchManagedPtr _obj
    return result

-- method Event::get_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get_window" gdk_event_get_window :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO (Ptr Window)


eventGetWindow ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Window
eventGetWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_get_window _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Event::put
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_put" gdk_event_put :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO ()


eventPut ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m ()
eventPut _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gdk_event_put _obj'
    touchManagedPtr _obj
    return ()

-- method Event::set_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_set_device" gdk_event_set_device :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    IO ()


eventSetDevice ::
    (MonadIO m, DeviceK a) =>
    Event ->                                -- _obj
    a ->                                    -- device
    m ()
eventSetDevice _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    gdk_event_set_device _obj' device'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Event::set_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_set_screen" gdk_event_set_screen :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
    IO ()


eventSetScreen ::
    (MonadIO m, ScreenK a) =>
    Event ->                                -- _obj
    a ->                                    -- screen
    m ()
eventSetScreen _obj screen = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let screen' = unsafeManagedPtrCastPtr screen
    gdk_event_set_screen _obj' screen'
    touchManagedPtr _obj
    touchManagedPtr screen
    return ()

-- method Event::set_source_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_set_source_device" gdk_event_set_source_device :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    IO ()


eventSetSourceDevice ::
    (MonadIO m, DeviceK a) =>
    Event ->                                -- _obj
    a ->                                    -- device
    m ()
eventSetSourceDevice _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    gdk_event_set_source_device _obj' device'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Event::triggers_context_menu
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_triggers_context_menu" gdk_event_triggers_context_menu :: 
    Ptr Event ->                            -- _obj : TInterface "Gdk" "Event"
    IO CInt


eventTriggersContextMenu ::
    (MonadIO m) =>
    Event ->                                -- _obj
    m Bool
eventTriggersContextMenu _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_event_triggers_context_menu _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- struct EventAny
newtype EventAny = EventAny (ForeignPtr EventAny)
noEventAny :: Maybe EventAny
noEventAny = Nothing

eventAnyReadType :: EventAny -> IO EventType
eventAnyReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventAnyReadWindow :: EventAny -> IO Window
eventAnyReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventAnyReadSendEvent :: EventAny -> IO Int8
eventAnyReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

-- struct EventButton
newtype EventButton = EventButton (ForeignPtr EventButton)
noEventButton :: Maybe EventButton
noEventButton = Nothing

eventButtonReadType :: EventButton -> IO EventType
eventButtonReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventButtonReadWindow :: EventButton -> IO Window
eventButtonReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventButtonReadSendEvent :: EventButton -> IO Int8
eventButtonReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventButtonReadTime :: EventButton -> IO Word32
eventButtonReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

eventButtonReadX :: EventButton -> IO Double
eventButtonReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

eventButtonReadY :: EventButton -> IO Double
eventButtonReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CDouble
    let val' = realToFrac val
    return val'

eventButtonReadAxes :: EventButton -> IO Double
eventButtonReadAxes s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CDouble
    let val' = realToFrac val
    return val'

eventButtonReadState :: EventButton -> IO [ModifierType]
eventButtonReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO CUInt
    let val' = wordToGFlags val
    return val'

eventButtonReadButton :: EventButton -> IO Word32
eventButtonReadButton s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 52) :: IO Word32
    return val

eventButtonReadDevice :: EventButton -> IO Device
eventButtonReadDevice s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO (Ptr Device)
    val' <- (newObject Device) val
    return val'

eventButtonReadXRoot :: EventButton -> IO Double
eventButtonReadXRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CDouble
    let val' = realToFrac val
    return val'

eventButtonReadYRoot :: EventButton -> IO Double
eventButtonReadYRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO CDouble
    let val' = realToFrac val
    return val'

-- struct EventConfigure
newtype EventConfigure = EventConfigure (ForeignPtr EventConfigure)
noEventConfigure :: Maybe EventConfigure
noEventConfigure = Nothing

eventConfigureReadType :: EventConfigure -> IO EventType
eventConfigureReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventConfigureReadWindow :: EventConfigure -> IO Window
eventConfigureReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventConfigureReadSendEvent :: EventConfigure -> IO Int8
eventConfigureReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventConfigureReadX :: EventConfigure -> IO Int32
eventConfigureReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Int32
    return val

eventConfigureReadY :: EventConfigure -> IO Int32
eventConfigureReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO Int32
    return val

eventConfigureReadWidth :: EventConfigure -> IO Int32
eventConfigureReadWidth s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 28) :: IO Int32
    return val

eventConfigureReadHeight :: EventConfigure -> IO Int32
eventConfigureReadHeight s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO Int32
    return val

-- struct EventCrossing
newtype EventCrossing = EventCrossing (ForeignPtr EventCrossing)
noEventCrossing :: Maybe EventCrossing
noEventCrossing = Nothing

eventCrossingReadType :: EventCrossing -> IO EventType
eventCrossingReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventCrossingReadWindow :: EventCrossing -> IO Window
eventCrossingReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventCrossingReadSendEvent :: EventCrossing -> IO Int8
eventCrossingReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventCrossingReadSubwindow :: EventCrossing -> IO Window
eventCrossingReadSubwindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventCrossingReadTime :: EventCrossing -> IO Word32
eventCrossingReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO Word32
    return val

eventCrossingReadX :: EventCrossing -> IO Double
eventCrossingReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CDouble
    let val' = realToFrac val
    return val'

eventCrossingReadY :: EventCrossing -> IO Double
eventCrossingReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO CDouble
    let val' = realToFrac val
    return val'

eventCrossingReadXRoot :: EventCrossing -> IO Double
eventCrossingReadXRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO CDouble
    let val' = realToFrac val
    return val'

eventCrossingReadYRoot :: EventCrossing -> IO Double
eventCrossingReadYRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CDouble
    let val' = realToFrac val
    return val'

eventCrossingReadMode :: EventCrossing -> IO CrossingMode
eventCrossingReadMode s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventCrossingReadDetail :: EventCrossing -> IO NotifyType
eventCrossingReadDetail s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 76) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventCrossingReadFocus :: EventCrossing -> IO Bool
eventCrossingReadFocus s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 80) :: IO CInt
    let val' = (/= 0) val
    return val'

eventCrossingReadState :: EventCrossing -> IO [ModifierType]
eventCrossingReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 84) :: IO CUInt
    let val' = wordToGFlags val
    return val'

-- struct EventDND
newtype EventDND = EventDND (ForeignPtr EventDND)
noEventDND :: Maybe EventDND
noEventDND = Nothing

eventDNDReadType :: EventDND -> IO EventType
eventDNDReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventDNDReadWindow :: EventDND -> IO Window
eventDNDReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventDNDReadSendEvent :: EventDND -> IO Int8
eventDNDReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventDNDReadContext :: EventDND -> IO DragContext
eventDNDReadContext s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr DragContext)
    val' <- (newObject DragContext) val
    return val'

eventDNDReadTime :: EventDND -> IO Word32
eventDNDReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO Word32
    return val

eventDNDReadXRoot :: EventDND -> IO Int16
eventDNDReadXRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 36) :: IO Int16
    return val

eventDNDReadYRoot :: EventDND -> IO Int16
eventDNDReadYRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 38) :: IO Int16
    return val

-- struct EventExpose
newtype EventExpose = EventExpose (ForeignPtr EventExpose)
noEventExpose :: Maybe EventExpose
noEventExpose = Nothing

eventExposeReadType :: EventExpose -> IO EventType
eventExposeReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventExposeReadWindow :: EventExpose -> IO Window
eventExposeReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventExposeReadSendEvent :: EventExpose -> IO Int8
eventExposeReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventExposeReadArea :: EventExpose -> IO Cairo.RectangleInt
eventExposeReadArea s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO (Ptr Cairo.RectangleInt)
    val' <- (newBoxed Cairo.RectangleInt) val
    return val'

eventExposeReadRegion :: EventExpose -> IO Cairo.Region
eventExposeReadRegion s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr Cairo.Region)
    val' <- (newBoxed Cairo.Region) val
    return val'

eventExposeReadCount :: EventExpose -> IO Int32
eventExposeReadCount s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO Int32
    return val

-- struct EventFocus
newtype EventFocus = EventFocus (ForeignPtr EventFocus)
noEventFocus :: Maybe EventFocus
noEventFocus = Nothing

eventFocusReadType :: EventFocus -> IO EventType
eventFocusReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventFocusReadWindow :: EventFocus -> IO Window
eventFocusReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventFocusReadSendEvent :: EventFocus -> IO Int8
eventFocusReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventFocusReadIn :: EventFocus -> IO Int16
eventFocusReadIn s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 18) :: IO Int16
    return val

-- callback EventFunc
eventFuncClosure :: EventFunc -> IO Closure
eventFuncClosure cb = newCClosure =<< mkEventFunc wrapped
    where wrapped = eventFuncWrapper Nothing cb

type EventFuncC =
    Ptr Event ->
    Ptr () ->
    IO ()

foreign import ccall "wrapper"
    mkEventFunc :: EventFuncC -> IO (FunPtr EventFuncC)

type EventFunc =
    Event ->
    IO ()

noEventFunc :: Maybe EventFunc
noEventFunc = Nothing

eventFuncWrapper ::
    Maybe (Ptr (FunPtr (EventFuncC))) ->
    EventFunc ->
    Ptr Event ->
    Ptr () ->
    IO ()
eventFuncWrapper funptrptr _cb event _ = do
    event' <- (newBoxed Event) event
    _cb  event'
    maybeReleaseFunPtr funptrptr

-- struct EventGrabBroken
newtype EventGrabBroken = EventGrabBroken (ForeignPtr EventGrabBroken)
noEventGrabBroken :: Maybe EventGrabBroken
noEventGrabBroken = Nothing

eventGrabBrokenReadType :: EventGrabBroken -> IO EventType
eventGrabBrokenReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventGrabBrokenReadWindow :: EventGrabBroken -> IO Window
eventGrabBrokenReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventGrabBrokenReadSendEvent :: EventGrabBroken -> IO Int8
eventGrabBrokenReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventGrabBrokenReadKeyboard :: EventGrabBroken -> IO Bool
eventGrabBrokenReadKeyboard s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO CInt
    let val' = (/= 0) val
    return val'

eventGrabBrokenReadImplicit :: EventGrabBroken -> IO Bool
eventGrabBrokenReadImplicit s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CInt
    let val' = (/= 0) val
    return val'

eventGrabBrokenReadGrabWindow :: EventGrabBroken -> IO Window
eventGrabBrokenReadGrabWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

-- struct EventKey
newtype EventKey = EventKey (ForeignPtr EventKey)
noEventKey :: Maybe EventKey
noEventKey = Nothing

eventKeyReadType :: EventKey -> IO EventType
eventKeyReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventKeyReadWindow :: EventKey -> IO Window
eventKeyReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventKeyReadSendEvent :: EventKey -> IO Int8
eventKeyReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventKeyReadTime :: EventKey -> IO Word32
eventKeyReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

eventKeyReadState :: EventKey -> IO [ModifierType]
eventKeyReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CUInt
    let val' = wordToGFlags val
    return val'

eventKeyReadKeyval :: EventKey -> IO Word32
eventKeyReadKeyval s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 28) :: IO Word32
    return val

eventKeyReadLength :: EventKey -> IO Int32
eventKeyReadLength s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO Int32
    return val

eventKeyReadString :: EventKey -> IO T.Text
eventKeyReadString s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CString
    val' <- cstringToText val
    return val'

eventKeyReadHardwareKeycode :: EventKey -> IO Word16
eventKeyReadHardwareKeycode s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO Word16
    return val

eventKeyReadGroup :: EventKey -> IO Word8
eventKeyReadGroup s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 50) :: IO Word8
    return val

eventKeyReadIsModifier :: EventKey -> IO Word32
eventKeyReadIsModifier s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 52) :: IO Word32
    return val

-- Flags EventMask

data EventMask = 
      EventMaskExposureMask
    | EventMaskPointerMotionMask
    | EventMaskPointerMotionHintMask
    | EventMaskButtonMotionMask
    | EventMaskButton1MotionMask
    | EventMaskButton2MotionMask
    | EventMaskButton3MotionMask
    | EventMaskButtonPressMask
    | EventMaskButtonReleaseMask
    | EventMaskKeyPressMask
    | EventMaskKeyReleaseMask
    | EventMaskEnterNotifyMask
    | EventMaskLeaveNotifyMask
    | EventMaskFocusChangeMask
    | EventMaskStructureMask
    | EventMaskPropertyChangeMask
    | EventMaskVisibilityNotifyMask
    | EventMaskProximityInMask
    | EventMaskProximityOutMask
    | EventMaskSubstructureMask
    | EventMaskScrollMask
    | EventMaskTouchMask
    | EventMaskSmoothScrollMask
    | EventMaskAllEventsMask
    | AnotherEventMask Int
    deriving (Show, Eq)

instance Enum EventMask where
    fromEnum EventMaskExposureMask = 2
    fromEnum EventMaskPointerMotionMask = 4
    fromEnum EventMaskPointerMotionHintMask = 8
    fromEnum EventMaskButtonMotionMask = 16
    fromEnum EventMaskButton1MotionMask = 32
    fromEnum EventMaskButton2MotionMask = 64
    fromEnum EventMaskButton3MotionMask = 128
    fromEnum EventMaskButtonPressMask = 256
    fromEnum EventMaskButtonReleaseMask = 512
    fromEnum EventMaskKeyPressMask = 1024
    fromEnum EventMaskKeyReleaseMask = 2048
    fromEnum EventMaskEnterNotifyMask = 4096
    fromEnum EventMaskLeaveNotifyMask = 8192
    fromEnum EventMaskFocusChangeMask = 16384
    fromEnum EventMaskStructureMask = 32768
    fromEnum EventMaskPropertyChangeMask = 65536
    fromEnum EventMaskVisibilityNotifyMask = 131072
    fromEnum EventMaskProximityInMask = 262144
    fromEnum EventMaskProximityOutMask = 524288
    fromEnum EventMaskSubstructureMask = 1048576
    fromEnum EventMaskScrollMask = 2097152
    fromEnum EventMaskTouchMask = 4194304
    fromEnum EventMaskSmoothScrollMask = 8388608
    fromEnum EventMaskAllEventsMask = 16777214
    fromEnum (AnotherEventMask k) = k

    toEnum 2 = EventMaskExposureMask
    toEnum 4 = EventMaskPointerMotionMask
    toEnum 8 = EventMaskPointerMotionHintMask
    toEnum 16 = EventMaskButtonMotionMask
    toEnum 32 = EventMaskButton1MotionMask
    toEnum 64 = EventMaskButton2MotionMask
    toEnum 128 = EventMaskButton3MotionMask
    toEnum 256 = EventMaskButtonPressMask
    toEnum 512 = EventMaskButtonReleaseMask
    toEnum 1024 = EventMaskKeyPressMask
    toEnum 2048 = EventMaskKeyReleaseMask
    toEnum 4096 = EventMaskEnterNotifyMask
    toEnum 8192 = EventMaskLeaveNotifyMask
    toEnum 16384 = EventMaskFocusChangeMask
    toEnum 32768 = EventMaskStructureMask
    toEnum 65536 = EventMaskPropertyChangeMask
    toEnum 131072 = EventMaskVisibilityNotifyMask
    toEnum 262144 = EventMaskProximityInMask
    toEnum 524288 = EventMaskProximityOutMask
    toEnum 1048576 = EventMaskSubstructureMask
    toEnum 2097152 = EventMaskScrollMask
    toEnum 4194304 = EventMaskTouchMask
    toEnum 8388608 = EventMaskSmoothScrollMask
    toEnum 16777214 = EventMaskAllEventsMask
    toEnum k = AnotherEventMask k

foreign import ccall "gdk_event_mask_get_type" c_gdk_event_mask_get_type :: 
    IO GType

instance BoxedEnum EventMask where
    boxedEnumType _ = c_gdk_event_mask_get_type

instance IsGFlag EventMask

-- struct EventMotion
newtype EventMotion = EventMotion (ForeignPtr EventMotion)
noEventMotion :: Maybe EventMotion
noEventMotion = Nothing

eventMotionReadType :: EventMotion -> IO EventType
eventMotionReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventMotionReadWindow :: EventMotion -> IO Window
eventMotionReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventMotionReadSendEvent :: EventMotion -> IO Int8
eventMotionReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventMotionReadTime :: EventMotion -> IO Word32
eventMotionReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

eventMotionReadX :: EventMotion -> IO Double
eventMotionReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

eventMotionReadY :: EventMotion -> IO Double
eventMotionReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CDouble
    let val' = realToFrac val
    return val'

eventMotionReadAxes :: EventMotion -> IO Double
eventMotionReadAxes s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CDouble
    let val' = realToFrac val
    return val'

eventMotionReadState :: EventMotion -> IO [ModifierType]
eventMotionReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO CUInt
    let val' = wordToGFlags val
    return val'

eventMotionReadIsHint :: EventMotion -> IO Int16
eventMotionReadIsHint s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 52) :: IO Int16
    return val

eventMotionReadDevice :: EventMotion -> IO Device
eventMotionReadDevice s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO (Ptr Device)
    val' <- (newObject Device) val
    return val'

eventMotionReadXRoot :: EventMotion -> IO Double
eventMotionReadXRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CDouble
    let val' = realToFrac val
    return val'

eventMotionReadYRoot :: EventMotion -> IO Double
eventMotionReadYRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO CDouble
    let val' = realToFrac val
    return val'

-- struct EventOwnerChange
newtype EventOwnerChange = EventOwnerChange (ForeignPtr EventOwnerChange)
noEventOwnerChange :: Maybe EventOwnerChange
noEventOwnerChange = Nothing

eventOwnerChangeReadType :: EventOwnerChange -> IO EventType
eventOwnerChangeReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventOwnerChangeReadWindow :: EventOwnerChange -> IO Window
eventOwnerChangeReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventOwnerChangeReadSendEvent :: EventOwnerChange -> IO Int8
eventOwnerChangeReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventOwnerChangeReadOwner :: EventOwnerChange -> IO Window
eventOwnerChangeReadOwner s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventOwnerChangeReadReason :: EventOwnerChange -> IO OwnerChange
eventOwnerChangeReadReason s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventOwnerChangeReadSelection :: EventOwnerChange -> IO Atom
eventOwnerChangeReadSelection s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr Atom)
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    val' <- (\x -> Atom <$> newForeignPtr_ x) val
    return val'

eventOwnerChangeReadTime :: EventOwnerChange -> IO Word32
eventOwnerChangeReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO Word32
    return val

eventOwnerChangeReadSelectionTime :: EventOwnerChange -> IO Word32
eventOwnerChangeReadSelectionTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 52) :: IO Word32
    return val

-- struct EventProperty
newtype EventProperty = EventProperty (ForeignPtr EventProperty)
noEventProperty :: Maybe EventProperty
noEventProperty = Nothing

eventPropertyReadType :: EventProperty -> IO EventType
eventPropertyReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventPropertyReadWindow :: EventProperty -> IO Window
eventPropertyReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventPropertyReadSendEvent :: EventProperty -> IO Int8
eventPropertyReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventPropertyReadAtom :: EventProperty -> IO Atom
eventPropertyReadAtom s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Atom)
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    val' <- (\x -> Atom <$> newForeignPtr_ x) val
    return val'

eventPropertyReadTime :: EventProperty -> IO Word32
eventPropertyReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO Word32
    return val

eventPropertyReadState :: EventProperty -> IO PropertyState
eventPropertyReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 36) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

-- struct EventProximity
newtype EventProximity = EventProximity (ForeignPtr EventProximity)
noEventProximity :: Maybe EventProximity
noEventProximity = Nothing

eventProximityReadType :: EventProximity -> IO EventType
eventProximityReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventProximityReadWindow :: EventProximity -> IO Window
eventProximityReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventProximityReadSendEvent :: EventProximity -> IO Int8
eventProximityReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventProximityReadTime :: EventProximity -> IO Word32
eventProximityReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

eventProximityReadDevice :: EventProximity -> IO Device
eventProximityReadDevice s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Device)
    val' <- (newObject Device) val
    return val'

-- struct EventScroll
newtype EventScroll = EventScroll (ForeignPtr EventScroll)
noEventScroll :: Maybe EventScroll
noEventScroll = Nothing

eventScrollReadType :: EventScroll -> IO EventType
eventScrollReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventScrollReadWindow :: EventScroll -> IO Window
eventScrollReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventScrollReadSendEvent :: EventScroll -> IO Int8
eventScrollReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventScrollReadTime :: EventScroll -> IO Word32
eventScrollReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

eventScrollReadX :: EventScroll -> IO Double
eventScrollReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

eventScrollReadY :: EventScroll -> IO Double
eventScrollReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CDouble
    let val' = realToFrac val
    return val'

eventScrollReadState :: EventScroll -> IO [ModifierType]
eventScrollReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CUInt
    let val' = wordToGFlags val
    return val'

eventScrollReadDirection :: EventScroll -> IO ScrollDirection
eventScrollReadDirection s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 44) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventScrollReadDevice :: EventScroll -> IO Device
eventScrollReadDevice s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO (Ptr Device)
    val' <- (newObject Device) val
    return val'

eventScrollReadXRoot :: EventScroll -> IO Double
eventScrollReadXRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO CDouble
    let val' = realToFrac val
    return val'

eventScrollReadYRoot :: EventScroll -> IO Double
eventScrollReadYRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CDouble
    let val' = realToFrac val
    return val'

eventScrollReadDeltaX :: EventScroll -> IO Double
eventScrollReadDeltaX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO CDouble
    let val' = realToFrac val
    return val'

eventScrollReadDeltaY :: EventScroll -> IO Double
eventScrollReadDeltaY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 80) :: IO CDouble
    let val' = realToFrac val
    return val'

-- struct EventSelection
newtype EventSelection = EventSelection (ForeignPtr EventSelection)
noEventSelection :: Maybe EventSelection
noEventSelection = Nothing

eventSelectionReadType :: EventSelection -> IO EventType
eventSelectionReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventSelectionReadWindow :: EventSelection -> IO Window
eventSelectionReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventSelectionReadSendEvent :: EventSelection -> IO Int8
eventSelectionReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventSelectionReadSelection :: EventSelection -> IO Atom
eventSelectionReadSelection s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Atom)
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    val' <- (\x -> Atom <$> newForeignPtr_ x) val
    return val'

eventSelectionReadTarget :: EventSelection -> IO Atom
eventSelectionReadTarget s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Atom)
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    val' <- (\x -> Atom <$> newForeignPtr_ x) val
    return val'

eventSelectionReadProperty :: EventSelection -> IO Atom
eventSelectionReadProperty s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr Atom)
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    val' <- (\x -> Atom <$> newForeignPtr_ x) val
    return val'

eventSelectionReadTime :: EventSelection -> IO Word32
eventSelectionReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO Word32
    return val

eventSelectionReadRequestor :: EventSelection -> IO Window
eventSelectionReadRequestor s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

-- struct EventSequence
newtype EventSequence = EventSequence (ForeignPtr EventSequence)
noEventSequence :: Maybe EventSequence
noEventSequence = Nothing

foreign import ccall "gdk_event_sequence_get_type" c_gdk_event_sequence_get_type :: 
    IO GType

instance BoxedObject EventSequence where
    boxedType _ = c_gdk_event_sequence_get_type

-- struct EventSetting
newtype EventSetting = EventSetting (ForeignPtr EventSetting)
noEventSetting :: Maybe EventSetting
noEventSetting = Nothing

eventSettingReadType :: EventSetting -> IO EventType
eventSettingReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventSettingReadWindow :: EventSetting -> IO Window
eventSettingReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventSettingReadSendEvent :: EventSetting -> IO Int8
eventSettingReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventSettingReadAction :: EventSetting -> IO SettingAction
eventSettingReadAction s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventSettingReadName :: EventSetting -> IO T.Text
eventSettingReadName s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CString
    val' <- cstringToText val
    return val'

-- struct EventTouch
newtype EventTouch = EventTouch (ForeignPtr EventTouch)
noEventTouch :: Maybe EventTouch
noEventTouch = Nothing

eventTouchReadType :: EventTouch -> IO EventType
eventTouchReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventTouchReadWindow :: EventTouch -> IO Window
eventTouchReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventTouchReadSendEvent :: EventTouch -> IO Int8
eventTouchReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventTouchReadTime :: EventTouch -> IO Word32
eventTouchReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

eventTouchReadX :: EventTouch -> IO Double
eventTouchReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

eventTouchReadY :: EventTouch -> IO Double
eventTouchReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CDouble
    let val' = realToFrac val
    return val'

eventTouchReadAxes :: EventTouch -> IO Double
eventTouchReadAxes s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CDouble
    let val' = realToFrac val
    return val'

eventTouchReadState :: EventTouch -> IO [ModifierType]
eventTouchReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO CUInt
    let val' = wordToGFlags val
    return val'

eventTouchReadSequence :: EventTouch -> IO EventSequence
eventTouchReadSequence s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO (Ptr EventSequence)
    val' <- (newBoxed EventSequence) val
    return val'

eventTouchReadEmulatingPointer :: EventTouch -> IO Bool
eventTouchReadEmulatingPointer s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CInt
    let val' = (/= 0) val
    return val'

eventTouchReadDevice :: EventTouch -> IO Device
eventTouchReadDevice s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO (Ptr Device)
    val' <- (newObject Device) val
    return val'

eventTouchReadXRoot :: EventTouch -> IO Double
eventTouchReadXRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 80) :: IO CDouble
    let val' = realToFrac val
    return val'

eventTouchReadYRoot :: EventTouch -> IO Double
eventTouchReadYRoot s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 88) :: IO CDouble
    let val' = realToFrac val
    return val'

-- Enum EventType

data EventType = 
      EventTypeNothing
    | EventTypeDelete
    | EventTypeDestroy
    | EventTypeExpose
    | EventTypeMotionNotify
    | EventTypeButtonPress
    | EventType2buttonPress
    | EventTypeDoubleButtonPress
    | EventType3buttonPress
    | EventTypeTripleButtonPress
    | EventTypeButtonRelease
    | EventTypeKeyPress
    | EventTypeKeyRelease
    | EventTypeEnterNotify
    | EventTypeLeaveNotify
    | EventTypeFocusChange
    | EventTypeConfigure
    | EventTypeMap
    | EventTypeUnmap
    | EventTypePropertyNotify
    | EventTypeSelectionClear
    | EventTypeSelectionRequest
    | EventTypeSelectionNotify
    | EventTypeProximityIn
    | EventTypeProximityOut
    | EventTypeDragEnter
    | EventTypeDragLeave
    | EventTypeDragMotion
    | EventTypeDragStatus
    | EventTypeDropStart
    | EventTypeDropFinished
    | EventTypeClientEvent
    | EventTypeVisibilityNotify
    | EventTypeScroll
    | EventTypeWindowState
    | EventTypeSetting
    | EventTypeOwnerChange
    | EventTypeGrabBroken
    | EventTypeDamage
    | EventTypeTouchBegin
    | EventTypeTouchUpdate
    | EventTypeTouchEnd
    | EventTypeTouchCancel
    | EventTypeEventLast
    | AnotherEventType Int
    deriving (Show, Eq)

instance Enum EventType where
    fromEnum EventTypeNothing = -1
    fromEnum EventTypeDelete = 0
    fromEnum EventTypeDestroy = 1
    fromEnum EventTypeExpose = 2
    fromEnum EventTypeMotionNotify = 3
    fromEnum EventTypeButtonPress = 4
    fromEnum EventType2buttonPress = 5
    fromEnum EventTypeDoubleButtonPress = 5
    fromEnum EventType3buttonPress = 6
    fromEnum EventTypeTripleButtonPress = 6
    fromEnum EventTypeButtonRelease = 7
    fromEnum EventTypeKeyPress = 8
    fromEnum EventTypeKeyRelease = 9
    fromEnum EventTypeEnterNotify = 10
    fromEnum EventTypeLeaveNotify = 11
    fromEnum EventTypeFocusChange = 12
    fromEnum EventTypeConfigure = 13
    fromEnum EventTypeMap = 14
    fromEnum EventTypeUnmap = 15
    fromEnum EventTypePropertyNotify = 16
    fromEnum EventTypeSelectionClear = 17
    fromEnum EventTypeSelectionRequest = 18
    fromEnum EventTypeSelectionNotify = 19
    fromEnum EventTypeProximityIn = 20
    fromEnum EventTypeProximityOut = 21
    fromEnum EventTypeDragEnter = 22
    fromEnum EventTypeDragLeave = 23
    fromEnum EventTypeDragMotion = 24
    fromEnum EventTypeDragStatus = 25
    fromEnum EventTypeDropStart = 26
    fromEnum EventTypeDropFinished = 27
    fromEnum EventTypeClientEvent = 28
    fromEnum EventTypeVisibilityNotify = 29
    fromEnum EventTypeScroll = 31
    fromEnum EventTypeWindowState = 32
    fromEnum EventTypeSetting = 33
    fromEnum EventTypeOwnerChange = 34
    fromEnum EventTypeGrabBroken = 35
    fromEnum EventTypeDamage = 36
    fromEnum EventTypeTouchBegin = 37
    fromEnum EventTypeTouchUpdate = 38
    fromEnum EventTypeTouchEnd = 39
    fromEnum EventTypeTouchCancel = 40
    fromEnum EventTypeEventLast = 41
    fromEnum (AnotherEventType k) = k

    toEnum -1 = EventTypeNothing
    toEnum 0 = EventTypeDelete
    toEnum 1 = EventTypeDestroy
    toEnum 2 = EventTypeExpose
    toEnum 3 = EventTypeMotionNotify
    toEnum 4 = EventTypeButtonPress
    toEnum 5 = EventType2buttonPress
    toEnum 6 = EventType3buttonPress
    toEnum 7 = EventTypeButtonRelease
    toEnum 8 = EventTypeKeyPress
    toEnum 9 = EventTypeKeyRelease
    toEnum 10 = EventTypeEnterNotify
    toEnum 11 = EventTypeLeaveNotify
    toEnum 12 = EventTypeFocusChange
    toEnum 13 = EventTypeConfigure
    toEnum 14 = EventTypeMap
    toEnum 15 = EventTypeUnmap
    toEnum 16 = EventTypePropertyNotify
    toEnum 17 = EventTypeSelectionClear
    toEnum 18 = EventTypeSelectionRequest
    toEnum 19 = EventTypeSelectionNotify
    toEnum 20 = EventTypeProximityIn
    toEnum 21 = EventTypeProximityOut
    toEnum 22 = EventTypeDragEnter
    toEnum 23 = EventTypeDragLeave
    toEnum 24 = EventTypeDragMotion
    toEnum 25 = EventTypeDragStatus
    toEnum 26 = EventTypeDropStart
    toEnum 27 = EventTypeDropFinished
    toEnum 28 = EventTypeClientEvent
    toEnum 29 = EventTypeVisibilityNotify
    toEnum 31 = EventTypeScroll
    toEnum 32 = EventTypeWindowState
    toEnum 33 = EventTypeSetting
    toEnum 34 = EventTypeOwnerChange
    toEnum 35 = EventTypeGrabBroken
    toEnum 36 = EventTypeDamage
    toEnum 37 = EventTypeTouchBegin
    toEnum 38 = EventTypeTouchUpdate
    toEnum 39 = EventTypeTouchEnd
    toEnum 40 = EventTypeTouchCancel
    toEnum 41 = EventTypeEventLast
    toEnum k = AnotherEventType k

foreign import ccall "gdk_event_type_get_type" c_gdk_event_type_get_type :: 
    IO GType

instance BoxedEnum EventType where
    boxedEnumType _ = c_gdk_event_type_get_type

-- struct EventVisibility
newtype EventVisibility = EventVisibility (ForeignPtr EventVisibility)
noEventVisibility :: Maybe EventVisibility
noEventVisibility = Nothing

eventVisibilityReadType :: EventVisibility -> IO EventType
eventVisibilityReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventVisibilityReadWindow :: EventVisibility -> IO Window
eventVisibilityReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventVisibilityReadSendEvent :: EventVisibility -> IO Int8
eventVisibilityReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventVisibilityReadState :: EventVisibility -> IO VisibilityState
eventVisibilityReadState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

-- struct EventWindowState
newtype EventWindowState = EventWindowState (ForeignPtr EventWindowState)
noEventWindowState :: Maybe EventWindowState
noEventWindowState = Nothing

eventWindowStateReadType :: EventWindowState -> IO EventType
eventWindowStateReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventWindowStateReadWindow :: EventWindowState -> IO Window
eventWindowStateReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventWindowStateReadSendEvent :: EventWindowState -> IO Int8
eventWindowStateReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventWindowStateReadChangedMask :: EventWindowState -> IO [WindowState]
eventWindowStateReadChangedMask s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO CUInt
    let val' = wordToGFlags val
    return val'

eventWindowStateReadNewWindowState :: EventWindowState -> IO [WindowState]
eventWindowStateReadNewWindowState s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CUInt
    let val' = wordToGFlags val
    return val'

-- callback FilterFunc
filterFuncClosure :: FilterFunc -> IO Closure
filterFuncClosure cb = newCClosure =<< mkFilterFunc wrapped
    where wrapped = filterFuncWrapper Nothing cb

type FilterFuncC =
    Ptr () ->
    Ptr Event ->
    Ptr () ->
    IO CUInt

foreign import ccall "wrapper"
    mkFilterFunc :: FilterFuncC -> IO (FunPtr FilterFuncC)

type FilterFunc =
    Ptr () ->
    Event ->
    IO FilterReturn

noFilterFunc :: Maybe FilterFunc
noFilterFunc = Nothing

filterFuncWrapper ::
    Maybe (Ptr (FunPtr (FilterFuncC))) ->
    FilterFunc ->
    Ptr () ->
    Ptr Event ->
    Ptr () ->
    IO CUInt
filterFuncWrapper funptrptr _cb xevent event _ = do
    event' <- (newBoxed Event) event
    result <- _cb  xevent event'
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'

-- Enum FilterReturn

data FilterReturn = 
      FilterReturnContinue
    | FilterReturnTranslate
    | FilterReturnRemove
    | AnotherFilterReturn Int
    deriving (Show, Eq)

instance Enum FilterReturn where
    fromEnum FilterReturnContinue = 0
    fromEnum FilterReturnTranslate = 1
    fromEnum FilterReturnRemove = 2
    fromEnum (AnotherFilterReturn k) = k

    toEnum 0 = FilterReturnContinue
    toEnum 1 = FilterReturnTranslate
    toEnum 2 = FilterReturnRemove
    toEnum k = AnotherFilterReturn k

foreign import ccall "gdk_filter_return_get_type" c_gdk_filter_return_get_type :: 
    IO GType

instance BoxedEnum FilterReturn where
    boxedEnumType _ = c_gdk_filter_return_get_type

-- object FrameClock 
newtype FrameClock = FrameClock (ForeignPtr FrameClock)
noFrameClock :: Maybe FrameClock
noFrameClock = Nothing

foreign import ccall "gdk_frame_clock_get_type"
    c_gdk_frame_clock_get_type :: IO GType

type instance ParentTypes FrameClock = '[GObject.Object]

instance GObject FrameClock where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_frame_clock_get_type
    

class GObject o => FrameClockK o
instance (GObject o, IsDescendantOf FrameClock o) => FrameClockK o

toFrameClock :: FrameClockK o => o -> IO FrameClock
toFrameClock = unsafeCastTo FrameClock

-- method FrameClock::begin_updating
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_begin_updating" gdk_frame_clock_begin_updating :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    IO ()


frameClockBeginUpdating ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    m ()
frameClockBeginUpdating _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_frame_clock_begin_updating _obj'
    touchManagedPtr _obj
    return ()

-- method FrameClock::end_updating
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_end_updating" gdk_frame_clock_end_updating :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    IO ()


frameClockEndUpdating ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    m ()
frameClockEndUpdating _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_frame_clock_end_updating _obj'
    touchManagedPtr _obj
    return ()

-- method FrameClock::get_current_timings
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "FrameTimings"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_get_current_timings" gdk_frame_clock_get_current_timings :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    IO (Ptr FrameTimings)


frameClockGetCurrentTimings ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    m FrameTimings
frameClockGetCurrentTimings _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_frame_clock_get_current_timings _obj'
    result' <- (wrapBoxed FrameTimings) result
    touchManagedPtr _obj
    return result'

-- method FrameClock::get_frame_counter
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_get_frame_counter" gdk_frame_clock_get_frame_counter :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    IO Int64


frameClockGetFrameCounter ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    m Int64
frameClockGetFrameCounter _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_frame_clock_get_frame_counter _obj'
    touchManagedPtr _obj
    return result

-- method FrameClock::get_frame_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_get_frame_time" gdk_frame_clock_get_frame_time :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    IO Int64


frameClockGetFrameTime ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    m Int64
frameClockGetFrameTime _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_frame_clock_get_frame_time _obj'
    touchManagedPtr _obj
    return result

-- method FrameClock::get_history_start
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_get_history_start" gdk_frame_clock_get_history_start :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    IO Int64


frameClockGetHistoryStart ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    m Int64
frameClockGetHistoryStart _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_frame_clock_get_history_start _obj'
    touchManagedPtr _obj
    return result

-- method FrameClock::get_refresh_info
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_time", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refresh_interval_return", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "presentation_time_return", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_time", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refresh_interval_return", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "presentation_time_return", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_get_refresh_info" gdk_frame_clock_get_refresh_info :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    Int64 ->                                -- base_time : TBasicType TInt64
    Int64 ->                                -- refresh_interval_return : TBasicType TInt64
    Int64 ->                                -- presentation_time_return : TBasicType TInt64
    IO ()


frameClockGetRefreshInfo ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    Int64 ->                                -- base_time
    Int64 ->                                -- refresh_interval_return
    Int64 ->                                -- presentation_time_return
    m ()
frameClockGetRefreshInfo _obj base_time refresh_interval_return presentation_time_return = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_frame_clock_get_refresh_info _obj' base_time refresh_interval_return presentation_time_return
    touchManagedPtr _obj
    return ()

-- method FrameClock::get_timings
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "frame_counter", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "frame_counter", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "FrameTimings"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_get_timings" gdk_frame_clock_get_timings :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    Int64 ->                                -- frame_counter : TBasicType TInt64
    IO (Ptr FrameTimings)


frameClockGetTimings ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    Int64 ->                                -- frame_counter
    m FrameTimings
frameClockGetTimings _obj frame_counter = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_frame_clock_get_timings _obj' frame_counter
    result' <- (wrapBoxed FrameTimings) result
    touchManagedPtr _obj
    return result'

-- method FrameClock::request_phase
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "phase", argType = TInterface "Gdk" "FrameClockPhase", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameClock", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "phase", argType = TInterface "Gdk" "FrameClockPhase", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_clock_request_phase" gdk_frame_clock_request_phase :: 
    Ptr FrameClock ->                       -- _obj : TInterface "Gdk" "FrameClock"
    CUInt ->                                -- phase : TInterface "Gdk" "FrameClockPhase"
    IO ()


frameClockRequestPhase ::
    (MonadIO m, FrameClockK a) =>
    a ->                                    -- _obj
    [FrameClockPhase] ->                    -- phase
    m ()
frameClockRequestPhase _obj phase = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let phase' = gflagsToWord phase
    gdk_frame_clock_request_phase _obj' phase'
    touchManagedPtr _obj
    return ()

-- signal FrameClock::after-paint
type FrameClockAfterPaintCallback =
    IO ()

noFrameClockAfterPaintCallback :: Maybe FrameClockAfterPaintCallback
noFrameClockAfterPaintCallback = Nothing

type FrameClockAfterPaintCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockAfterPaintCallback :: FrameClockAfterPaintCallbackC -> IO (FunPtr FrameClockAfterPaintCallbackC)

frameClockAfterPaintClosure :: FrameClockAfterPaintCallback -> IO Closure
frameClockAfterPaintClosure cb = newCClosure =<< mkFrameClockAfterPaintCallback wrapped
    where wrapped = frameClockAfterPaintCallbackWrapper cb

frameClockAfterPaintCallbackWrapper ::
    FrameClockAfterPaintCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockAfterPaintCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockAfterPaint :: (GObject a, MonadIO m) => a -> FrameClockAfterPaintCallback -> m SignalHandlerId
onFrameClockAfterPaint obj cb = liftIO $ connectFrameClockAfterPaint obj cb SignalConnectBefore
afterFrameClockAfterPaint :: (GObject a, MonadIO m) => a -> FrameClockAfterPaintCallback -> m SignalHandlerId
afterFrameClockAfterPaint obj cb = connectFrameClockAfterPaint obj cb SignalConnectAfter

connectFrameClockAfterPaint :: (GObject a, MonadIO m) =>
                               a -> FrameClockAfterPaintCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockAfterPaint obj cb after = liftIO $ do
    cb' <- mkFrameClockAfterPaintCallback (frameClockAfterPaintCallbackWrapper cb)
    connectSignalFunPtr obj "after-paint" cb' after

-- signal FrameClock::before-paint
type FrameClockBeforePaintCallback =
    IO ()

noFrameClockBeforePaintCallback :: Maybe FrameClockBeforePaintCallback
noFrameClockBeforePaintCallback = Nothing

type FrameClockBeforePaintCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockBeforePaintCallback :: FrameClockBeforePaintCallbackC -> IO (FunPtr FrameClockBeforePaintCallbackC)

frameClockBeforePaintClosure :: FrameClockBeforePaintCallback -> IO Closure
frameClockBeforePaintClosure cb = newCClosure =<< mkFrameClockBeforePaintCallback wrapped
    where wrapped = frameClockBeforePaintCallbackWrapper cb

frameClockBeforePaintCallbackWrapper ::
    FrameClockBeforePaintCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockBeforePaintCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockBeforePaint :: (GObject a, MonadIO m) => a -> FrameClockBeforePaintCallback -> m SignalHandlerId
onFrameClockBeforePaint obj cb = liftIO $ connectFrameClockBeforePaint obj cb SignalConnectBefore
afterFrameClockBeforePaint :: (GObject a, MonadIO m) => a -> FrameClockBeforePaintCallback -> m SignalHandlerId
afterFrameClockBeforePaint obj cb = connectFrameClockBeforePaint obj cb SignalConnectAfter

connectFrameClockBeforePaint :: (GObject a, MonadIO m) =>
                                a -> FrameClockBeforePaintCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockBeforePaint obj cb after = liftIO $ do
    cb' <- mkFrameClockBeforePaintCallback (frameClockBeforePaintCallbackWrapper cb)
    connectSignalFunPtr obj "before-paint" cb' after

-- signal FrameClock::flush-events
type FrameClockFlushEventsCallback =
    IO ()

noFrameClockFlushEventsCallback :: Maybe FrameClockFlushEventsCallback
noFrameClockFlushEventsCallback = Nothing

type FrameClockFlushEventsCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockFlushEventsCallback :: FrameClockFlushEventsCallbackC -> IO (FunPtr FrameClockFlushEventsCallbackC)

frameClockFlushEventsClosure :: FrameClockFlushEventsCallback -> IO Closure
frameClockFlushEventsClosure cb = newCClosure =<< mkFrameClockFlushEventsCallback wrapped
    where wrapped = frameClockFlushEventsCallbackWrapper cb

frameClockFlushEventsCallbackWrapper ::
    FrameClockFlushEventsCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockFlushEventsCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockFlushEvents :: (GObject a, MonadIO m) => a -> FrameClockFlushEventsCallback -> m SignalHandlerId
onFrameClockFlushEvents obj cb = liftIO $ connectFrameClockFlushEvents obj cb SignalConnectBefore
afterFrameClockFlushEvents :: (GObject a, MonadIO m) => a -> FrameClockFlushEventsCallback -> m SignalHandlerId
afterFrameClockFlushEvents obj cb = connectFrameClockFlushEvents obj cb SignalConnectAfter

connectFrameClockFlushEvents :: (GObject a, MonadIO m) =>
                                a -> FrameClockFlushEventsCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockFlushEvents obj cb after = liftIO $ do
    cb' <- mkFrameClockFlushEventsCallback (frameClockFlushEventsCallbackWrapper cb)
    connectSignalFunPtr obj "flush-events" cb' after

-- signal FrameClock::layout
type FrameClockLayoutCallback =
    IO ()

noFrameClockLayoutCallback :: Maybe FrameClockLayoutCallback
noFrameClockLayoutCallback = Nothing

type FrameClockLayoutCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockLayoutCallback :: FrameClockLayoutCallbackC -> IO (FunPtr FrameClockLayoutCallbackC)

frameClockLayoutClosure :: FrameClockLayoutCallback -> IO Closure
frameClockLayoutClosure cb = newCClosure =<< mkFrameClockLayoutCallback wrapped
    where wrapped = frameClockLayoutCallbackWrapper cb

frameClockLayoutCallbackWrapper ::
    FrameClockLayoutCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockLayoutCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockLayout :: (GObject a, MonadIO m) => a -> FrameClockLayoutCallback -> m SignalHandlerId
onFrameClockLayout obj cb = liftIO $ connectFrameClockLayout obj cb SignalConnectBefore
afterFrameClockLayout :: (GObject a, MonadIO m) => a -> FrameClockLayoutCallback -> m SignalHandlerId
afterFrameClockLayout obj cb = connectFrameClockLayout obj cb SignalConnectAfter

connectFrameClockLayout :: (GObject a, MonadIO m) =>
                           a -> FrameClockLayoutCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockLayout obj cb after = liftIO $ do
    cb' <- mkFrameClockLayoutCallback (frameClockLayoutCallbackWrapper cb)
    connectSignalFunPtr obj "layout" cb' after

-- signal FrameClock::paint
type FrameClockPaintCallback =
    IO ()

noFrameClockPaintCallback :: Maybe FrameClockPaintCallback
noFrameClockPaintCallback = Nothing

type FrameClockPaintCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockPaintCallback :: FrameClockPaintCallbackC -> IO (FunPtr FrameClockPaintCallbackC)

frameClockPaintClosure :: FrameClockPaintCallback -> IO Closure
frameClockPaintClosure cb = newCClosure =<< mkFrameClockPaintCallback wrapped
    where wrapped = frameClockPaintCallbackWrapper cb

frameClockPaintCallbackWrapper ::
    FrameClockPaintCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockPaintCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockPaint :: (GObject a, MonadIO m) => a -> FrameClockPaintCallback -> m SignalHandlerId
onFrameClockPaint obj cb = liftIO $ connectFrameClockPaint obj cb SignalConnectBefore
afterFrameClockPaint :: (GObject a, MonadIO m) => a -> FrameClockPaintCallback -> m SignalHandlerId
afterFrameClockPaint obj cb = connectFrameClockPaint obj cb SignalConnectAfter

connectFrameClockPaint :: (GObject a, MonadIO m) =>
                          a -> FrameClockPaintCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockPaint obj cb after = liftIO $ do
    cb' <- mkFrameClockPaintCallback (frameClockPaintCallbackWrapper cb)
    connectSignalFunPtr obj "paint" cb' after

-- signal FrameClock::resume-events
type FrameClockResumeEventsCallback =
    IO ()

noFrameClockResumeEventsCallback :: Maybe FrameClockResumeEventsCallback
noFrameClockResumeEventsCallback = Nothing

type FrameClockResumeEventsCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockResumeEventsCallback :: FrameClockResumeEventsCallbackC -> IO (FunPtr FrameClockResumeEventsCallbackC)

frameClockResumeEventsClosure :: FrameClockResumeEventsCallback -> IO Closure
frameClockResumeEventsClosure cb = newCClosure =<< mkFrameClockResumeEventsCallback wrapped
    where wrapped = frameClockResumeEventsCallbackWrapper cb

frameClockResumeEventsCallbackWrapper ::
    FrameClockResumeEventsCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockResumeEventsCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockResumeEvents :: (GObject a, MonadIO m) => a -> FrameClockResumeEventsCallback -> m SignalHandlerId
onFrameClockResumeEvents obj cb = liftIO $ connectFrameClockResumeEvents obj cb SignalConnectBefore
afterFrameClockResumeEvents :: (GObject a, MonadIO m) => a -> FrameClockResumeEventsCallback -> m SignalHandlerId
afterFrameClockResumeEvents obj cb = connectFrameClockResumeEvents obj cb SignalConnectAfter

connectFrameClockResumeEvents :: (GObject a, MonadIO m) =>
                                 a -> FrameClockResumeEventsCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockResumeEvents obj cb after = liftIO $ do
    cb' <- mkFrameClockResumeEventsCallback (frameClockResumeEventsCallbackWrapper cb)
    connectSignalFunPtr obj "resume-events" cb' after

-- signal FrameClock::update
type FrameClockUpdateCallback =
    IO ()

noFrameClockUpdateCallback :: Maybe FrameClockUpdateCallback
noFrameClockUpdateCallback = Nothing

type FrameClockUpdateCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFrameClockUpdateCallback :: FrameClockUpdateCallbackC -> IO (FunPtr FrameClockUpdateCallbackC)

frameClockUpdateClosure :: FrameClockUpdateCallback -> IO Closure
frameClockUpdateClosure cb = newCClosure =<< mkFrameClockUpdateCallback wrapped
    where wrapped = frameClockUpdateCallbackWrapper cb

frameClockUpdateCallbackWrapper ::
    FrameClockUpdateCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
frameClockUpdateCallbackWrapper _cb _ _ = do
    _cb 

onFrameClockUpdate :: (GObject a, MonadIO m) => a -> FrameClockUpdateCallback -> m SignalHandlerId
onFrameClockUpdate obj cb = liftIO $ connectFrameClockUpdate obj cb SignalConnectBefore
afterFrameClockUpdate :: (GObject a, MonadIO m) => a -> FrameClockUpdateCallback -> m SignalHandlerId
afterFrameClockUpdate obj cb = connectFrameClockUpdate obj cb SignalConnectAfter

connectFrameClockUpdate :: (GObject a, MonadIO m) =>
                           a -> FrameClockUpdateCallback -> SignalConnectMode -> m SignalHandlerId
connectFrameClockUpdate obj cb after = liftIO $ do
    cb' <- mkFrameClockUpdateCallback (frameClockUpdateCallbackWrapper cb)
    connectSignalFunPtr obj "update" cb' after

-- Flags FrameClockPhase

data FrameClockPhase = 
      FrameClockPhaseNone
    | FrameClockPhaseFlushEvents
    | FrameClockPhaseBeforePaint
    | FrameClockPhaseUpdate
    | FrameClockPhaseLayout
    | FrameClockPhasePaint
    | FrameClockPhaseResumeEvents
    | FrameClockPhaseAfterPaint
    | AnotherFrameClockPhase Int
    deriving (Show, Eq)

instance Enum FrameClockPhase where
    fromEnum FrameClockPhaseNone = 0
    fromEnum FrameClockPhaseFlushEvents = 1
    fromEnum FrameClockPhaseBeforePaint = 2
    fromEnum FrameClockPhaseUpdate = 4
    fromEnum FrameClockPhaseLayout = 8
    fromEnum FrameClockPhasePaint = 16
    fromEnum FrameClockPhaseResumeEvents = 32
    fromEnum FrameClockPhaseAfterPaint = 64
    fromEnum (AnotherFrameClockPhase k) = k

    toEnum 0 = FrameClockPhaseNone
    toEnum 1 = FrameClockPhaseFlushEvents
    toEnum 2 = FrameClockPhaseBeforePaint
    toEnum 4 = FrameClockPhaseUpdate
    toEnum 8 = FrameClockPhaseLayout
    toEnum 16 = FrameClockPhasePaint
    toEnum 32 = FrameClockPhaseResumeEvents
    toEnum 64 = FrameClockPhaseAfterPaint
    toEnum k = AnotherFrameClockPhase k

foreign import ccall "gdk_frame_clock_phase_get_type" c_gdk_frame_clock_phase_get_type :: 
    IO GType

instance BoxedEnum FrameClockPhase where
    boxedEnumType _ = c_gdk_frame_clock_phase_get_type

instance IsGFlag FrameClockPhase

-- struct FrameTimings
newtype FrameTimings = FrameTimings (ForeignPtr FrameTimings)
noFrameTimings :: Maybe FrameTimings
noFrameTimings = Nothing

foreign import ccall "gdk_frame_timings_get_type" c_gdk_frame_timings_get_type :: 
    IO GType

instance BoxedObject FrameTimings where
    boxedType _ = c_gdk_frame_timings_get_type

-- method FrameTimings::get_complete
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_get_complete" gdk_frame_timings_get_complete :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO CInt


frameTimingsGetComplete ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m Bool
frameTimingsGetComplete _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_get_complete _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method FrameTimings::get_frame_counter
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_get_frame_counter" gdk_frame_timings_get_frame_counter :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO Int64


frameTimingsGetFrameCounter ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m Int64
frameTimingsGetFrameCounter _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_get_frame_counter _obj'
    touchManagedPtr _obj
    return result

-- method FrameTimings::get_frame_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_get_frame_time" gdk_frame_timings_get_frame_time :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO Int64


frameTimingsGetFrameTime ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m Int64
frameTimingsGetFrameTime _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_get_frame_time _obj'
    touchManagedPtr _obj
    return result

-- method FrameTimings::get_predicted_presentation_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_get_predicted_presentation_time" gdk_frame_timings_get_predicted_presentation_time :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO Int64


frameTimingsGetPredictedPresentationTime ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m Int64
frameTimingsGetPredictedPresentationTime _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_get_predicted_presentation_time _obj'
    touchManagedPtr _obj
    return result

-- method FrameTimings::get_presentation_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_get_presentation_time" gdk_frame_timings_get_presentation_time :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO Int64


frameTimingsGetPresentationTime ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m Int64
frameTimingsGetPresentationTime _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_get_presentation_time _obj'
    touchManagedPtr _obj
    return result

-- method FrameTimings::get_refresh_interval
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_get_refresh_interval" gdk_frame_timings_get_refresh_interval :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO Int64


frameTimingsGetRefreshInterval ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m Int64
frameTimingsGetRefreshInterval _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_get_refresh_interval _obj'
    touchManagedPtr _obj
    return result

-- method FrameTimings::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "FrameTimings"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_ref" gdk_frame_timings_ref :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO (Ptr FrameTimings)


frameTimingsRef ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m FrameTimings
frameTimingsRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_frame_timings_ref _obj'
    result' <- (wrapBoxed FrameTimings) result
    touchManagedPtr _obj
    return result'

-- method FrameTimings::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "FrameTimings", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_frame_timings_unref" gdk_frame_timings_unref :: 
    Ptr FrameTimings ->                     -- _obj : TInterface "Gdk" "FrameTimings"
    IO ()


frameTimingsUnref ::
    (MonadIO m) =>
    FrameTimings ->                         -- _obj
    m ()
frameTimingsUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gdk_frame_timings_unref _obj'
    touchManagedPtr _obj
    return ()

-- Enum FullscreenMode

data FullscreenMode = 
      FullscreenModeCurrentMonitor
    | FullscreenModeAllMonitors
    | AnotherFullscreenMode Int
    deriving (Show, Eq)

instance Enum FullscreenMode where
    fromEnum FullscreenModeCurrentMonitor = 0
    fromEnum FullscreenModeAllMonitors = 1
    fromEnum (AnotherFullscreenMode k) = k

    toEnum 0 = FullscreenModeCurrentMonitor
    toEnum 1 = FullscreenModeAllMonitors
    toEnum k = AnotherFullscreenMode k

foreign import ccall "gdk_fullscreen_mode_get_type" c_gdk_fullscreen_mode_get_type :: 
    IO GType

instance BoxedEnum FullscreenMode where
    boxedEnumType _ = c_gdk_fullscreen_mode_get_type

-- object GLContext 
newtype GLContext = GLContext (ForeignPtr GLContext)
noGLContext :: Maybe GLContext
noGLContext = Nothing

foreign import ccall "gdk_gl_context_get_type"
    c_gdk_gl_context_get_type :: IO GType

type instance ParentTypes GLContext = '[GObject.Object]

instance GObject GLContext where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_gl_context_get_type
    

class GObject o => GLContextK o
instance (GObject o, IsDescendantOf GLContext o) => GLContextK o

toGLContext :: GLContextK o => o -> IO GLContext
toGLContext = unsafeCastTo GLContext

-- method GLContext::get_debug_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_debug_enabled" gdk_gl_context_get_debug_enabled :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    IO CInt


gLContextGetDebugEnabled ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m Bool
gLContextGetDebugEnabled _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_gl_context_get_debug_enabled _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method GLContext::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_display" gdk_gl_context_get_display :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    IO (Ptr Display)


gLContextGetDisplay ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m Display
gLContextGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_gl_context_get_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method GLContext::get_forward_compatible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_forward_compatible" gdk_gl_context_get_forward_compatible :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    IO CInt


gLContextGetForwardCompatible ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m Bool
gLContextGetForwardCompatible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_gl_context_get_forward_compatible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- XXX Could not generate method GLContext::get_required_version
-- Error was : Bad introspection data: "argument \"major\" is not of nullable type, but it is marked as such."
-- method GLContext::get_shared_context
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "GLContext"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_shared_context" gdk_gl_context_get_shared_context :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    IO (Ptr GLContext)


gLContextGetSharedContext ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m GLContext
gLContextGetSharedContext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_gl_context_get_shared_context _obj'
    result' <- (newObject GLContext) result
    touchManagedPtr _obj
    return result'

-- method GLContext::get_version
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "major", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "minor", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_version" gdk_gl_context_get_version :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    Ptr Int32 ->                            -- major : TBasicType TInt32
    Ptr Int32 ->                            -- minor : TBasicType TInt32
    IO ()


gLContextGetVersion ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
gLContextGetVersion _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    major <- allocMem :: IO (Ptr Int32)
    minor <- allocMem :: IO (Ptr Int32)
    gdk_gl_context_get_version _obj' major minor
    major' <- peek major
    minor' <- peek minor
    touchManagedPtr _obj
    freeMem major
    freeMem minor
    return (major', minor')

-- method GLContext::get_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_window" gdk_gl_context_get_window :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    IO (Ptr Window)


gLContextGetWindow ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m Window
gLContextGetWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_gl_context_get_window _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method GLContext::make_current
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_make_current" gdk_gl_context_make_current :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    IO ()


gLContextMakeCurrent ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m ()
gLContextMakeCurrent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_gl_context_make_current _obj'
    touchManagedPtr _obj
    return ()

-- method GLContext::realize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : True
-- Skip return : False

foreign import ccall "gdk_gl_context_realize" gdk_gl_context_realize :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    Ptr (Ptr GError) ->                     -- error
    IO CInt


gLContextRealize ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    m ()
gLContextRealize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        _ <- propagateGError $ gdk_gl_context_realize _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

-- method GLContext::set_debug_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_set_debug_enabled" gdk_gl_context_set_debug_enabled :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    CInt ->                                 -- enabled : TBasicType TBoolean
    IO ()


gLContextSetDebugEnabled ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- enabled
    m ()
gLContextSetDebugEnabled _obj enabled = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let enabled' = (fromIntegral . fromEnum) enabled
    gdk_gl_context_set_debug_enabled _obj' enabled'
    touchManagedPtr _obj
    return ()

-- method GLContext::set_forward_compatible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "compatible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "compatible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_set_forward_compatible" gdk_gl_context_set_forward_compatible :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    CInt ->                                 -- compatible : TBasicType TBoolean
    IO ()


gLContextSetForwardCompatible ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- compatible
    m ()
gLContextSetForwardCompatible _obj compatible = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let compatible' = (fromIntegral . fromEnum) compatible
    gdk_gl_context_set_forward_compatible _obj' compatible'
    touchManagedPtr _obj
    return ()

-- method GLContext::set_required_version
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "major", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "GLContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "major", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_set_required_version" gdk_gl_context_set_required_version :: 
    Ptr GLContext ->                        -- _obj : TInterface "Gdk" "GLContext"
    Int32 ->                                -- major : TBasicType TInt32
    Int32 ->                                -- minor : TBasicType TInt32
    IO ()


gLContextSetRequiredVersion ::
    (MonadIO m, GLContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- major
    Int32 ->                                -- minor
    m ()
gLContextSetRequiredVersion _obj major minor = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_gl_context_set_required_version _obj' major minor
    touchManagedPtr _obj
    return ()

-- method GLContext::clear_current
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_clear_current" gdk_gl_context_clear_current :: 
    IO ()


gLContextClearCurrent ::
    (MonadIO m) =>
    m ()
gLContextClearCurrent  = liftIO $ do
    gdk_gl_context_clear_current
    return ()

-- method GLContext::get_current
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "GLContext"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_context_get_current" gdk_gl_context_get_current :: 
    IO (Ptr GLContext)


gLContextGetCurrent ::
    (MonadIO m) =>
    m GLContext
gLContextGetCurrent  = liftIO $ do
    result <- gdk_gl_context_get_current
    result' <- (newObject GLContext) result
    return result'

-- Enum GLError

data GLError = 
      GLErrorNotAvailable
    | GLErrorUnsupportedFormat
    | GLErrorUnsupportedProfile
    | AnotherGLError Int
    deriving (Show, Eq)

instance Enum GLError where
    fromEnum GLErrorNotAvailable = 0
    fromEnum GLErrorUnsupportedFormat = 1
    fromEnum GLErrorUnsupportedProfile = 2
    fromEnum (AnotherGLError k) = k

    toEnum 0 = GLErrorNotAvailable
    toEnum 1 = GLErrorUnsupportedFormat
    toEnum 2 = GLErrorUnsupportedProfile
    toEnum k = AnotherGLError k

instance GErrorClass GLError where
    gerrorClassDomain _ = "gdk-gl-error-quark"

catchGLError ::
    IO a ->
    (GLError -> GErrorMessage -> IO a) ->
    IO a
catchGLError = catchGErrorJustDomain

handleGLError ::
    (GLError -> GErrorMessage -> IO a) ->
    IO a ->
    IO a
handleGLError = handleGErrorJustDomain

foreign import ccall "gdk_gl_error_get_type" c_gdk_gl_error_get_type :: 
    IO GType

instance BoxedEnum GLError where
    boxedEnumType _ = c_gdk_gl_error_get_type

-- struct Geometry
newtype Geometry = Geometry (ForeignPtr Geometry)
noGeometry :: Maybe Geometry
noGeometry = Nothing

geometryReadMinWidth :: Geometry -> IO Int32
geometryReadMinWidth s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Int32
    return val

geometryReadMinHeight :: Geometry -> IO Int32
geometryReadMinHeight s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO Int32
    return val

geometryReadMaxWidth :: Geometry -> IO Int32
geometryReadMaxWidth s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Int32
    return val

geometryReadMaxHeight :: Geometry -> IO Int32
geometryReadMaxHeight s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 12) :: IO Int32
    return val

geometryReadBaseWidth :: Geometry -> IO Int32
geometryReadBaseWidth s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int32
    return val

geometryReadBaseHeight :: Geometry -> IO Int32
geometryReadBaseHeight s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Int32
    return val

geometryReadWidthInc :: Geometry -> IO Int32
geometryReadWidthInc s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO Int32
    return val

geometryReadHeightInc :: Geometry -> IO Int32
geometryReadHeightInc s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 28) :: IO Int32
    return val

geometryReadMinAspect :: Geometry -> IO Double
geometryReadMinAspect s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CDouble
    let val' = realToFrac val
    return val'

geometryReadMaxAspect :: Geometry -> IO Double
geometryReadMaxAspect s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CDouble
    let val' = realToFrac val
    return val'

geometryReadWinGravity :: Geometry -> IO Gravity
geometryReadWinGravity s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

-- Enum GrabOwnership

data GrabOwnership = 
      GrabOwnershipNone
    | GrabOwnershipWindow
    | GrabOwnershipApplication
    | AnotherGrabOwnership Int
    deriving (Show, Eq)

instance Enum GrabOwnership where
    fromEnum GrabOwnershipNone = 0
    fromEnum GrabOwnershipWindow = 1
    fromEnum GrabOwnershipApplication = 2
    fromEnum (AnotherGrabOwnership k) = k

    toEnum 0 = GrabOwnershipNone
    toEnum 1 = GrabOwnershipWindow
    toEnum 2 = GrabOwnershipApplication
    toEnum k = AnotherGrabOwnership k

foreign import ccall "gdk_grab_ownership_get_type" c_gdk_grab_ownership_get_type :: 
    IO GType

instance BoxedEnum GrabOwnership where
    boxedEnumType _ = c_gdk_grab_ownership_get_type

-- Enum GrabStatus

data GrabStatus = 
      GrabStatusSuccess
    | GrabStatusAlreadyGrabbed
    | GrabStatusInvalidTime
    | GrabStatusNotViewable
    | GrabStatusFrozen
    | GrabStatusFailed
    | AnotherGrabStatus Int
    deriving (Show, Eq)

instance Enum GrabStatus where
    fromEnum GrabStatusSuccess = 0
    fromEnum GrabStatusAlreadyGrabbed = 1
    fromEnum GrabStatusInvalidTime = 2
    fromEnum GrabStatusNotViewable = 3
    fromEnum GrabStatusFrozen = 4
    fromEnum GrabStatusFailed = 5
    fromEnum (AnotherGrabStatus k) = k

    toEnum 0 = GrabStatusSuccess
    toEnum 1 = GrabStatusAlreadyGrabbed
    toEnum 2 = GrabStatusInvalidTime
    toEnum 3 = GrabStatusNotViewable
    toEnum 4 = GrabStatusFrozen
    toEnum 5 = GrabStatusFailed
    toEnum k = AnotherGrabStatus k

foreign import ccall "gdk_grab_status_get_type" c_gdk_grab_status_get_type :: 
    IO GType

instance BoxedEnum GrabStatus where
    boxedEnumType _ = c_gdk_grab_status_get_type

-- Enum Gravity

data Gravity = 
      GravityNorthWest
    | GravityNorth
    | GravityNorthEast
    | GravityWest
    | GravityCenter
    | GravityEast
    | GravitySouthWest
    | GravitySouth
    | GravitySouthEast
    | GravityStatic
    | AnotherGravity Int
    deriving (Show, Eq)

instance Enum Gravity where
    fromEnum GravityNorthWest = 1
    fromEnum GravityNorth = 2
    fromEnum GravityNorthEast = 3
    fromEnum GravityWest = 4
    fromEnum GravityCenter = 5
    fromEnum GravityEast = 6
    fromEnum GravitySouthWest = 7
    fromEnum GravitySouth = 8
    fromEnum GravitySouthEast = 9
    fromEnum GravityStatic = 10
    fromEnum (AnotherGravity k) = k

    toEnum 1 = GravityNorthWest
    toEnum 2 = GravityNorth
    toEnum 3 = GravityNorthEast
    toEnum 4 = GravityWest
    toEnum 5 = GravityCenter
    toEnum 6 = GravityEast
    toEnum 7 = GravitySouthWest
    toEnum 8 = GravitySouth
    toEnum 9 = GravitySouthEast
    toEnum 10 = GravityStatic
    toEnum k = AnotherGravity k

foreign import ccall "gdk_gravity_get_type" c_gdk_gravity_get_type :: 
    IO GType

instance BoxedEnum Gravity where
    boxedEnumType _ = c_gdk_gravity_get_type

-- Enum InputMode

data InputMode = 
      InputModeDisabled
    | InputModeScreen
    | InputModeWindow
    | AnotherInputMode Int
    deriving (Show, Eq)

instance Enum InputMode where
    fromEnum InputModeDisabled = 0
    fromEnum InputModeScreen = 1
    fromEnum InputModeWindow = 2
    fromEnum (AnotherInputMode k) = k

    toEnum 0 = InputModeDisabled
    toEnum 1 = InputModeScreen
    toEnum 2 = InputModeWindow
    toEnum k = AnotherInputMode k

foreign import ccall "gdk_input_mode_get_type" c_gdk_input_mode_get_type :: 
    IO GType

instance BoxedEnum InputMode where
    boxedEnumType _ = c_gdk_input_mode_get_type

-- Enum InputSource

data InputSource = 
      InputSourceMouse
    | InputSourcePen
    | InputSourceEraser
    | InputSourceCursor
    | InputSourceKeyboard
    | InputSourceTouchscreen
    | InputSourceTouchpad
    | AnotherInputSource Int
    deriving (Show, Eq)

instance Enum InputSource where
    fromEnum InputSourceMouse = 0
    fromEnum InputSourcePen = 1
    fromEnum InputSourceEraser = 2
    fromEnum InputSourceCursor = 3
    fromEnum InputSourceKeyboard = 4
    fromEnum InputSourceTouchscreen = 5
    fromEnum InputSourceTouchpad = 6
    fromEnum (AnotherInputSource k) = k

    toEnum 0 = InputSourceMouse
    toEnum 1 = InputSourcePen
    toEnum 2 = InputSourceEraser
    toEnum 3 = InputSourceCursor
    toEnum 4 = InputSourceKeyboard
    toEnum 5 = InputSourceTouchscreen
    toEnum 6 = InputSourceTouchpad
    toEnum k = AnotherInputSource k

foreign import ccall "gdk_input_source_get_type" c_gdk_input_source_get_type :: 
    IO GType

instance BoxedEnum InputSource where
    boxedEnumType _ = c_gdk_input_source_get_type

-- object Keymap 
newtype Keymap = Keymap (ForeignPtr Keymap)
noKeymap :: Maybe Keymap
noKeymap = Nothing

foreign import ccall "gdk_keymap_get_type"
    c_gdk_keymap_get_type :: IO GType

type instance ParentTypes Keymap = '[GObject.Object]

instance GObject Keymap where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_keymap_get_type
    

class GObject o => KeymapK o
instance (GObject o, IsDescendantOf Keymap o) => KeymapK o

toKeymap :: KeymapK o => o -> IO Keymap
toKeymap = unsafeCastTo Keymap

-- method Keymap::add_virtual_modifiers
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_add_virtual_modifiers" gdk_keymap_add_virtual_modifiers :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    Ptr CUInt ->                            -- state : TInterface "Gdk" "ModifierType"
    IO ()


keymapAddVirtualModifiers ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    [ModifierType] ->                       -- state
    m ([ModifierType])
keymapAddVirtualModifiers _obj state = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = gflagsToWord state
    state'' <- allocMem :: IO (Ptr CUInt)
    poke state'' state'
    gdk_keymap_add_virtual_modifiers _obj' state''
    state''' <- peek state''
    let state'''' = wordToGFlags state'''
    touchManagedPtr _obj
    freeMem state''
    return state''''

-- method Keymap::get_caps_lock_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_caps_lock_state" gdk_keymap_get_caps_lock_state :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    IO CInt


keymapGetCapsLockState ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    m Bool
keymapGetCapsLockState _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_keymap_get_caps_lock_state _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Keymap::get_direction
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Direction"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_direction" gdk_keymap_get_direction :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    IO CUInt


keymapGetDirection ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    m Pango.Direction
keymapGetDirection _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_keymap_get_direction _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Keymap::get_entries_for_keycode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hardware_keycode", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keys", argType = TCArray False (-1) 4 (TInterface "Gdk" "KeymapKey"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "keyvals", argType = TCArray False (-1) 4 (TBasicType TUInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_entries", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "n_entries", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_entries", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hardware_keycode", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_entries_for_keycode" gdk_keymap_get_entries_for_keycode :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    Word32 ->                               -- hardware_keycode : TBasicType TUInt32
    Ptr (Ptr KeymapKey) ->                  -- keys : TCArray False (-1) 4 (TInterface "Gdk" "KeymapKey")
    Ptr (Ptr Word32) ->                     -- keyvals : TCArray False (-1) 4 (TBasicType TUInt32)
    Ptr Int32 ->                            -- n_entries : TBasicType TInt32
    IO CInt


keymapGetEntriesForKeycode ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- hardware_keycode
    m (Bool,[KeymapKey],[Word32])
keymapGetEntriesForKeycode _obj hardware_keycode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    keys <- allocMem :: IO (Ptr (Ptr KeymapKey))
    keyvals <- allocMem :: IO (Ptr (Ptr Word32))
    n_entries <- allocMem :: IO (Ptr Int32)
    result <- gdk_keymap_get_entries_for_keycode _obj' hardware_keycode keys keyvals n_entries
    n_entries' <- peek n_entries
    let result' = (/= 0) result
    keys' <- peek keys
    keys'' <- (unpackBlockArrayWithLength 12 n_entries') keys'
    keys''' <- mapM (wrapPtr KeymapKey) keys''
    freeMem keys'
    keyvals' <- peek keyvals
    keyvals'' <- (unpackStorableArrayWithLength n_entries') keyvals'
    freeMem keyvals'
    touchManagedPtr _obj
    freeMem keys
    freeMem keyvals
    freeMem n_entries
    return (result', keys''', keyvals'')

-- method Keymap::get_entries_for_keyval
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keys", argType = TCArray False (-1) 3 (TInterface "Gdk" "KeymapKey"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_keys", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "n_keys", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_entries_for_keyval" gdk_keymap_get_entries_for_keyval :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    Word32 ->                               -- keyval : TBasicType TUInt32
    Ptr (Ptr KeymapKey) ->                  -- keys : TCArray False (-1) 3 (TInterface "Gdk" "KeymapKey")
    Ptr Int32 ->                            -- n_keys : TBasicType TInt32
    IO CInt


keymapGetEntriesForKeyval ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- keyval
    m (Bool,[KeymapKey])
keymapGetEntriesForKeyval _obj keyval = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    keys <- allocMem :: IO (Ptr (Ptr KeymapKey))
    n_keys <- allocMem :: IO (Ptr Int32)
    result <- gdk_keymap_get_entries_for_keyval _obj' keyval keys n_keys
    n_keys' <- peek n_keys
    let result' = (/= 0) result
    keys' <- peek keys
    keys'' <- (unpackBlockArrayWithLength 12 n_keys') keys'
    keys''' <- mapM (wrapPtr KeymapKey) keys''
    freeMem keys'
    touchManagedPtr _obj
    freeMem keys
    freeMem n_keys
    return (result', keys''')

-- method Keymap::get_modifier_mask
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "intent", argType = TInterface "Gdk" "ModifierIntent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "intent", argType = TInterface "Gdk" "ModifierIntent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "ModifierType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_modifier_mask" gdk_keymap_get_modifier_mask :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    CUInt ->                                -- intent : TInterface "Gdk" "ModifierIntent"
    IO CUInt


keymapGetModifierMask ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    ModifierIntent ->                       -- intent
    m [ModifierType]
keymapGetModifierMask _obj intent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let intent' = (fromIntegral . fromEnum) intent
    result <- gdk_keymap_get_modifier_mask _obj' intent'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Keymap::get_modifier_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_modifier_state" gdk_keymap_get_modifier_state :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    IO Word32


keymapGetModifierState ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    m Word32
keymapGetModifierState _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_keymap_get_modifier_state _obj'
    touchManagedPtr _obj
    return result

-- method Keymap::get_num_lock_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_num_lock_state" gdk_keymap_get_num_lock_state :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    IO CInt


keymapGetNumLockState ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    m Bool
keymapGetNumLockState _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_keymap_get_num_lock_state _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Keymap::have_bidi_layouts
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_have_bidi_layouts" gdk_keymap_have_bidi_layouts :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    IO CInt


keymapHaveBidiLayouts ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    m Bool
keymapHaveBidiLayouts _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_keymap_have_bidi_layouts _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Keymap::lookup_key
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TInterface "Gdk" "KeymapKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TInterface "Gdk" "KeymapKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_lookup_key" gdk_keymap_lookup_key :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    Ptr KeymapKey ->                        -- key : TInterface "Gdk" "KeymapKey"
    IO Word32


keymapLookupKey ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    KeymapKey ->                            -- key
    m Word32
keymapLookupKey _obj key = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let key' = unsafeManagedPtrGetPtr key
    result <- gdk_keymap_lookup_key _obj' key'
    touchManagedPtr _obj
    touchManagedPtr key
    return result

-- method Keymap::map_virtual_modifiers
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_map_virtual_modifiers" gdk_keymap_map_virtual_modifiers :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    Ptr CUInt ->                            -- state : TInterface "Gdk" "ModifierType"
    IO CInt


keymapMapVirtualModifiers ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    [ModifierType] ->                       -- state
    m (Bool,[ModifierType])
keymapMapVirtualModifiers _obj state = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = gflagsToWord state
    state'' <- allocMem :: IO (Ptr CUInt)
    poke state'' state'
    result <- gdk_keymap_map_virtual_modifiers _obj' state''
    let result' = (/= 0) result
    state''' <- peek state''
    let state'''' = wordToGFlags state'''
    touchManagedPtr _obj
    freeMem state''
    return (result', state'''')

-- method Keymap::translate_keyboard_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hardware_keycode", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "group", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "effective_group", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "level", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "consumed_modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Keymap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hardware_keycode", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "group", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_translate_keyboard_state" gdk_keymap_translate_keyboard_state :: 
    Ptr Keymap ->                           -- _obj : TInterface "Gdk" "Keymap"
    Word32 ->                               -- hardware_keycode : TBasicType TUInt32
    CUInt ->                                -- state : TInterface "Gdk" "ModifierType"
    Int32 ->                                -- group : TBasicType TInt32
    Ptr Word32 ->                           -- keyval : TBasicType TUInt32
    Ptr Int32 ->                            -- effective_group : TBasicType TInt32
    Ptr Int32 ->                            -- level : TBasicType TInt32
    Ptr CUInt ->                            -- consumed_modifiers : TInterface "Gdk" "ModifierType"
    IO CInt


keymapTranslateKeyboardState ::
    (MonadIO m, KeymapK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- hardware_keycode
    [ModifierType] ->                       -- state
    Int32 ->                                -- group
    m (Bool,Word32,Int32,Int32,[ModifierType])
keymapTranslateKeyboardState _obj hardware_keycode state group = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = gflagsToWord state
    keyval <- allocMem :: IO (Ptr Word32)
    effective_group <- allocMem :: IO (Ptr Int32)
    level <- allocMem :: IO (Ptr Int32)
    consumed_modifiers <- allocMem :: IO (Ptr CUInt)
    result <- gdk_keymap_translate_keyboard_state _obj' hardware_keycode state' group keyval effective_group level consumed_modifiers
    let result' = (/= 0) result
    keyval' <- peek keyval
    effective_group' <- peek effective_group
    level' <- peek level
    consumed_modifiers' <- peek consumed_modifiers
    let consumed_modifiers'' = wordToGFlags consumed_modifiers'
    touchManagedPtr _obj
    freeMem keyval
    freeMem effective_group
    freeMem level
    freeMem consumed_modifiers
    return (result', keyval', effective_group', level', consumed_modifiers'')

-- method Keymap::get_default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Keymap"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_default" gdk_keymap_get_default :: 
    IO (Ptr Keymap)


keymapGetDefault ::
    (MonadIO m) =>
    m Keymap
keymapGetDefault  = liftIO $ do
    result <- gdk_keymap_get_default
    result' <- (newObject Keymap) result
    return result'

-- method Keymap::get_for_display
-- method type : MemberFunction
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Keymap"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keymap_get_for_display" gdk_keymap_get_for_display :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    IO (Ptr Keymap)


keymapGetForDisplay ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- display
    m Keymap
keymapGetForDisplay display = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    result <- gdk_keymap_get_for_display display'
    result' <- (newObject Keymap) result
    touchManagedPtr display
    return result'

-- signal Keymap::direction-changed
type KeymapDirectionChangedCallback =
    IO ()

noKeymapDirectionChangedCallback :: Maybe KeymapDirectionChangedCallback
noKeymapDirectionChangedCallback = Nothing

type KeymapDirectionChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkKeymapDirectionChangedCallback :: KeymapDirectionChangedCallbackC -> IO (FunPtr KeymapDirectionChangedCallbackC)

keymapDirectionChangedClosure :: KeymapDirectionChangedCallback -> IO Closure
keymapDirectionChangedClosure cb = newCClosure =<< mkKeymapDirectionChangedCallback wrapped
    where wrapped = keymapDirectionChangedCallbackWrapper cb

keymapDirectionChangedCallbackWrapper ::
    KeymapDirectionChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
keymapDirectionChangedCallbackWrapper _cb _ _ = do
    _cb 

onKeymapDirectionChanged :: (GObject a, MonadIO m) => a -> KeymapDirectionChangedCallback -> m SignalHandlerId
onKeymapDirectionChanged obj cb = liftIO $ connectKeymapDirectionChanged obj cb SignalConnectBefore
afterKeymapDirectionChanged :: (GObject a, MonadIO m) => a -> KeymapDirectionChangedCallback -> m SignalHandlerId
afterKeymapDirectionChanged obj cb = connectKeymapDirectionChanged obj cb SignalConnectAfter

connectKeymapDirectionChanged :: (GObject a, MonadIO m) =>
                                 a -> KeymapDirectionChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectKeymapDirectionChanged obj cb after = liftIO $ do
    cb' <- mkKeymapDirectionChangedCallback (keymapDirectionChangedCallbackWrapper cb)
    connectSignalFunPtr obj "direction-changed" cb' after

-- signal Keymap::keys-changed
type KeymapKeysChangedCallback =
    IO ()

noKeymapKeysChangedCallback :: Maybe KeymapKeysChangedCallback
noKeymapKeysChangedCallback = Nothing

type KeymapKeysChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkKeymapKeysChangedCallback :: KeymapKeysChangedCallbackC -> IO (FunPtr KeymapKeysChangedCallbackC)

keymapKeysChangedClosure :: KeymapKeysChangedCallback -> IO Closure
keymapKeysChangedClosure cb = newCClosure =<< mkKeymapKeysChangedCallback wrapped
    where wrapped = keymapKeysChangedCallbackWrapper cb

keymapKeysChangedCallbackWrapper ::
    KeymapKeysChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
keymapKeysChangedCallbackWrapper _cb _ _ = do
    _cb 

onKeymapKeysChanged :: (GObject a, MonadIO m) => a -> KeymapKeysChangedCallback -> m SignalHandlerId
onKeymapKeysChanged obj cb = liftIO $ connectKeymapKeysChanged obj cb SignalConnectBefore
afterKeymapKeysChanged :: (GObject a, MonadIO m) => a -> KeymapKeysChangedCallback -> m SignalHandlerId
afterKeymapKeysChanged obj cb = connectKeymapKeysChanged obj cb SignalConnectAfter

connectKeymapKeysChanged :: (GObject a, MonadIO m) =>
                            a -> KeymapKeysChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectKeymapKeysChanged obj cb after = liftIO $ do
    cb' <- mkKeymapKeysChangedCallback (keymapKeysChangedCallbackWrapper cb)
    connectSignalFunPtr obj "keys-changed" cb' after

-- signal Keymap::state-changed
type KeymapStateChangedCallback =
    IO ()

noKeymapStateChangedCallback :: Maybe KeymapStateChangedCallback
noKeymapStateChangedCallback = Nothing

type KeymapStateChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkKeymapStateChangedCallback :: KeymapStateChangedCallbackC -> IO (FunPtr KeymapStateChangedCallbackC)

keymapStateChangedClosure :: KeymapStateChangedCallback -> IO Closure
keymapStateChangedClosure cb = newCClosure =<< mkKeymapStateChangedCallback wrapped
    where wrapped = keymapStateChangedCallbackWrapper cb

keymapStateChangedCallbackWrapper ::
    KeymapStateChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
keymapStateChangedCallbackWrapper _cb _ _ = do
    _cb 

onKeymapStateChanged :: (GObject a, MonadIO m) => a -> KeymapStateChangedCallback -> m SignalHandlerId
onKeymapStateChanged obj cb = liftIO $ connectKeymapStateChanged obj cb SignalConnectBefore
afterKeymapStateChanged :: (GObject a, MonadIO m) => a -> KeymapStateChangedCallback -> m SignalHandlerId
afterKeymapStateChanged obj cb = connectKeymapStateChanged obj cb SignalConnectAfter

connectKeymapStateChanged :: (GObject a, MonadIO m) =>
                             a -> KeymapStateChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectKeymapStateChanged obj cb after = liftIO $ do
    cb' <- mkKeymapStateChangedCallback (keymapStateChangedCallbackWrapper cb)
    connectSignalFunPtr obj "state-changed" cb' after

-- struct KeymapKey
newtype KeymapKey = KeymapKey (ForeignPtr KeymapKey)
noKeymapKey :: Maybe KeymapKey
noKeymapKey = Nothing

keymapKeyReadKeycode :: KeymapKey -> IO Word32
keymapKeyReadKeycode s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Word32
    return val

keymapKeyReadGroup :: KeymapKey -> IO Int32
keymapKeyReadGroup s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO Int32
    return val

keymapKeyReadLevel :: KeymapKey -> IO Int32
keymapKeyReadLevel s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Int32
    return val

-- Enum ModifierIntent

data ModifierIntent = 
      ModifierIntentPrimaryAccelerator
    | ModifierIntentContextMenu
    | ModifierIntentExtendSelection
    | ModifierIntentModifySelection
    | ModifierIntentNoTextInput
    | ModifierIntentShiftGroup
    | AnotherModifierIntent Int
    deriving (Show, Eq)

instance Enum ModifierIntent where
    fromEnum ModifierIntentPrimaryAccelerator = 0
    fromEnum ModifierIntentContextMenu = 1
    fromEnum ModifierIntentExtendSelection = 2
    fromEnum ModifierIntentModifySelection = 3
    fromEnum ModifierIntentNoTextInput = 4
    fromEnum ModifierIntentShiftGroup = 5
    fromEnum (AnotherModifierIntent k) = k

    toEnum 0 = ModifierIntentPrimaryAccelerator
    toEnum 1 = ModifierIntentContextMenu
    toEnum 2 = ModifierIntentExtendSelection
    toEnum 3 = ModifierIntentModifySelection
    toEnum 4 = ModifierIntentNoTextInput
    toEnum 5 = ModifierIntentShiftGroup
    toEnum k = AnotherModifierIntent k

foreign import ccall "gdk_modifier_intent_get_type" c_gdk_modifier_intent_get_type :: 
    IO GType

instance BoxedEnum ModifierIntent where
    boxedEnumType _ = c_gdk_modifier_intent_get_type

-- Flags ModifierType

data ModifierType = 
      ModifierTypeShiftMask
    | ModifierTypeLockMask
    | ModifierTypeControlMask
    | ModifierTypeMod1Mask
    | ModifierTypeMod2Mask
    | ModifierTypeMod3Mask
    | ModifierTypeMod4Mask
    | ModifierTypeMod5Mask
    | ModifierTypeButton1Mask
    | ModifierTypeButton2Mask
    | ModifierTypeButton3Mask
    | ModifierTypeButton4Mask
    | ModifierTypeButton5Mask
    | ModifierTypeModifierReserved13Mask
    | ModifierTypeModifierReserved14Mask
    | ModifierTypeModifierReserved15Mask
    | ModifierTypeModifierReserved16Mask
    | ModifierTypeModifierReserved17Mask
    | ModifierTypeModifierReserved18Mask
    | ModifierTypeModifierReserved19Mask
    | ModifierTypeModifierReserved20Mask
    | ModifierTypeModifierReserved21Mask
    | ModifierTypeModifierReserved22Mask
    | ModifierTypeModifierReserved23Mask
    | ModifierTypeModifierReserved24Mask
    | ModifierTypeModifierReserved25Mask
    | ModifierTypeSuperMask
    | ModifierTypeHyperMask
    | ModifierTypeMetaMask
    | ModifierTypeModifierReserved29Mask
    | ModifierTypeReleaseMask
    | ModifierTypeModifierMask
    | AnotherModifierType Int
    deriving (Show, Eq)

instance Enum ModifierType where
    fromEnum ModifierTypeShiftMask = 1
    fromEnum ModifierTypeLockMask = 2
    fromEnum ModifierTypeControlMask = 4
    fromEnum ModifierTypeMod1Mask = 8
    fromEnum ModifierTypeMod2Mask = 16
    fromEnum ModifierTypeMod3Mask = 32
    fromEnum ModifierTypeMod4Mask = 64
    fromEnum ModifierTypeMod5Mask = 128
    fromEnum ModifierTypeButton1Mask = 256
    fromEnum ModifierTypeButton2Mask = 512
    fromEnum ModifierTypeButton3Mask = 1024
    fromEnum ModifierTypeButton4Mask = 2048
    fromEnum ModifierTypeButton5Mask = 4096
    fromEnum ModifierTypeModifierReserved13Mask = 8192
    fromEnum ModifierTypeModifierReserved14Mask = 16384
    fromEnum ModifierTypeModifierReserved15Mask = 32768
    fromEnum ModifierTypeModifierReserved16Mask = 65536
    fromEnum ModifierTypeModifierReserved17Mask = 131072
    fromEnum ModifierTypeModifierReserved18Mask = 262144
    fromEnum ModifierTypeModifierReserved19Mask = 524288
    fromEnum ModifierTypeModifierReserved20Mask = 1048576
    fromEnum ModifierTypeModifierReserved21Mask = 2097152
    fromEnum ModifierTypeModifierReserved22Mask = 4194304
    fromEnum ModifierTypeModifierReserved23Mask = 8388608
    fromEnum ModifierTypeModifierReserved24Mask = 16777216
    fromEnum ModifierTypeModifierReserved25Mask = 33554432
    fromEnum ModifierTypeSuperMask = 67108864
    fromEnum ModifierTypeHyperMask = 134217728
    fromEnum ModifierTypeMetaMask = 268435456
    fromEnum ModifierTypeModifierReserved29Mask = 536870912
    fromEnum ModifierTypeReleaseMask = 1073741824
    fromEnum ModifierTypeModifierMask = 1543512063
    fromEnum (AnotherModifierType k) = k

    toEnum 1 = ModifierTypeShiftMask
    toEnum 2 = ModifierTypeLockMask
    toEnum 4 = ModifierTypeControlMask
    toEnum 8 = ModifierTypeMod1Mask
    toEnum 16 = ModifierTypeMod2Mask
    toEnum 32 = ModifierTypeMod3Mask
    toEnum 64 = ModifierTypeMod4Mask
    toEnum 128 = ModifierTypeMod5Mask
    toEnum 256 = ModifierTypeButton1Mask
    toEnum 512 = ModifierTypeButton2Mask
    toEnum 1024 = ModifierTypeButton3Mask
    toEnum 2048 = ModifierTypeButton4Mask
    toEnum 4096 = ModifierTypeButton5Mask
    toEnum 8192 = ModifierTypeModifierReserved13Mask
    toEnum 16384 = ModifierTypeModifierReserved14Mask
    toEnum 32768 = ModifierTypeModifierReserved15Mask
    toEnum 65536 = ModifierTypeModifierReserved16Mask
    toEnum 131072 = ModifierTypeModifierReserved17Mask
    toEnum 262144 = ModifierTypeModifierReserved18Mask
    toEnum 524288 = ModifierTypeModifierReserved19Mask
    toEnum 1048576 = ModifierTypeModifierReserved20Mask
    toEnum 2097152 = ModifierTypeModifierReserved21Mask
    toEnum 4194304 = ModifierTypeModifierReserved22Mask
    toEnum 8388608 = ModifierTypeModifierReserved23Mask
    toEnum 16777216 = ModifierTypeModifierReserved24Mask
    toEnum 33554432 = ModifierTypeModifierReserved25Mask
    toEnum 67108864 = ModifierTypeSuperMask
    toEnum 134217728 = ModifierTypeHyperMask
    toEnum 268435456 = ModifierTypeMetaMask
    toEnum 536870912 = ModifierTypeModifierReserved29Mask
    toEnum 1073741824 = ModifierTypeReleaseMask
    toEnum 1543512063 = ModifierTypeModifierMask
    toEnum k = AnotherModifierType k

foreign import ccall "gdk_modifier_type_get_type" c_gdk_modifier_type_get_type :: 
    IO GType

instance BoxedEnum ModifierType where
    boxedEnumType _ = c_gdk_modifier_type_get_type

instance IsGFlag ModifierType

-- Enum NotifyType

data NotifyType = 
      NotifyTypeAncestor
    | NotifyTypeVirtual
    | NotifyTypeInferior
    | NotifyTypeNonlinear
    | NotifyTypeNonlinearVirtual
    | NotifyTypeUnknown
    | AnotherNotifyType Int
    deriving (Show, Eq)

instance Enum NotifyType where
    fromEnum NotifyTypeAncestor = 0
    fromEnum NotifyTypeVirtual = 1
    fromEnum NotifyTypeInferior = 2
    fromEnum NotifyTypeNonlinear = 3
    fromEnum NotifyTypeNonlinearVirtual = 4
    fromEnum NotifyTypeUnknown = 5
    fromEnum (AnotherNotifyType k) = k

    toEnum 0 = NotifyTypeAncestor
    toEnum 1 = NotifyTypeVirtual
    toEnum 2 = NotifyTypeInferior
    toEnum 3 = NotifyTypeNonlinear
    toEnum 4 = NotifyTypeNonlinearVirtual
    toEnum 5 = NotifyTypeUnknown
    toEnum k = AnotherNotifyType k

foreign import ccall "gdk_notify_type_get_type" c_gdk_notify_type_get_type :: 
    IO GType

instance BoxedEnum NotifyType where
    boxedEnumType _ = c_gdk_notify_type_get_type

-- Enum OwnerChange

data OwnerChange = 
      OwnerChangeNewOwner
    | OwnerChangeDestroy
    | OwnerChangeClose
    | AnotherOwnerChange Int
    deriving (Show, Eq)

instance Enum OwnerChange where
    fromEnum OwnerChangeNewOwner = 0
    fromEnum OwnerChangeDestroy = 1
    fromEnum OwnerChangeClose = 2
    fromEnum (AnotherOwnerChange k) = k

    toEnum 0 = OwnerChangeNewOwner
    toEnum 1 = OwnerChangeDestroy
    toEnum 2 = OwnerChangeClose
    toEnum k = AnotherOwnerChange k

foreign import ccall "gdk_owner_change_get_type" c_gdk_owner_change_get_type :: 
    IO GType

instance BoxedEnum OwnerChange where
    boxedEnumType _ = c_gdk_owner_change_get_type

-- struct Point
newtype Point = Point (ForeignPtr Point)
noPoint :: Maybe Point
noPoint = Nothing

pointReadX :: Point -> IO Int32
pointReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Int32
    return val

pointReadY :: Point -> IO Int32
pointReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO Int32
    return val

-- Enum PropMode

data PropMode = 
      PropModeReplace
    | PropModePrepend
    | PropModeAppend
    | AnotherPropMode Int
    deriving (Show, Eq)

instance Enum PropMode where
    fromEnum PropModeReplace = 0
    fromEnum PropModePrepend = 1
    fromEnum PropModeAppend = 2
    fromEnum (AnotherPropMode k) = k

    toEnum 0 = PropModeReplace
    toEnum 1 = PropModePrepend
    toEnum 2 = PropModeAppend
    toEnum k = AnotherPropMode k

foreign import ccall "gdk_prop_mode_get_type" c_gdk_prop_mode_get_type :: 
    IO GType

instance BoxedEnum PropMode where
    boxedEnumType _ = c_gdk_prop_mode_get_type

-- Enum PropertyState

data PropertyState = 
      PropertyStateNewValue
    | PropertyStateDelete
    | AnotherPropertyState Int
    deriving (Show, Eq)

instance Enum PropertyState where
    fromEnum PropertyStateNewValue = 0
    fromEnum PropertyStateDelete = 1
    fromEnum (AnotherPropertyState k) = k

    toEnum 0 = PropertyStateNewValue
    toEnum 1 = PropertyStateDelete
    toEnum k = AnotherPropertyState k

foreign import ccall "gdk_property_state_get_type" c_gdk_property_state_get_type :: 
    IO GType

instance BoxedEnum PropertyState where
    boxedEnumType _ = c_gdk_property_state_get_type

-- struct RGBA
newtype RGBA = RGBA (ForeignPtr RGBA)
noRGBA :: Maybe RGBA
noRGBA = Nothing

foreign import ccall "gdk_rgba_get_type" c_gdk_rgba_get_type :: 
    IO GType

instance BoxedObject RGBA where
    boxedType _ = c_gdk_rgba_get_type

rGBAReadRed :: RGBA -> IO Double
rGBAReadRed s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CDouble
    let val' = realToFrac val
    return val'

rGBAReadGreen :: RGBA -> IO Double
rGBAReadGreen s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CDouble
    let val' = realToFrac val
    return val'

rGBAReadBlue :: RGBA -> IO Double
rGBAReadBlue s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO CDouble
    let val' = realToFrac val
    return val'

rGBAReadAlpha :: RGBA -> IO Double
rGBAReadAlpha s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

-- method RGBA::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "RGBA"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rgba_copy" gdk_rgba_copy :: 
    Ptr RGBA ->                             -- _obj : TInterface "Gdk" "RGBA"
    IO (Ptr RGBA)


rGBACopy ::
    (MonadIO m) =>
    RGBA ->                                 -- _obj
    m RGBA
rGBACopy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_rgba_copy _obj'
    result' <- (wrapBoxed RGBA) result
    touchManagedPtr _obj
    return result'

-- method RGBA::equal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "p2", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "p2", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rgba_equal" gdk_rgba_equal :: 
    Ptr RGBA ->                             -- _obj : TInterface "Gdk" "RGBA"
    Ptr RGBA ->                             -- p2 : TInterface "Gdk" "RGBA"
    IO CInt


rGBAEqual ::
    (MonadIO m) =>
    RGBA ->                                 -- _obj
    RGBA ->                                 -- p2
    m Bool
rGBAEqual _obj p2 = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let p2' = unsafeManagedPtrGetPtr p2
    result <- gdk_rgba_equal _obj' p2'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr p2
    return result'

-- method RGBA::free
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rgba_free" gdk_rgba_free :: 
    Ptr RGBA ->                             -- _obj : TInterface "Gdk" "RGBA"
    IO ()


rGBAFree ::
    (MonadIO m) =>
    RGBA ->                                 -- _obj
    m ()
rGBAFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gdk_rgba_free _obj'
    touchManagedPtr _obj
    return ()

-- method RGBA::hash
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rgba_hash" gdk_rgba_hash :: 
    Ptr RGBA ->                             -- _obj : TInterface "Gdk" "RGBA"
    IO Word32


rGBAHash ::
    (MonadIO m) =>
    RGBA ->                                 -- _obj
    m Word32
rGBAHash _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_rgba_hash _obj'
    touchManagedPtr _obj
    return result

-- method RGBA::parse
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rgba_parse" gdk_rgba_parse :: 
    Ptr RGBA ->                             -- _obj : TInterface "Gdk" "RGBA"
    CString ->                              -- spec : TBasicType TUTF8
    IO CInt


rGBAParse ::
    (MonadIO m) =>
    RGBA ->                                 -- _obj
    T.Text ->                               -- spec
    m Bool
rGBAParse _obj spec = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    spec' <- textToCString spec
    result <- gdk_rgba_parse _obj' spec'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem spec'
    return result'

-- method RGBA::to_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rgba_to_string" gdk_rgba_to_string :: 
    Ptr RGBA ->                             -- _obj : TInterface "Gdk" "RGBA"
    IO CString


rGBAToString ::
    (MonadIO m) =>
    RGBA ->                                 -- _obj
    m T.Text
rGBAToString _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gdk_rgba_to_string _obj'
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- object Screen 
newtype Screen = Screen (ForeignPtr Screen)
noScreen :: Maybe Screen
noScreen = Nothing

foreign import ccall "gdk_screen_get_type"
    c_gdk_screen_get_type :: IO GType

type instance ParentTypes Screen = '[GObject.Object]

instance GObject Screen where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_screen_get_type
    

class GObject o => ScreenK o
instance (GObject o, IsDescendantOf Screen o) => ScreenK o

toScreen :: ScreenK o => o -> IO Screen
toScreen = unsafeCastTo Screen

-- method Screen::get_active_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_active_window" gdk_screen_get_active_window :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr Window)


screenGetActiveWindow ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Window
screenGetActiveWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_active_window _obj'
    result' <- (wrapObject Window) result
    touchManagedPtr _obj
    return result'

-- method Screen::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_display" gdk_screen_get_display :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr Display)


screenGetDisplay ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Display
screenGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method Screen::get_font_options
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "FontOptions"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_font_options" gdk_screen_get_font_options :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr Cairo.FontOptions)


screenGetFontOptions ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Cairo.FontOptions
screenGetFontOptions _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_font_options _obj'
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- (\x -> Cairo.FontOptions <$> newForeignPtr_ x) result
    touchManagedPtr _obj
    return result'

-- method Screen::get_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_height" gdk_screen_get_height :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetHeight ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetHeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_height _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_height_mm
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_height_mm" gdk_screen_get_height_mm :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetHeightMm ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetHeightMm _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_height_mm _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_monitor_at_point
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_at_point" gdk_screen_get_monitor_at_point :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO Int32


screenGetMonitorAtPoint ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- x
    Int32 ->                                -- y
    m Int32
screenGetMonitorAtPoint _obj x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_monitor_at_point _obj' x y
    touchManagedPtr _obj
    return result

-- method Screen::get_monitor_at_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_at_window" gdk_screen_get_monitor_at_window :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    IO Int32


screenGetMonitorAtWindow ::
    (MonadIO m, ScreenK a, WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- window
    m Int32
screenGetMonitorAtWindow _obj window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let window' = unsafeManagedPtrCastPtr window
    result <- gdk_screen_get_monitor_at_window _obj' window'
    touchManagedPtr _obj
    touchManagedPtr window
    return result

-- method Screen::get_monitor_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_geometry" gdk_screen_get_monitor_geometry :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- monitor_num : TBasicType TInt32
    Ptr Cairo.RectangleInt ->               -- dest : TInterface "cairo" "RectangleInt"
    IO ()


screenGetMonitorGeometry ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- monitor_num
    m (Cairo.RectangleInt)
screenGetMonitorGeometry _obj monitor_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    dest <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    gdk_screen_get_monitor_geometry _obj' monitor_num dest
    dest' <- (wrapBoxed Cairo.RectangleInt) dest
    touchManagedPtr _obj
    return dest'

-- method Screen::get_monitor_height_mm
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_height_mm" gdk_screen_get_monitor_height_mm :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- monitor_num : TBasicType TInt32
    IO Int32


screenGetMonitorHeightMm ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- monitor_num
    m Int32
screenGetMonitorHeightMm _obj monitor_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_monitor_height_mm _obj' monitor_num
    touchManagedPtr _obj
    return result

-- method Screen::get_monitor_plug_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_plug_name" gdk_screen_get_monitor_plug_name :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- monitor_num : TBasicType TInt32
    IO CString


screenGetMonitorPlugName ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- monitor_num
    m T.Text
screenGetMonitorPlugName _obj monitor_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_monitor_plug_name _obj' monitor_num
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method Screen::get_monitor_scale_factor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_scale_factor" gdk_screen_get_monitor_scale_factor :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- monitor_num : TBasicType TInt32
    IO Int32


screenGetMonitorScaleFactor ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- monitor_num
    m Int32
screenGetMonitorScaleFactor _obj monitor_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_monitor_scale_factor _obj' monitor_num
    touchManagedPtr _obj
    return result

-- method Screen::get_monitor_width_mm
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_width_mm" gdk_screen_get_monitor_width_mm :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- monitor_num : TBasicType TInt32
    IO Int32


screenGetMonitorWidthMm ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- monitor_num
    m Int32
screenGetMonitorWidthMm _obj monitor_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_monitor_width_mm _obj' monitor_num
    touchManagedPtr _obj
    return result

-- method Screen::get_monitor_workarea
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "monitor_num", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_monitor_workarea" gdk_screen_get_monitor_workarea :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Int32 ->                                -- monitor_num : TBasicType TInt32
    Ptr Cairo.RectangleInt ->               -- dest : TInterface "cairo" "RectangleInt"
    IO ()


screenGetMonitorWorkarea ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- monitor_num
    m (Cairo.RectangleInt)
screenGetMonitorWorkarea _obj monitor_num = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    dest <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    gdk_screen_get_monitor_workarea _obj' monitor_num dest
    dest' <- (wrapBoxed Cairo.RectangleInt) dest
    touchManagedPtr _obj
    return dest'

-- method Screen::get_n_monitors
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_n_monitors" gdk_screen_get_n_monitors :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetNMonitors ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetNMonitors _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_n_monitors _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_number
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_number" gdk_screen_get_number :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetNumber ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetNumber _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_number _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_primary_monitor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_primary_monitor" gdk_screen_get_primary_monitor :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetPrimaryMonitor ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetPrimaryMonitor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_primary_monitor _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_resolution
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TDouble
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_resolution" gdk_screen_get_resolution :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO CDouble


screenGetResolution ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Double
screenGetResolution _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_resolution _obj'
    let result' = realToFrac result
    touchManagedPtr _obj
    return result'

-- method Screen::get_rgba_visual
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_rgba_visual" gdk_screen_get_rgba_visual :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr Visual)


screenGetRgbaVisual ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Visual
screenGetRgbaVisual _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_rgba_visual _obj'
    result' <- (newObject Visual) result
    touchManagedPtr _obj
    return result'

-- method Screen::get_root_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_root_window" gdk_screen_get_root_window :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr Window)


screenGetRootWindow ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Window
screenGetRootWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_root_window _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Screen::get_setting
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_setting" gdk_screen_get_setting :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    CString ->                              -- name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO CInt


screenGetSetting ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    GValue ->                               -- value
    m Bool
screenGetSetting _obj name value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    let value' = unsafeManagedPtrGetPtr value
    result <- gdk_screen_get_setting _obj' name' value'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr value
    freeMem name'
    return result'

-- method Screen::get_system_visual
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_system_visual" gdk_screen_get_system_visual :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr Visual)


screenGetSystemVisual ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Visual
screenGetSystemVisual _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_system_visual _obj'
    result' <- (newObject Visual) result
    touchManagedPtr _obj
    return result'

-- method Screen::get_toplevel_windows
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Window")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_toplevel_windows" gdk_screen_get_toplevel_windows :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr (GList (Ptr Window)))


screenGetToplevelWindows ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m [Window]
screenGetToplevelWindows _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_toplevel_windows _obj'
    result' <- unpackGList result
    result'' <- mapM (newObject Window) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Screen::get_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_width" gdk_screen_get_width :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetWidth ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetWidth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_width _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_width_mm
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_width_mm" gdk_screen_get_width_mm :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO Int32


screenGetWidthMm ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Int32
screenGetWidthMm _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_width_mm _obj'
    touchManagedPtr _obj
    return result

-- method Screen::get_window_stack
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Window")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_window_stack" gdk_screen_get_window_stack :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr (GList (Ptr Window)))


screenGetWindowStack ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m [Window]
screenGetWindowStack _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_get_window_stack _obj'
    result' <- unpackGList result
    result'' <- mapM (wrapObject Window) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Screen::is_composited
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_is_composited" gdk_screen_is_composited :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO CInt


screenIsComposited ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m Bool
screenIsComposited _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_is_composited _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Screen::list_visuals
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Visual")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_list_visuals" gdk_screen_list_visuals :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO (Ptr (GList (Ptr Visual)))


screenListVisuals ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m [Visual]
screenListVisuals _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_list_visuals _obj'
    result' <- unpackGList result
    result'' <- mapM (newObject Visual) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Screen::make_display_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_make_display_name" gdk_screen_make_display_name :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    IO CString


screenMakeDisplayName ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    m T.Text
screenMakeDisplayName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_screen_make_display_name _obj'
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method Screen::set_font_options
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "options", argType = TInterface "cairo" "FontOptions", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "options", argType = TInterface "cairo" "FontOptions", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_set_font_options" gdk_screen_set_font_options :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    Ptr Cairo.FontOptions ->                -- options : TInterface "cairo" "FontOptions"
    IO ()


screenSetFontOptions ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.FontOptions) ->            -- options
    m ()
screenSetFontOptions _obj options = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeOptions <- case options of
        Nothing -> return nullPtr
        Just jOptions -> do
            let jOptions' = unsafeManagedPtrGetPtr jOptions
            return jOptions'
    gdk_screen_set_font_options _obj' maybeOptions
    touchManagedPtr _obj
    whenJust options touchManagedPtr
    return ()

-- method Screen::set_resolution
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dpi", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dpi", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_set_resolution" gdk_screen_set_resolution :: 
    Ptr Screen ->                           -- _obj : TInterface "Gdk" "Screen"
    CDouble ->                              -- dpi : TBasicType TDouble
    IO ()


screenSetResolution ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- _obj
    Double ->                               -- dpi
    m ()
screenSetResolution _obj dpi = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let dpi' = realToFrac dpi
    gdk_screen_set_resolution _obj' dpi'
    touchManagedPtr _obj
    return ()

-- method Screen::get_default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_get_default" gdk_screen_get_default :: 
    IO (Ptr Screen)


screenGetDefault ::
    (MonadIO m) =>
    m Screen
screenGetDefault  = liftIO $ do
    result <- gdk_screen_get_default
    result' <- (newObject Screen) result
    return result'

-- method Screen::height
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_height" gdk_screen_height :: 
    IO Int32


screenHeight ::
    (MonadIO m) =>
    m Int32
screenHeight  = liftIO $ do
    result <- gdk_screen_height
    return result

-- method Screen::height_mm
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_height_mm" gdk_screen_height_mm :: 
    IO Int32


screenHeightMm ::
    (MonadIO m) =>
    m Int32
screenHeightMm  = liftIO $ do
    result <- gdk_screen_height_mm
    return result

-- method Screen::width
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_width" gdk_screen_width :: 
    IO Int32


screenWidth ::
    (MonadIO m) =>
    m Int32
screenWidth  = liftIO $ do
    result <- gdk_screen_width
    return result

-- method Screen::width_mm
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_screen_width_mm" gdk_screen_width_mm :: 
    IO Int32


screenWidthMm ::
    (MonadIO m) =>
    m Int32
screenWidthMm  = liftIO $ do
    result <- gdk_screen_width_mm
    return result

-- signal Screen::composited-changed
type ScreenCompositedChangedCallback =
    IO ()

noScreenCompositedChangedCallback :: Maybe ScreenCompositedChangedCallback
noScreenCompositedChangedCallback = Nothing

type ScreenCompositedChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkScreenCompositedChangedCallback :: ScreenCompositedChangedCallbackC -> IO (FunPtr ScreenCompositedChangedCallbackC)

screenCompositedChangedClosure :: ScreenCompositedChangedCallback -> IO Closure
screenCompositedChangedClosure cb = newCClosure =<< mkScreenCompositedChangedCallback wrapped
    where wrapped = screenCompositedChangedCallbackWrapper cb

screenCompositedChangedCallbackWrapper ::
    ScreenCompositedChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
screenCompositedChangedCallbackWrapper _cb _ _ = do
    _cb 

onScreenCompositedChanged :: (GObject a, MonadIO m) => a -> ScreenCompositedChangedCallback -> m SignalHandlerId
onScreenCompositedChanged obj cb = liftIO $ connectScreenCompositedChanged obj cb SignalConnectBefore
afterScreenCompositedChanged :: (GObject a, MonadIO m) => a -> ScreenCompositedChangedCallback -> m SignalHandlerId
afterScreenCompositedChanged obj cb = connectScreenCompositedChanged obj cb SignalConnectAfter

connectScreenCompositedChanged :: (GObject a, MonadIO m) =>
                                  a -> ScreenCompositedChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectScreenCompositedChanged obj cb after = liftIO $ do
    cb' <- mkScreenCompositedChangedCallback (screenCompositedChangedCallbackWrapper cb)
    connectSignalFunPtr obj "composited-changed" cb' after

-- signal Screen::monitors-changed
type ScreenMonitorsChangedCallback =
    IO ()

noScreenMonitorsChangedCallback :: Maybe ScreenMonitorsChangedCallback
noScreenMonitorsChangedCallback = Nothing

type ScreenMonitorsChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkScreenMonitorsChangedCallback :: ScreenMonitorsChangedCallbackC -> IO (FunPtr ScreenMonitorsChangedCallbackC)

screenMonitorsChangedClosure :: ScreenMonitorsChangedCallback -> IO Closure
screenMonitorsChangedClosure cb = newCClosure =<< mkScreenMonitorsChangedCallback wrapped
    where wrapped = screenMonitorsChangedCallbackWrapper cb

screenMonitorsChangedCallbackWrapper ::
    ScreenMonitorsChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
screenMonitorsChangedCallbackWrapper _cb _ _ = do
    _cb 

onScreenMonitorsChanged :: (GObject a, MonadIO m) => a -> ScreenMonitorsChangedCallback -> m SignalHandlerId
onScreenMonitorsChanged obj cb = liftIO $ connectScreenMonitorsChanged obj cb SignalConnectBefore
afterScreenMonitorsChanged :: (GObject a, MonadIO m) => a -> ScreenMonitorsChangedCallback -> m SignalHandlerId
afterScreenMonitorsChanged obj cb = connectScreenMonitorsChanged obj cb SignalConnectAfter

connectScreenMonitorsChanged :: (GObject a, MonadIO m) =>
                                a -> ScreenMonitorsChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectScreenMonitorsChanged obj cb after = liftIO $ do
    cb' <- mkScreenMonitorsChangedCallback (screenMonitorsChangedCallbackWrapper cb)
    connectSignalFunPtr obj "monitors-changed" cb' after

-- signal Screen::size-changed
type ScreenSizeChangedCallback =
    IO ()

noScreenSizeChangedCallback :: Maybe ScreenSizeChangedCallback
noScreenSizeChangedCallback = Nothing

type ScreenSizeChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkScreenSizeChangedCallback :: ScreenSizeChangedCallbackC -> IO (FunPtr ScreenSizeChangedCallbackC)

screenSizeChangedClosure :: ScreenSizeChangedCallback -> IO Closure
screenSizeChangedClosure cb = newCClosure =<< mkScreenSizeChangedCallback wrapped
    where wrapped = screenSizeChangedCallbackWrapper cb

screenSizeChangedCallbackWrapper ::
    ScreenSizeChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
screenSizeChangedCallbackWrapper _cb _ _ = do
    _cb 

onScreenSizeChanged :: (GObject a, MonadIO m) => a -> ScreenSizeChangedCallback -> m SignalHandlerId
onScreenSizeChanged obj cb = liftIO $ connectScreenSizeChanged obj cb SignalConnectBefore
afterScreenSizeChanged :: (GObject a, MonadIO m) => a -> ScreenSizeChangedCallback -> m SignalHandlerId
afterScreenSizeChanged obj cb = connectScreenSizeChanged obj cb SignalConnectAfter

connectScreenSizeChanged :: (GObject a, MonadIO m) =>
                            a -> ScreenSizeChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectScreenSizeChanged obj cb after = liftIO $ do
    cb' <- mkScreenSizeChangedCallback (screenSizeChangedCallbackWrapper cb)
    connectSignalFunPtr obj "size-changed" cb' after

-- Enum ScrollDirection

data ScrollDirection = 
      ScrollDirectionUp
    | ScrollDirectionDown
    | ScrollDirectionLeft
    | ScrollDirectionRight
    | ScrollDirectionSmooth
    | AnotherScrollDirection Int
    deriving (Show, Eq)

instance Enum ScrollDirection where
    fromEnum ScrollDirectionUp = 0
    fromEnum ScrollDirectionDown = 1
    fromEnum ScrollDirectionLeft = 2
    fromEnum ScrollDirectionRight = 3
    fromEnum ScrollDirectionSmooth = 4
    fromEnum (AnotherScrollDirection k) = k

    toEnum 0 = ScrollDirectionUp
    toEnum 1 = ScrollDirectionDown
    toEnum 2 = ScrollDirectionLeft
    toEnum 3 = ScrollDirectionRight
    toEnum 4 = ScrollDirectionSmooth
    toEnum k = AnotherScrollDirection k

foreign import ccall "gdk_scroll_direction_get_type" c_gdk_scroll_direction_get_type :: 
    IO GType

instance BoxedEnum ScrollDirection where
    boxedEnumType _ = c_gdk_scroll_direction_get_type

-- Enum SettingAction

data SettingAction = 
      SettingActionNew
    | SettingActionChanged
    | SettingActionDeleted
    | AnotherSettingAction Int
    deriving (Show, Eq)

instance Enum SettingAction where
    fromEnum SettingActionNew = 0
    fromEnum SettingActionChanged = 1
    fromEnum SettingActionDeleted = 2
    fromEnum (AnotherSettingAction k) = k

    toEnum 0 = SettingActionNew
    toEnum 1 = SettingActionChanged
    toEnum 2 = SettingActionDeleted
    toEnum k = AnotherSettingAction k

foreign import ccall "gdk_setting_action_get_type" c_gdk_setting_action_get_type :: 
    IO GType

instance BoxedEnum SettingAction where
    boxedEnumType _ = c_gdk_setting_action_get_type

-- Enum Status

data Status = 
      StatusOk
    | StatusError
    | StatusErrorParam
    | StatusErrorFile
    | StatusErrorMem
    | AnotherStatus Int
    deriving (Show, Eq)

instance Enum Status where
    fromEnum StatusOk = 0
    fromEnum StatusError = -1
    fromEnum StatusErrorParam = -2
    fromEnum StatusErrorFile = -3
    fromEnum StatusErrorMem = -4
    fromEnum (AnotherStatus k) = k

    toEnum -4 = StatusErrorMem
    toEnum -3 = StatusErrorFile
    toEnum -2 = StatusErrorParam
    toEnum -1 = StatusError
    toEnum 0 = StatusOk
    toEnum k = AnotherStatus k

foreign import ccall "gdk_status_get_type" c_gdk_status_get_type :: 
    IO GType

instance BoxedEnum Status where
    boxedEnumType _ = c_gdk_status_get_type

-- struct TimeCoord
newtype TimeCoord = TimeCoord (ForeignPtr TimeCoord)
noTimeCoord :: Maybe TimeCoord
noTimeCoord = Nothing

timeCoordReadTime :: TimeCoord -> IO Word32
timeCoordReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Word32
    return val

-- XXX Skipped getter for "TimeCoord:axes" :: Not implemented: "Don't know how to unpack C array of type TCArray False 128 (-1) (TBasicType TDouble)"

-- Enum VisibilityState

data VisibilityState = 
      VisibilityStateUnobscured
    | VisibilityStatePartial
    | VisibilityStateFullyObscured
    | AnotherVisibilityState Int
    deriving (Show, Eq)

instance Enum VisibilityState where
    fromEnum VisibilityStateUnobscured = 0
    fromEnum VisibilityStatePartial = 1
    fromEnum VisibilityStateFullyObscured = 2
    fromEnum (AnotherVisibilityState k) = k

    toEnum 0 = VisibilityStateUnobscured
    toEnum 1 = VisibilityStatePartial
    toEnum 2 = VisibilityStateFullyObscured
    toEnum k = AnotherVisibilityState k

foreign import ccall "gdk_visibility_state_get_type" c_gdk_visibility_state_get_type :: 
    IO GType

instance BoxedEnum VisibilityState where
    boxedEnumType _ = c_gdk_visibility_state_get_type

-- object Visual 
newtype Visual = Visual (ForeignPtr Visual)
noVisual :: Maybe Visual
noVisual = Nothing

foreign import ccall "gdk_visual_get_type"
    c_gdk_visual_get_type :: IO GType

type instance ParentTypes Visual = '[GObject.Object]

instance GObject Visual where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_visual_get_type
    

class GObject o => VisualK o
instance (GObject o, IsDescendantOf Visual o) => VisualK o

toVisual :: VisualK o => o -> IO Visual
toVisual = unsafeCastTo Visual

-- method Visual::get_bits_per_rgb
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_bits_per_rgb" gdk_visual_get_bits_per_rgb :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    IO Int32


visualGetBitsPerRgb ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m Int32
visualGetBitsPerRgb _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_visual_get_bits_per_rgb _obj'
    touchManagedPtr _obj
    return result

-- method Visual::get_blue_pixel_details
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "shift", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "precision", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_blue_pixel_details" gdk_visual_get_blue_pixel_details :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    Ptr Word32 ->                           -- mask : TBasicType TUInt32
    Ptr Int32 ->                            -- shift : TBasicType TInt32
    Ptr Int32 ->                            -- precision : TBasicType TInt32
    IO ()


visualGetBluePixelDetails ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m (Word32,Int32,Int32)
visualGetBluePixelDetails _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    mask <- allocMem :: IO (Ptr Word32)
    shift <- allocMem :: IO (Ptr Int32)
    precision <- allocMem :: IO (Ptr Int32)
    gdk_visual_get_blue_pixel_details _obj' mask shift precision
    mask' <- peek mask
    shift' <- peek shift
    precision' <- peek precision
    touchManagedPtr _obj
    freeMem mask
    freeMem shift
    freeMem precision
    return (mask', shift', precision')

-- method Visual::get_byte_order
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "ByteOrder"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_byte_order" gdk_visual_get_byte_order :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    IO CUInt


visualGetByteOrder ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m ByteOrder
visualGetByteOrder _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_visual_get_byte_order _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Visual::get_colormap_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_colormap_size" gdk_visual_get_colormap_size :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    IO Int32


visualGetColormapSize ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m Int32
visualGetColormapSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_visual_get_colormap_size _obj'
    touchManagedPtr _obj
    return result

-- method Visual::get_depth
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_depth" gdk_visual_get_depth :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    IO Int32


visualGetDepth ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m Int32
visualGetDepth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_visual_get_depth _obj'
    touchManagedPtr _obj
    return result

-- method Visual::get_green_pixel_details
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "shift", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "precision", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_green_pixel_details" gdk_visual_get_green_pixel_details :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    Ptr Word32 ->                           -- mask : TBasicType TUInt32
    Ptr Int32 ->                            -- shift : TBasicType TInt32
    Ptr Int32 ->                            -- precision : TBasicType TInt32
    IO ()


visualGetGreenPixelDetails ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m (Word32,Int32,Int32)
visualGetGreenPixelDetails _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    mask <- allocMem :: IO (Ptr Word32)
    shift <- allocMem :: IO (Ptr Int32)
    precision <- allocMem :: IO (Ptr Int32)
    gdk_visual_get_green_pixel_details _obj' mask shift precision
    mask' <- peek mask
    shift' <- peek shift
    precision' <- peek precision
    touchManagedPtr _obj
    freeMem mask
    freeMem shift
    freeMem precision
    return (mask', shift', precision')

-- method Visual::get_red_pixel_details
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mask", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "shift", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "precision", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_red_pixel_details" gdk_visual_get_red_pixel_details :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    Ptr Word32 ->                           -- mask : TBasicType TUInt32
    Ptr Int32 ->                            -- shift : TBasicType TInt32
    Ptr Int32 ->                            -- precision : TBasicType TInt32
    IO ()


visualGetRedPixelDetails ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m (Word32,Int32,Int32)
visualGetRedPixelDetails _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    mask <- allocMem :: IO (Ptr Word32)
    shift <- allocMem :: IO (Ptr Int32)
    precision <- allocMem :: IO (Ptr Int32)
    gdk_visual_get_red_pixel_details _obj' mask shift precision
    mask' <- peek mask
    shift' <- peek shift
    precision' <- peek precision
    touchManagedPtr _obj
    freeMem mask
    freeMem shift
    freeMem precision
    return (mask', shift', precision')

-- method Visual::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_screen" gdk_visual_get_screen :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    IO (Ptr Screen)


visualGetScreen ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m Screen
visualGetScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_visual_get_screen _obj'
    result' <- (newObject Screen) result
    touchManagedPtr _obj
    return result'

-- method Visual::get_visual_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "VisualType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_visual_type" gdk_visual_get_visual_type :: 
    Ptr Visual ->                           -- _obj : TInterface "Gdk" "Visual"
    IO CUInt


visualGetVisualType ::
    (MonadIO m, VisualK a) =>
    a ->                                    -- _obj
    m VisualType
visualGetVisualType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_visual_get_visual_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Visual::get_best
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_best" gdk_visual_get_best :: 
    IO (Ptr Visual)


visualGetBest ::
    (MonadIO m) =>
    m Visual
visualGetBest  = liftIO $ do
    result <- gdk_visual_get_best
    result' <- (newObject Visual) result
    return result'

-- method Visual::get_best_depth
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_best_depth" gdk_visual_get_best_depth :: 
    IO Int32


visualGetBestDepth ::
    (MonadIO m) =>
    m Int32
visualGetBestDepth  = liftIO $ do
    result <- gdk_visual_get_best_depth
    return result

-- method Visual::get_best_type
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "VisualType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_best_type" gdk_visual_get_best_type :: 
    IO CUInt


visualGetBestType ::
    (MonadIO m) =>
    m VisualType
visualGetBestType  = liftIO $ do
    result <- gdk_visual_get_best_type
    let result' = (toEnum . fromIntegral) result
    return result'

-- method Visual::get_best_with_both
-- method type : MemberFunction
-- Args : [Arg {argName = "depth", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "depth", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_best_with_both" gdk_visual_get_best_with_both :: 
    Int32 ->                                -- depth : TBasicType TInt32
    CUInt ->                                -- visual_type : TInterface "Gdk" "VisualType"
    IO (Ptr Visual)


visualGetBestWithBoth ::
    (MonadIO m) =>
    Int32 ->                                -- depth
    VisualType ->                           -- visual_type
    m Visual
visualGetBestWithBoth depth visual_type = liftIO $ do
    let visual_type' = (fromIntegral . fromEnum) visual_type
    result <- gdk_visual_get_best_with_both depth visual_type'
    result' <- (newObject Visual) result
    return result'

-- method Visual::get_best_with_depth
-- method type : MemberFunction
-- Args : [Arg {argName = "depth", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "depth", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_best_with_depth" gdk_visual_get_best_with_depth :: 
    Int32 ->                                -- depth : TBasicType TInt32
    IO (Ptr Visual)


visualGetBestWithDepth ::
    (MonadIO m) =>
    Int32 ->                                -- depth
    m Visual
visualGetBestWithDepth depth = liftIO $ do
    result <- gdk_visual_get_best_with_depth depth
    result' <- (newObject Visual) result
    return result'

-- method Visual::get_best_with_type
-- method type : MemberFunction
-- Args : [Arg {argName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "visual_type", argType = TInterface "Gdk" "VisualType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_best_with_type" gdk_visual_get_best_with_type :: 
    CUInt ->                                -- visual_type : TInterface "Gdk" "VisualType"
    IO (Ptr Visual)


visualGetBestWithType ::
    (MonadIO m) =>
    VisualType ->                           -- visual_type
    m Visual
visualGetBestWithType visual_type = liftIO $ do
    let visual_type' = (fromIntegral . fromEnum) visual_type
    result <- gdk_visual_get_best_with_type visual_type'
    result' <- (newObject Visual) result
    return result'

-- method Visual::get_system
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_visual_get_system" gdk_visual_get_system :: 
    IO (Ptr Visual)


visualGetSystem ::
    (MonadIO m) =>
    m Visual
visualGetSystem  = liftIO $ do
    result <- gdk_visual_get_system
    result' <- (newObject Visual) result
    return result'

-- Enum VisualType

data VisualType = 
      VisualTypeStaticGray
    | VisualTypeGrayscale
    | VisualTypeStaticColor
    | VisualTypePseudoColor
    | VisualTypeTrueColor
    | VisualTypeDirectColor
    | AnotherVisualType Int
    deriving (Show, Eq)

instance Enum VisualType where
    fromEnum VisualTypeStaticGray = 0
    fromEnum VisualTypeGrayscale = 1
    fromEnum VisualTypeStaticColor = 2
    fromEnum VisualTypePseudoColor = 3
    fromEnum VisualTypeTrueColor = 4
    fromEnum VisualTypeDirectColor = 5
    fromEnum (AnotherVisualType k) = k

    toEnum 0 = VisualTypeStaticGray
    toEnum 1 = VisualTypeGrayscale
    toEnum 2 = VisualTypeStaticColor
    toEnum 3 = VisualTypePseudoColor
    toEnum 4 = VisualTypeTrueColor
    toEnum 5 = VisualTypeDirectColor
    toEnum k = AnotherVisualType k

foreign import ccall "gdk_visual_type_get_type" c_gdk_visual_type_get_type :: 
    IO GType

instance BoxedEnum VisualType where
    boxedEnumType _ = c_gdk_visual_type_get_type

-- Flags WMDecoration

data WMDecoration = 
      WMDecorationAll
    | WMDecorationBorder
    | WMDecorationResizeh
    | WMDecorationTitle
    | WMDecorationMenu
    | WMDecorationMinimize
    | WMDecorationMaximize
    | AnotherWMDecoration Int
    deriving (Show, Eq)

instance Enum WMDecoration where
    fromEnum WMDecorationAll = 1
    fromEnum WMDecorationBorder = 2
    fromEnum WMDecorationResizeh = 4
    fromEnum WMDecorationTitle = 8
    fromEnum WMDecorationMenu = 16
    fromEnum WMDecorationMinimize = 32
    fromEnum WMDecorationMaximize = 64
    fromEnum (AnotherWMDecoration k) = k

    toEnum 1 = WMDecorationAll
    toEnum 2 = WMDecorationBorder
    toEnum 4 = WMDecorationResizeh
    toEnum 8 = WMDecorationTitle
    toEnum 16 = WMDecorationMenu
    toEnum 32 = WMDecorationMinimize
    toEnum 64 = WMDecorationMaximize
    toEnum k = AnotherWMDecoration k

foreign import ccall "gdk_wm_decoration_get_type" c_gdk_wm_decoration_get_type :: 
    IO GType

instance BoxedEnum WMDecoration where
    boxedEnumType _ = c_gdk_wm_decoration_get_type

instance IsGFlag WMDecoration

-- Flags WMFunction

data WMFunction = 
      WMFunctionAll
    | WMFunctionResize
    | WMFunctionMove
    | WMFunctionMinimize
    | WMFunctionMaximize
    | WMFunctionClose
    | AnotherWMFunction Int
    deriving (Show, Eq)

instance Enum WMFunction where
    fromEnum WMFunctionAll = 1
    fromEnum WMFunctionResize = 2
    fromEnum WMFunctionMove = 4
    fromEnum WMFunctionMinimize = 8
    fromEnum WMFunctionMaximize = 16
    fromEnum WMFunctionClose = 32
    fromEnum (AnotherWMFunction k) = k

    toEnum 1 = WMFunctionAll
    toEnum 2 = WMFunctionResize
    toEnum 4 = WMFunctionMove
    toEnum 8 = WMFunctionMinimize
    toEnum 16 = WMFunctionMaximize
    toEnum 32 = WMFunctionClose
    toEnum k = AnotherWMFunction k

foreign import ccall "gdk_wm_function_get_type" c_gdk_wm_function_get_type :: 
    IO GType

instance BoxedEnum WMFunction where
    boxedEnumType _ = c_gdk_wm_function_get_type

instance IsGFlag WMFunction

-- object Window 
newtype Window = Window (ForeignPtr Window)
noWindow :: Maybe Window
noWindow = Nothing

foreign import ccall "gdk_window_get_type"
    c_gdk_window_get_type :: IO GType

type instance ParentTypes Window = '[GObject.Object]

instance GObject Window where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gdk_window_get_type
    

class GObject o => WindowK o
instance (GObject o, IsDescendantOf Window o) => WindowK o

toWindow :: WindowK o => o -> IO Window
toWindow = unsafeCastTo Window

-- method Window::new
-- method type : Constructor
-- Args : [Arg {argName = "parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes", argType = TInterface "Gdk" "WindowAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes_mask", argType = TInterface "Gdk" "WindowAttributesType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes", argType = TInterface "Gdk" "WindowAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes_mask", argType = TInterface "Gdk" "WindowAttributesType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_new" gdk_window_new :: 
    Ptr Window ->                           -- parent : TInterface "Gdk" "Window"
    Ptr WindowAttr ->                       -- attributes : TInterface "Gdk" "WindowAttr"
    CUInt ->                                -- attributes_mask : TInterface "Gdk" "WindowAttributesType"
    IO (Ptr Window)


windowNew ::
    (MonadIO m, WindowK a) =>
    Maybe (a) ->                            -- parent
    WindowAttr ->                           -- attributes
    [WindowAttributesType] ->               -- attributes_mask
    m Window
windowNew parent attributes attributes_mask = liftIO $ do
    maybeParent <- case parent of
        Nothing -> return nullPtr
        Just jParent -> do
            let jParent' = unsafeManagedPtrCastPtr jParent
            return jParent'
    let attributes' = unsafeManagedPtrGetPtr attributes
    let attributes_mask' = gflagsToWord attributes_mask
    result <- gdk_window_new maybeParent attributes' attributes_mask'
    result' <- (wrapObject Window) result
    whenJust parent touchManagedPtr
    touchManagedPtr attributes
    return result'

-- method Window::beep
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_beep" gdk_window_beep :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowBeep ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowBeep _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_beep _obj'
    touchManagedPtr _obj
    return ()

-- method Window::begin_move_drag
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_begin_move_drag" gdk_window_begin_move_drag :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- button : TBasicType TInt32
    Int32 ->                                -- root_x : TBasicType TInt32
    Int32 ->                                -- root_y : TBasicType TInt32
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowBeginMoveDrag ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- button
    Int32 ->                                -- root_x
    Int32 ->                                -- root_y
    Word32 ->                               -- timestamp
    m ()
windowBeginMoveDrag _obj button root_x root_y timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_begin_move_drag _obj' button root_x root_y timestamp
    touchManagedPtr _obj
    return ()

-- method Window::begin_move_drag_for_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_begin_move_drag_for_device" gdk_window_begin_move_drag_for_device :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Int32 ->                                -- button : TBasicType TInt32
    Int32 ->                                -- root_x : TBasicType TInt32
    Int32 ->                                -- root_y : TBasicType TInt32
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowBeginMoveDragForDevice ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    Int32 ->                                -- button
    Int32 ->                                -- root_x
    Int32 ->                                -- root_y
    Word32 ->                               -- timestamp
    m ()
windowBeginMoveDragForDevice _obj device button root_x root_y timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    gdk_window_begin_move_drag_for_device _obj' device' button root_x root_y timestamp
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Window::begin_paint_rect
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rectangle", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rectangle", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_begin_paint_rect" gdk_window_begin_paint_rect :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.RectangleInt ->               -- rectangle : TInterface "cairo" "RectangleInt"
    IO ()


windowBeginPaintRect ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.RectangleInt ->                   -- rectangle
    m ()
windowBeginPaintRect _obj rectangle = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let rectangle' = unsafeManagedPtrGetPtr rectangle
    gdk_window_begin_paint_rect _obj' rectangle'
    touchManagedPtr _obj
    touchManagedPtr rectangle
    return ()

-- method Window::begin_paint_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_begin_paint_region" gdk_window_begin_paint_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO ()


windowBeginPaintRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- region
    m ()
windowBeginPaintRegion _obj region = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let region' = unsafeManagedPtrGetPtr region
    gdk_window_begin_paint_region _obj' region'
    touchManagedPtr _obj
    touchManagedPtr region
    return ()

-- method Window::begin_resize_drag
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_begin_resize_drag" gdk_window_begin_resize_drag :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- edge : TInterface "Gdk" "WindowEdge"
    Int32 ->                                -- button : TBasicType TInt32
    Int32 ->                                -- root_x : TBasicType TInt32
    Int32 ->                                -- root_y : TBasicType TInt32
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowBeginResizeDrag ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    WindowEdge ->                           -- edge
    Int32 ->                                -- button
    Int32 ->                                -- root_x
    Int32 ->                                -- root_y
    Word32 ->                               -- timestamp
    m ()
windowBeginResizeDrag _obj edge button root_x root_y timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let edge' = (fromIntegral . fromEnum) edge
    gdk_window_begin_resize_drag _obj' edge' button root_x root_y timestamp
    touchManagedPtr _obj
    return ()

-- method Window::begin_resize_drag_for_device
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_begin_resize_drag_for_device" gdk_window_begin_resize_drag_for_device :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- edge : TInterface "Gdk" "WindowEdge"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Int32 ->                                -- button : TBasicType TInt32
    Int32 ->                                -- root_x : TBasicType TInt32
    Int32 ->                                -- root_y : TBasicType TInt32
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowBeginResizeDragForDevice ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    WindowEdge ->                           -- edge
    b ->                                    -- device
    Int32 ->                                -- button
    Int32 ->                                -- root_x
    Int32 ->                                -- root_y
    Word32 ->                               -- timestamp
    m ()
windowBeginResizeDragForDevice _obj edge device button root_x root_y timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let edge' = (fromIntegral . fromEnum) edge
    let device' = unsafeManagedPtrCastPtr device
    gdk_window_begin_resize_drag_for_device _obj' edge' device' button root_x root_y timestamp
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Window::configure_finished
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_configure_finished" gdk_window_configure_finished :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()

{-# DEPRECATED windowConfigureFinished ["(Since version 3.8)","this function is no longer needed"]#-}
windowConfigureFinished ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowConfigureFinished _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_configure_finished _obj'
    touchManagedPtr _obj
    return ()

-- method Window::coords_from_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_coords_from_parent" gdk_window_coords_from_parent :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CDouble ->                              -- parent_x : TBasicType TDouble
    CDouble ->                              -- parent_y : TBasicType TDouble
    Ptr CDouble ->                          -- x : TBasicType TDouble
    Ptr CDouble ->                          -- y : TBasicType TDouble
    IO ()


windowCoordsFromParent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Double ->                               -- parent_x
    Double ->                               -- parent_y
    m (Double,Double)
windowCoordsFromParent _obj parent_x parent_y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let parent_x' = realToFrac parent_x
    let parent_y' = realToFrac parent_y
    x <- allocMem :: IO (Ptr CDouble)
    y <- allocMem :: IO (Ptr CDouble)
    gdk_window_coords_from_parent _obj' parent_x' parent_y' x y
    x' <- peek x
    let x'' = realToFrac x'
    y' <- peek y
    let y'' = realToFrac y'
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (x'', y'')

-- method Window::coords_to_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "parent_y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_coords_to_parent" gdk_window_coords_to_parent :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CDouble ->                              -- x : TBasicType TDouble
    CDouble ->                              -- y : TBasicType TDouble
    Ptr CDouble ->                          -- parent_x : TBasicType TDouble
    Ptr CDouble ->                          -- parent_y : TBasicType TDouble
    IO ()


windowCoordsToParent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Double ->                               -- x
    Double ->                               -- y
    m (Double,Double)
windowCoordsToParent _obj x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let x' = realToFrac x
    let y' = realToFrac y
    parent_x <- allocMem :: IO (Ptr CDouble)
    parent_y <- allocMem :: IO (Ptr CDouble)
    gdk_window_coords_to_parent _obj' x' y' parent_x parent_y
    parent_x' <- peek parent_x
    let parent_x'' = realToFrac parent_x'
    parent_y' <- peek parent_y
    let parent_y'' = realToFrac parent_y'
    touchManagedPtr _obj
    freeMem parent_x
    freeMem parent_y
    return (parent_x'', parent_y'')

-- method Window::create_gl_context
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "GLContext"
-- throws : True
-- Skip return : False

foreign import ccall "gdk_window_create_gl_context" gdk_window_create_gl_context :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GLContext)


windowCreateGlContext ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m GLContext
windowCreateGlContext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ gdk_window_create_gl_context _obj'
        result' <- (wrapObject GLContext) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

-- method Window::create_similar_image_surface
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "format", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "format", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Surface"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_create_similar_image_surface" gdk_window_create_similar_image_surface :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- format : TBasicType TInt32
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    Int32 ->                                -- scale : TBasicType TInt32
    IO (Ptr Cairo.Surface)


windowCreateSimilarImageSurface ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- format
    Int32 ->                                -- width
    Int32 ->                                -- height
    Int32 ->                                -- scale
    m Cairo.Surface
windowCreateSimilarImageSurface _obj format width height scale = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_create_similar_image_surface _obj' format width height scale
    result' <- (wrapBoxed Cairo.Surface) result
    touchManagedPtr _obj
    return result'

-- method Window::create_similar_surface
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "content", argType = TInterface "cairo" "Content", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "content", argType = TInterface "cairo" "Content", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Surface"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_create_similar_surface" gdk_window_create_similar_surface :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- content : TInterface "cairo" "Content"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO (Ptr Cairo.Surface)


windowCreateSimilarSurface ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Content ->                        -- content
    Int32 ->                                -- width
    Int32 ->                                -- height
    m Cairo.Surface
windowCreateSimilarSurface _obj content width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let content' = (fromIntegral . fromEnum) content
    result <- gdk_window_create_similar_surface _obj' content' width height
    result' <- (wrapBoxed Cairo.Surface) result
    touchManagedPtr _obj
    return result'

-- method Window::deiconify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_deiconify" gdk_window_deiconify :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowDeiconify ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowDeiconify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_deiconify _obj'
    touchManagedPtr _obj
    return ()

-- method Window::destroy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_destroy" gdk_window_destroy :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowDestroy ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowDestroy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_destroy _obj'
    touchManagedPtr _obj
    return ()

-- method Window::destroy_notify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_destroy_notify" gdk_window_destroy_notify :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowDestroyNotify ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowDestroyNotify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_destroy_notify _obj'
    touchManagedPtr _obj
    return ()

-- method Window::enable_synchronized_configure
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_enable_synchronized_configure" gdk_window_enable_synchronized_configure :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()

{-# DEPRECATED windowEnableSynchronizedConfigure ["(Since version 3.8)","this function is no longer needed"]#-}
windowEnableSynchronizedConfigure ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowEnableSynchronizedConfigure _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_enable_synchronized_configure _obj'
    touchManagedPtr _obj
    return ()

-- method Window::end_paint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_end_paint" gdk_window_end_paint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowEndPaint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowEndPaint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_end_paint _obj'
    touchManagedPtr _obj
    return ()

-- method Window::ensure_native
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_ensure_native" gdk_window_ensure_native :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowEnsureNative ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowEnsureNative _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_ensure_native _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::flush
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_flush" gdk_window_flush :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()

{-# DEPRECATED windowFlush ["(Since version 3.14)"]#-}
windowFlush ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowFlush _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_flush _obj'
    touchManagedPtr _obj
    return ()

-- method Window::focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_focus" gdk_window_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- timestamp
    m ()
windowFocus _obj timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_focus _obj' timestamp
    touchManagedPtr _obj
    return ()

-- method Window::freeze_toplevel_updates_libgtk_only
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_freeze_toplevel_updates_libgtk_only" gdk_window_freeze_toplevel_updates_libgtk_only :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()

{-# DEPRECATED windowFreezeToplevelUpdatesLibgtkOnly ["(Since version 3.16)","This symbol was never meant to be used outside of GTK+"]#-}
windowFreezeToplevelUpdatesLibgtkOnly ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowFreezeToplevelUpdatesLibgtkOnly _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_freeze_toplevel_updates_libgtk_only _obj'
    touchManagedPtr _obj
    return ()

-- method Window::freeze_updates
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_freeze_updates" gdk_window_freeze_updates :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowFreezeUpdates ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowFreezeUpdates _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_freeze_updates _obj'
    touchManagedPtr _obj
    return ()

-- method Window::fullscreen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_fullscreen" gdk_window_fullscreen :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowFullscreen ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowFullscreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_fullscreen _obj'
    touchManagedPtr _obj
    return ()

-- method Window::geometry_changed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_geometry_changed" gdk_window_geometry_changed :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowGeometryChanged ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowGeometryChanged _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_geometry_changed _obj'
    touchManagedPtr _obj
    return ()

-- method Window::get_accept_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_accept_focus" gdk_window_get_accept_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowGetAcceptFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetAcceptFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_accept_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_background_pattern
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Pattern"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_background_pattern" gdk_window_get_background_pattern :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Pattern)


windowGetBackgroundPattern ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Cairo.Pattern
windowGetBackgroundPattern _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_background_pattern _obj'
    result' <- (newBoxed Cairo.Pattern) result
    touchManagedPtr _obj
    return result'

-- method Window::get_children
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Window")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_children" gdk_window_get_children :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr (GList (Ptr Window)))


windowGetChildren ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m [Window]
windowGetChildren _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_children _obj'
    result' <- unpackGList result
    result'' <- mapM (newObject Window) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Window::get_children_with_user_data
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Window")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_children_with_user_data" gdk_window_get_children_with_user_data :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr () ->                               -- user_data : TBasicType TVoid
    IO (Ptr (GList (Ptr Window)))


windowGetChildrenWithUserData ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Ptr () ->                               -- user_data
    m [Window]
windowGetChildrenWithUserData _obj user_data = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_children_with_user_data _obj' user_data
    result' <- unpackGList result
    result'' <- mapM (newObject Window) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Window::get_clip_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Region"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_clip_region" gdk_window_get_clip_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Region)


windowGetClipRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Cairo.Region
windowGetClipRegion _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_clip_region _obj'
    result' <- (wrapBoxed Cairo.Region) result
    touchManagedPtr _obj
    return result'

-- method Window::get_composited
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_composited" gdk_window_get_composited :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt

{-# DEPRECATED windowGetComposited ["(Since version 3.16)","Compositing is an outdated technology that","  only ever worked on X11."]#-}
windowGetComposited ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetComposited _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_composited _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_cursor" gdk_window_get_cursor :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Cursor)


windowGetCursor ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Cursor
windowGetCursor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_cursor _obj'
    result' <- (newObject Cursor) result
    touchManagedPtr _obj
    return result'

-- method Window::get_decorations
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "decorations", argType = TInterface "Gdk" "WMDecoration", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_decorations" gdk_window_get_decorations :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr CUInt ->                            -- decorations : TInterface "Gdk" "WMDecoration"
    IO CInt


windowGetDecorations ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Bool,[WMDecoration])
windowGetDecorations _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    decorations <- allocMem :: IO (Ptr CUInt)
    result <- gdk_window_get_decorations _obj' decorations
    let result' = (/= 0) result
    decorations' <- peek decorations
    let decorations'' = wordToGFlags decorations'
    touchManagedPtr _obj
    freeMem decorations
    return (result', decorations'')

-- method Window::get_device_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Cursor"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_device_cursor" gdk_window_get_device_cursor :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    IO (Ptr Cursor)


windowGetDeviceCursor ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m Cursor
windowGetDeviceCursor _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    result <- gdk_window_get_device_cursor _obj' device'
    result' <- (newObject Cursor) result
    touchManagedPtr _obj
    touchManagedPtr device
    return result'

-- method Window::get_device_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "EventMask"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_device_events" gdk_window_get_device_events :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    IO CUInt


windowGetDeviceEvents ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m [EventMask]
windowGetDeviceEvents _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    result <- gdk_window_get_device_events _obj' device'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    touchManagedPtr device
    return result'

-- method Window::get_device_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_device_position" gdk_window_get_device_position :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
    IO (Ptr Window)


windowGetDevicePosition ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m (Window,Int32,Int32,[ModifierType])
windowGetDevicePosition _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    mask <- allocMem :: IO (Ptr CUInt)
    result <- gdk_window_get_device_position _obj' device' x y mask
    result' <- (newObject Window) result
    x' <- peek x
    y' <- peek y
    mask' <- peek mask
    let mask'' = wordToGFlags mask'
    touchManagedPtr _obj
    touchManagedPtr device
    freeMem x
    freeMem y
    freeMem mask
    return (result', x', y', mask'')

-- method Window::get_device_position_double
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_device_position_double" gdk_window_get_device_position_double :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Ptr CDouble ->                          -- x : TBasicType TDouble
    Ptr CDouble ->                          -- y : TBasicType TDouble
    Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
    IO (Ptr Window)


windowGetDevicePositionDouble ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m (Window,Double,Double,[ModifierType])
windowGetDevicePositionDouble _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    x <- allocMem :: IO (Ptr CDouble)
    y <- allocMem :: IO (Ptr CDouble)
    mask <- allocMem :: IO (Ptr CUInt)
    result <- gdk_window_get_device_position_double _obj' device' x y mask
    result' <- (newObject Window) result
    x' <- peek x
    let x'' = realToFrac x'
    y' <- peek y
    let y'' = realToFrac y'
    mask' <- peek mask
    let mask'' = wordToGFlags mask'
    touchManagedPtr _obj
    touchManagedPtr device
    freeMem x
    freeMem y
    freeMem mask
    return (result', x'', y'', mask'')

-- method Window::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_display" gdk_window_get_display :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Display)


windowGetDisplay ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Display
windowGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_display _obj'
    result' <- (newObject Display) result
    touchManagedPtr _obj
    return result'

-- method Window::get_drag_protocol
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragProtocol"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_drag_protocol" gdk_window_get_drag_protocol :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr (Ptr Window) ->                     -- target : TInterface "Gdk" "Window"
    IO CUInt


windowGetDragProtocol ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (DragProtocol,Window)
windowGetDragProtocol _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    target <- allocMem :: IO (Ptr (Ptr Window))
    result <- gdk_window_get_drag_protocol _obj' target
    let result' = (toEnum . fromIntegral) result
    target' <- peek target
    target'' <- (wrapObject Window) target'
    touchManagedPtr _obj
    freeMem target
    return (result', target'')

-- method Window::get_effective_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_effective_parent" gdk_window_get_effective_parent :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Window)


windowGetEffectiveParent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Window
windowGetEffectiveParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_effective_parent _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Window::get_effective_toplevel
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_effective_toplevel" gdk_window_get_effective_toplevel :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Window)


windowGetEffectiveToplevel ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Window
windowGetEffectiveToplevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_effective_toplevel _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Window::get_event_compression
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_event_compression" gdk_window_get_event_compression :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowGetEventCompression ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetEventCompression _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_event_compression _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "EventMask"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_events" gdk_window_get_events :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CUInt


windowGetEvents ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m [EventMask]
windowGetEvents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_events _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Window::get_focus_on_map
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_focus_on_map" gdk_window_get_focus_on_map :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowGetFocusOnMap ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetFocusOnMap _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_focus_on_map _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_frame_clock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "FrameClock"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_frame_clock" gdk_window_get_frame_clock :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr FrameClock)


windowGetFrameClock ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m FrameClock
windowGetFrameClock _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_frame_clock _obj'
    result' <- (newObject FrameClock) result
    touchManagedPtr _obj
    return result'

-- method Window::get_frame_extents
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rect", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_frame_extents" gdk_window_get_frame_extents :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.RectangleInt ->               -- rect : TInterface "cairo" "RectangleInt"
    IO ()


windowGetFrameExtents ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Cairo.RectangleInt)
windowGetFrameExtents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    rect <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    gdk_window_get_frame_extents _obj' rect
    rect' <- (wrapBoxed Cairo.RectangleInt) rect
    touchManagedPtr _obj
    return rect'

-- method Window::get_fullscreen_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "FullscreenMode"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_fullscreen_mode" gdk_window_get_fullscreen_mode :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CUInt


windowGetFullscreenMode ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m FullscreenMode
windowGetFullscreenMode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_fullscreen_mode _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Window::get_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_geometry" gdk_window_get_geometry :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    Ptr Int32 ->                            -- width : TBasicType TInt32
    Ptr Int32 ->                            -- height : TBasicType TInt32
    IO ()


windowGetGeometry ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32,Int32,Int32)
windowGetGeometry _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gdk_window_get_geometry _obj' x y width height
    x' <- peek x
    y' <- peek y
    width' <- peek width
    height' <- peek height
    touchManagedPtr _obj
    freeMem x
    freeMem y
    freeMem width
    freeMem height
    return (x', y', width', height')

-- method Window::get_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_group" gdk_window_get_group :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Window)


windowGetGroup ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Window
windowGetGroup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_group _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Window::get_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_height" gdk_window_get_height :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO Int32


windowGetHeight ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Int32
windowGetHeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_height _obj'
    touchManagedPtr _obj
    return result

-- method Window::get_modal_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_modal_hint" gdk_window_get_modal_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowGetModalHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetModalHint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_modal_hint _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_origin
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_origin" gdk_window_get_origin :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    IO Int32


windowGetOrigin ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32,Int32)
windowGetOrigin _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    result <- gdk_window_get_origin _obj' x y
    x' <- peek x
    y' <- peek y
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (result, x', y')

-- method Window::get_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_parent" gdk_window_get_parent :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Window)


windowGetParent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Window
windowGetParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_parent _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Window::get_pointer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_pointer" gdk_window_get_pointer :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    Ptr CUInt ->                            -- mask : TInterface "Gdk" "ModifierType"
    IO (Ptr Window)

{-# DEPRECATED windowGetPointer ["(Since version 3.0)","Use gdk_window_get_device_position() instead."]#-}
windowGetPointer ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Window,Int32,Int32,[ModifierType])
windowGetPointer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    mask <- allocMem :: IO (Ptr CUInt)
    result <- gdk_window_get_pointer _obj' x y mask
    result' <- (newObject Window) result
    x' <- peek x
    y' <- peek y
    mask' <- peek mask
    let mask'' = wordToGFlags mask'
    touchManagedPtr _obj
    freeMem x
    freeMem y
    freeMem mask
    return (result', x', y', mask'')

-- method Window::get_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_position" gdk_window_get_position :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    IO ()


windowGetPosition ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
windowGetPosition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    gdk_window_get_position _obj' x y
    x' <- peek x
    y' <- peek y
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (x', y')

-- method Window::get_root_coords
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_root_coords" gdk_window_get_root_coords :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    Ptr Int32 ->                            -- root_x : TBasicType TInt32
    Ptr Int32 ->                            -- root_y : TBasicType TInt32
    IO ()


windowGetRootCoords ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- x
    Int32 ->                                -- y
    m (Int32,Int32)
windowGetRootCoords _obj x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    root_x <- allocMem :: IO (Ptr Int32)
    root_y <- allocMem :: IO (Ptr Int32)
    gdk_window_get_root_coords _obj' x y root_x root_y
    root_x' <- peek root_x
    root_y' <- peek root_y
    touchManagedPtr _obj
    freeMem root_x
    freeMem root_y
    return (root_x', root_y')

-- method Window::get_root_origin
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_root_origin" gdk_window_get_root_origin :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    IO ()


windowGetRootOrigin ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
windowGetRootOrigin _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    gdk_window_get_root_origin _obj' x y
    x' <- peek x
    y' <- peek y
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (x', y')

-- method Window::get_scale_factor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_scale_factor" gdk_window_get_scale_factor :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO Int32


windowGetScaleFactor ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Int32
windowGetScaleFactor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_scale_factor _obj'
    touchManagedPtr _obj
    return result

-- method Window::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_screen" gdk_window_get_screen :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Screen)


windowGetScreen ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Screen
windowGetScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_screen _obj'
    result' <- (newObject Screen) result
    touchManagedPtr _obj
    return result'

-- method Window::get_source_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source", argType = TInterface "Gdk" "InputSource", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source", argType = TInterface "Gdk" "InputSource", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "EventMask"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_source_events" gdk_window_get_source_events :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- source : TInterface "Gdk" "InputSource"
    IO CUInt


windowGetSourceEvents ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    InputSource ->                          -- source
    m [EventMask]
windowGetSourceEvents _obj source = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let source' = (fromIntegral . fromEnum) source
    result <- gdk_window_get_source_events _obj' source'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Window::get_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "WindowState"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_state" gdk_window_get_state :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CUInt


windowGetState ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m [WindowState]
windowGetState _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_state _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Window::get_support_multidevice
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_support_multidevice" gdk_window_get_support_multidevice :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowGetSupportMultidevice ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetSupportMultidevice _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_support_multidevice _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_toplevel
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_toplevel" gdk_window_get_toplevel :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Window)


windowGetToplevel ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Window
windowGetToplevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_toplevel _obj'
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Window::get_type_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "WindowTypeHint"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_type_hint" gdk_window_get_type_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CUInt


windowGetTypeHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m WindowTypeHint
windowGetTypeHint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_type_hint _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Window::get_update_area
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Region"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_update_area" gdk_window_get_update_area :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Region)


windowGetUpdateArea ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Cairo.Region
windowGetUpdateArea _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_update_area _obj'
    result' <- (wrapBoxed Cairo.Region) result
    touchManagedPtr _obj
    return result'

-- method Window::get_user_data
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_user_data" gdk_window_get_user_data :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr (Ptr ()) ->                         -- data : TBasicType TVoid
    IO ()


windowGetUserData ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ((Ptr ()))
windowGetUserData _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    data_ <- allocMem :: IO (Ptr (Ptr ()))
    gdk_window_get_user_data _obj' data_
    data_' <- peek data_
    touchManagedPtr _obj
    freeMem data_
    return data_'

-- method Window::get_visible_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Region"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_visible_region" gdk_window_get_visible_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Region)


windowGetVisibleRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Cairo.Region
windowGetVisibleRegion _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_visible_region _obj'
    result' <- (wrapBoxed Cairo.Region) result
    touchManagedPtr _obj
    return result'

-- method Window::get_visual
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_visual" gdk_window_get_visual :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr Visual)


windowGetVisual ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Visual
windowGetVisual _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_visual _obj'
    result' <- (newObject Visual) result
    touchManagedPtr _obj
    return result'

-- method Window::get_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_width" gdk_window_get_width :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO Int32


windowGetWidth ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Int32
windowGetWidth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_width _obj'
    touchManagedPtr _obj
    return result

-- method Window::get_window_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "WindowType"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_get_window_type" gdk_window_get_window_type :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CUInt


windowGetWindowType ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m WindowType
windowGetWindowType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_get_window_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Window::has_native
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_has_native" gdk_window_has_native :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowHasNative ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowHasNative _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_has_native _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::hide
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_hide" gdk_window_hide :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowHide ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowHide _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_hide _obj'
    touchManagedPtr _obj
    return ()

-- method Window::iconify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_iconify" gdk_window_iconify :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowIconify ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowIconify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_iconify _obj'
    touchManagedPtr _obj
    return ()

-- method Window::input_shape_combine_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_input_shape_combine_region" gdk_window_input_shape_combine_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- shape_region : TInterface "cairo" "Region"
    Int32 ->                                -- offset_x : TBasicType TInt32
    Int32 ->                                -- offset_y : TBasicType TInt32
    IO ()


windowInputShapeCombineRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- shape_region
    Int32 ->                                -- offset_x
    Int32 ->                                -- offset_y
    m ()
windowInputShapeCombineRegion _obj shape_region offset_x offset_y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let shape_region' = unsafeManagedPtrGetPtr shape_region
    gdk_window_input_shape_combine_region _obj' shape_region' offset_x offset_y
    touchManagedPtr _obj
    touchManagedPtr shape_region
    return ()

-- method Window::invalidate_maybe_recurse
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_func", argType = TInterface "Gdk" "WindowChildFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 3, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_func", argType = TInterface "Gdk" "WindowChildFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 3, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_invalidate_maybe_recurse" gdk_window_invalidate_maybe_recurse :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    FunPtr WindowChildFuncC ->              -- child_func : TInterface "Gdk" "WindowChildFunc"
    Ptr () ->                               -- user_data : TBasicType TVoid
    IO ()


windowInvalidateMaybeRecurse ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- region
    Maybe (WindowChildFunc) ->              -- child_func
    m ()
windowInvalidateMaybeRecurse _obj region child_func = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let region' = unsafeManagedPtrGetPtr region
    maybeChild_func <- case child_func of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jChild_func -> do
            jChild_func' <- mkWindowChildFunc (windowChildFuncWrapper Nothing jChild_func)
            return jChild_func'
    let user_data = nullPtr
    gdk_window_invalidate_maybe_recurse _obj' region' maybeChild_func user_data
    safeFreeFunPtr $ castFunPtrToPtr maybeChild_func
    touchManagedPtr _obj
    touchManagedPtr region
    return ()

-- method Window::invalidate_rect
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rect", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "invalidate_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rect", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "invalidate_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_invalidate_rect" gdk_window_invalidate_rect :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.RectangleInt ->               -- rect : TInterface "cairo" "RectangleInt"
    CInt ->                                 -- invalidate_children : TBasicType TBoolean
    IO ()


windowInvalidateRect ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.RectangleInt) ->           -- rect
    Bool ->                                 -- invalidate_children
    m ()
windowInvalidateRect _obj rect invalidate_children = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeRect <- case rect of
        Nothing -> return nullPtr
        Just jRect -> do
            let jRect' = unsafeManagedPtrGetPtr jRect
            return jRect'
    let invalidate_children' = (fromIntegral . fromEnum) invalidate_children
    gdk_window_invalidate_rect _obj' maybeRect invalidate_children'
    touchManagedPtr _obj
    whenJust rect touchManagedPtr
    return ()

-- method Window::invalidate_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "invalidate_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "invalidate_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_invalidate_region" gdk_window_invalidate_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    CInt ->                                 -- invalidate_children : TBasicType TBoolean
    IO ()


windowInvalidateRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- region
    Bool ->                                 -- invalidate_children
    m ()
windowInvalidateRegion _obj region invalidate_children = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let region' = unsafeManagedPtrGetPtr region
    let invalidate_children' = (fromIntegral . fromEnum) invalidate_children
    gdk_window_invalidate_region _obj' region' invalidate_children'
    touchManagedPtr _obj
    touchManagedPtr region
    return ()

-- method Window::is_destroyed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_is_destroyed" gdk_window_is_destroyed :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowIsDestroyed ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsDestroyed _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_is_destroyed _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::is_input_only
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_is_input_only" gdk_window_is_input_only :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowIsInputOnly ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsInputOnly _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_is_input_only _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::is_shaped
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_is_shaped" gdk_window_is_shaped :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowIsShaped ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsShaped _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_is_shaped _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::is_viewable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_is_viewable" gdk_window_is_viewable :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowIsViewable ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsViewable _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_is_viewable _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::is_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_is_visible" gdk_window_is_visible :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO CInt


windowIsVisible ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_is_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::lower
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_lower" gdk_window_lower :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowLower ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowLower _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_lower _obj'
    touchManagedPtr _obj
    return ()

-- method Window::mark_paint_from_clip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_mark_paint_from_clip" gdk_window_mark_paint_from_clip :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    IO ()


windowMarkPaintFromClip ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Context ->                        -- cr
    m ()
windowMarkPaintFromClip _obj cr = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let cr' = unsafeManagedPtrGetPtr cr
    gdk_window_mark_paint_from_clip _obj' cr'
    touchManagedPtr _obj
    touchManagedPtr cr
    return ()

-- method Window::maximize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_maximize" gdk_window_maximize :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowMaximize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowMaximize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_maximize _obj'
    touchManagedPtr _obj
    return ()

-- method Window::merge_child_input_shapes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_merge_child_input_shapes" gdk_window_merge_child_input_shapes :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowMergeChildInputShapes ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowMergeChildInputShapes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_merge_child_input_shapes _obj'
    touchManagedPtr _obj
    return ()

-- method Window::merge_child_shapes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_merge_child_shapes" gdk_window_merge_child_shapes :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowMergeChildShapes ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowMergeChildShapes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_merge_child_shapes _obj'
    touchManagedPtr _obj
    return ()

-- method Window::move
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_move" gdk_window_move :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO ()


windowMove ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- x
    Int32 ->                                -- y
    m ()
windowMove _obj x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_move _obj' x y
    touchManagedPtr _obj
    return ()

-- method Window::move_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dx", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dy", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dx", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dy", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_move_region" gdk_window_move_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    Int32 ->                                -- dx : TBasicType TInt32
    Int32 ->                                -- dy : TBasicType TInt32
    IO ()


windowMoveRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- region
    Int32 ->                                -- dx
    Int32 ->                                -- dy
    m ()
windowMoveRegion _obj region dx dy = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let region' = unsafeManagedPtrGetPtr region
    gdk_window_move_region _obj' region' dx dy
    touchManagedPtr _obj
    touchManagedPtr region
    return ()

-- method Window::move_resize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_move_resize" gdk_window_move_resize :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


windowMoveResize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- x
    Int32 ->                                -- y
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
windowMoveResize _obj x y width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_move_resize _obj' x y width height
    touchManagedPtr _obj
    return ()

-- method Window::peek_children
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gdk" "Window")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_peek_children" gdk_window_peek_children :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO (Ptr (GList (Ptr Window)))


windowPeekChildren ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m [Window]
windowPeekChildren _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gdk_window_peek_children _obj'
    result' <- unpackGList result
    result'' <- mapM (newObject Window) result'
    touchManagedPtr _obj
    return result''

-- method Window::process_updates
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "update_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "update_children", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_process_updates" gdk_window_process_updates :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- update_children : TBasicType TBoolean
    IO ()


windowProcessUpdates ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- update_children
    m ()
windowProcessUpdates _obj update_children = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let update_children' = (fromIntegral . fromEnum) update_children
    gdk_window_process_updates _obj' update_children'
    touchManagedPtr _obj
    return ()

-- method Window::raise
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_raise" gdk_window_raise :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowRaise ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowRaise _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_raise _obj'
    touchManagedPtr _obj
    return ()

-- method Window::register_dnd
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_register_dnd" gdk_window_register_dnd :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowRegisterDnd ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowRegisterDnd _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_register_dnd _obj'
    touchManagedPtr _obj
    return ()

-- method Window::reparent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_reparent" gdk_window_reparent :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Window ->                           -- new_parent : TInterface "Gdk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO ()


windowReparent ::
    (MonadIO m, WindowK a, WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- new_parent
    Int32 ->                                -- x
    Int32 ->                                -- y
    m ()
windowReparent _obj new_parent x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let new_parent' = unsafeManagedPtrCastPtr new_parent
    gdk_window_reparent _obj' new_parent' x y
    touchManagedPtr _obj
    touchManagedPtr new_parent
    return ()

-- method Window::resize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_resize" gdk_window_resize :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


windowResize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
windowResize _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_resize _obj' width height
    touchManagedPtr _obj
    return ()

-- method Window::restack
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sibling", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "above", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sibling", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "above", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_restack" gdk_window_restack :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Window ->                           -- sibling : TInterface "Gdk" "Window"
    CInt ->                                 -- above : TBasicType TBoolean
    IO ()


windowRestack ::
    (MonadIO m, WindowK a, WindowK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- sibling
    Bool ->                                 -- above
    m ()
windowRestack _obj sibling above = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeSibling <- case sibling of
        Nothing -> return nullPtr
        Just jSibling -> do
            let jSibling' = unsafeManagedPtrCastPtr jSibling
            return jSibling'
    let above' = (fromIntegral . fromEnum) above
    gdk_window_restack _obj' maybeSibling above'
    touchManagedPtr _obj
    whenJust sibling touchManagedPtr
    return ()

-- method Window::scroll
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dx", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dy", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dx", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dy", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_scroll" gdk_window_scroll :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- dx : TBasicType TInt32
    Int32 ->                                -- dy : TBasicType TInt32
    IO ()


windowScroll ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- dx
    Int32 ->                                -- dy
    m ()
windowScroll _obj dx dy = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_scroll _obj' dx dy
    touchManagedPtr _obj
    return ()

-- method Window::set_accept_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accept_focus", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accept_focus", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_accept_focus" gdk_window_set_accept_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- accept_focus : TBasicType TBoolean
    IO ()


windowSetAcceptFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- accept_focus
    m ()
windowSetAcceptFocus _obj accept_focus = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accept_focus' = (fromIntegral . fromEnum) accept_focus
    gdk_window_set_accept_focus _obj' accept_focus'
    touchManagedPtr _obj
    return ()

-- method Window::set_background
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_background" gdk_window_set_background :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Color ->                            -- color : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED windowSetBackground ["(Since version 3.4)","Use gdk_window_set_background_rgba() instead."]#-}
windowSetBackground ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Color ->                                -- color
    m ()
windowSetBackground _obj color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let color' = unsafeManagedPtrGetPtr color
    gdk_window_set_background _obj' color'
    touchManagedPtr _obj
    touchManagedPtr color
    return ()

-- method Window::set_background_pattern
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pattern", argType = TInterface "cairo" "Pattern", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pattern", argType = TInterface "cairo" "Pattern", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_background_pattern" gdk_window_set_background_pattern :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Pattern ->                    -- pattern : TInterface "cairo" "Pattern"
    IO ()


windowSetBackgroundPattern ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.Pattern) ->                -- pattern
    m ()
windowSetBackgroundPattern _obj pattern = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybePattern <- case pattern of
        Nothing -> return nullPtr
        Just jPattern -> do
            let jPattern' = unsafeManagedPtrGetPtr jPattern
            return jPattern'
    gdk_window_set_background_pattern _obj' maybePattern
    touchManagedPtr _obj
    whenJust pattern touchManagedPtr
    return ()

-- method Window::set_background_rgba
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rgba", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rgba", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_background_rgba" gdk_window_set_background_rgba :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr RGBA ->                             -- rgba : TInterface "Gdk" "RGBA"
    IO ()


windowSetBackgroundRgba ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    RGBA ->                                 -- rgba
    m ()
windowSetBackgroundRgba _obj rgba = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let rgba' = unsafeManagedPtrGetPtr rgba
    gdk_window_set_background_rgba _obj' rgba'
    touchManagedPtr _obj
    touchManagedPtr rgba
    return ()

-- method Window::set_child_input_shapes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_child_input_shapes" gdk_window_set_child_input_shapes :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowSetChildInputShapes ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowSetChildInputShapes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_set_child_input_shapes _obj'
    touchManagedPtr _obj
    return ()

-- method Window::set_child_shapes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_child_shapes" gdk_window_set_child_shapes :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowSetChildShapes ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowSetChildShapes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_set_child_shapes _obj'
    touchManagedPtr _obj
    return ()

-- method Window::set_composited
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "composited", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "composited", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_composited" gdk_window_set_composited :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- composited : TBasicType TBoolean
    IO ()

{-# DEPRECATED windowSetComposited ["(Since version 3.16)","Compositing is an outdated technology that","  only ever worked on X11."]#-}
windowSetComposited ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- composited
    m ()
windowSetComposited _obj composited = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let composited' = (fromIntegral . fromEnum) composited
    gdk_window_set_composited _obj' composited'
    touchManagedPtr _obj
    return ()

-- method Window::set_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_cursor" gdk_window_set_cursor :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cursor ->                           -- cursor : TInterface "Gdk" "Cursor"
    IO ()


windowSetCursor ::
    (MonadIO m, WindowK a, CursorK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- cursor
    m ()
windowSetCursor _obj cursor = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeCursor <- case cursor of
        Nothing -> return nullPtr
        Just jCursor -> do
            let jCursor' = unsafeManagedPtrCastPtr jCursor
            return jCursor'
    gdk_window_set_cursor _obj' maybeCursor
    touchManagedPtr _obj
    whenJust cursor touchManagedPtr
    return ()

-- method Window::set_decorations
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "decorations", argType = TInterface "Gdk" "WMDecoration", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "decorations", argType = TInterface "Gdk" "WMDecoration", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_decorations" gdk_window_set_decorations :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- decorations : TInterface "Gdk" "WMDecoration"
    IO ()


windowSetDecorations ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    [WMDecoration] ->                       -- decorations
    m ()
windowSetDecorations _obj decorations = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let decorations' = gflagsToWord decorations
    gdk_window_set_decorations _obj' decorations'
    touchManagedPtr _obj
    return ()

-- method Window::set_device_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_device_cursor" gdk_window_set_device_cursor :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Ptr Cursor ->                           -- cursor : TInterface "Gdk" "Cursor"
    IO ()


windowSetDeviceCursor ::
    (MonadIO m, WindowK a, DeviceK b, CursorK c) =>
    a ->                                    -- _obj
    b ->                                    -- device
    c ->                                    -- cursor
    m ()
windowSetDeviceCursor _obj device cursor = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    let cursor' = unsafeManagedPtrCastPtr cursor
    gdk_window_set_device_cursor _obj' device' cursor'
    touchManagedPtr _obj
    touchManagedPtr device
    touchManagedPtr cursor
    return ()

-- method Window::set_device_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_device_events" gdk_window_set_device_events :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    CUInt ->                                -- event_mask : TInterface "Gdk" "EventMask"
    IO ()


windowSetDeviceEvents ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    [EventMask] ->                          -- event_mask
    m ()
windowSetDeviceEvents _obj device event_mask = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    let event_mask' = gflagsToWord event_mask
    gdk_window_set_device_events _obj' device' event_mask'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Window::set_event_compression
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_compression", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_compression", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_event_compression" gdk_window_set_event_compression :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- event_compression : TBasicType TBoolean
    IO ()


windowSetEventCompression ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- event_compression
    m ()
windowSetEventCompression _obj event_compression = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event_compression' = (fromIntegral . fromEnum) event_compression
    gdk_window_set_event_compression _obj' event_compression'
    touchManagedPtr _obj
    return ()

-- method Window::set_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_events" gdk_window_set_events :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- event_mask : TInterface "Gdk" "EventMask"
    IO ()


windowSetEvents ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    [EventMask] ->                          -- event_mask
    m ()
windowSetEvents _obj event_mask = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event_mask' = gflagsToWord event_mask
    gdk_window_set_events _obj' event_mask'
    touchManagedPtr _obj
    return ()

-- method Window::set_focus_on_map
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "focus_on_map", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "focus_on_map", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_focus_on_map" gdk_window_set_focus_on_map :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- focus_on_map : TBasicType TBoolean
    IO ()


windowSetFocusOnMap ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- focus_on_map
    m ()
windowSetFocusOnMap _obj focus_on_map = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let focus_on_map' = (fromIntegral . fromEnum) focus_on_map
    gdk_window_set_focus_on_map _obj' focus_on_map'
    touchManagedPtr _obj
    return ()

-- method Window::set_fullscreen_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mode", argType = TInterface "Gdk" "FullscreenMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mode", argType = TInterface "Gdk" "FullscreenMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_fullscreen_mode" gdk_window_set_fullscreen_mode :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- mode : TInterface "Gdk" "FullscreenMode"
    IO ()


windowSetFullscreenMode ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    FullscreenMode ->                       -- mode
    m ()
windowSetFullscreenMode _obj mode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let mode' = (fromIntegral . fromEnum) mode
    gdk_window_set_fullscreen_mode _obj' mode'
    touchManagedPtr _obj
    return ()

-- method Window::set_functions
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "functions", argType = TInterface "Gdk" "WMFunction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "functions", argType = TInterface "Gdk" "WMFunction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_functions" gdk_window_set_functions :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- functions : TInterface "Gdk" "WMFunction"
    IO ()


windowSetFunctions ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    [WMFunction] ->                         -- functions
    m ()
windowSetFunctions _obj functions = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let functions' = gflagsToWord functions
    gdk_window_set_functions _obj' functions'
    touchManagedPtr _obj
    return ()

-- method Window::set_geometry_hints
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geom_mask", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geom_mask", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_geometry_hints" gdk_window_set_geometry_hints :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Geometry ->                         -- geometry : TInterface "Gdk" "Geometry"
    CUInt ->                                -- geom_mask : TInterface "Gdk" "WindowHints"
    IO ()


windowSetGeometryHints ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Geometry ->                             -- geometry
    [WindowHints] ->                        -- geom_mask
    m ()
windowSetGeometryHints _obj geometry geom_mask = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let geometry' = unsafeManagedPtrGetPtr geometry
    let geom_mask' = gflagsToWord geom_mask
    gdk_window_set_geometry_hints _obj' geometry' geom_mask'
    touchManagedPtr _obj
    touchManagedPtr geometry
    return ()

-- method Window::set_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "leader", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "leader", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_group" gdk_window_set_group :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Window ->                           -- leader : TInterface "Gdk" "Window"
    IO ()


windowSetGroup ::
    (MonadIO m, WindowK a, WindowK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- leader
    m ()
windowSetGroup _obj leader = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeLeader <- case leader of
        Nothing -> return nullPtr
        Just jLeader -> do
            let jLeader' = unsafeManagedPtrCastPtr jLeader
            return jLeader'
    gdk_window_set_group _obj' maybeLeader
    touchManagedPtr _obj
    whenJust leader touchManagedPtr
    return ()

-- method Window::set_icon_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbufs", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbufs", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_icon_list" gdk_window_set_icon_list :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr (GList (Ptr GdkPixbuf.Pixbuf)) ->   -- pixbufs : TGList (TInterface "GdkPixbuf" "Pixbuf")
    IO ()


windowSetIconList ::
    (MonadIO m, WindowK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- _obj
    [b] ->                                  -- pixbufs
    m ()
windowSetIconList _obj pixbufs = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let pixbufs' = map unsafeManagedPtrCastPtr pixbufs
    pixbufs'' <- packGList pixbufs'
    gdk_window_set_icon_list _obj' pixbufs''
    touchManagedPtr _obj
    mapM_ touchManagedPtr pixbufs
    g_list_free pixbufs''
    return ()

-- method Window::set_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_icon_name" gdk_window_set_icon_name :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


windowSetIconName ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- name
    m ()
windowSetIconName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeName <- case name of
        Nothing -> return nullPtr
        Just jName -> do
            jName' <- textToCString jName
            return jName'
    gdk_window_set_icon_name _obj' maybeName
    touchManagedPtr _obj
    freeMem maybeName
    return ()

-- method Window::set_keep_above
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_keep_above" gdk_window_set_keep_above :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetKeepAbove ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetKeepAbove _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gdk_window_set_keep_above _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_keep_below
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_keep_below" gdk_window_set_keep_below :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetKeepBelow ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetKeepBelow _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gdk_window_set_keep_below _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_modal_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modal", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modal", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_modal_hint" gdk_window_set_modal_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- modal : TBasicType TBoolean
    IO ()


windowSetModalHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- modal
    m ()
windowSetModalHint _obj modal = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let modal' = (fromIntegral . fromEnum) modal
    gdk_window_set_modal_hint _obj' modal'
    touchManagedPtr _obj
    return ()

-- method Window::set_opacity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_opacity" gdk_window_set_opacity :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CDouble ->                              -- opacity : TBasicType TDouble
    IO ()


windowSetOpacity ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Double ->                               -- opacity
    m ()
windowSetOpacity _obj opacity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let opacity' = realToFrac opacity
    gdk_window_set_opacity _obj' opacity'
    touchManagedPtr _obj
    return ()

-- method Window::set_opaque_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_opaque_region" gdk_window_set_opaque_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO ()


windowSetOpaqueRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.Region) ->                 -- region
    m ()
windowSetOpaqueRegion _obj region = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeRegion <- case region of
        Nothing -> return nullPtr
        Just jRegion -> do
            let jRegion' = unsafeManagedPtrGetPtr jRegion
            return jRegion'
    gdk_window_set_opaque_region _obj' maybeRegion
    touchManagedPtr _obj
    whenJust region touchManagedPtr
    return ()

-- method Window::set_override_redirect
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "override_redirect", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "override_redirect", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_override_redirect" gdk_window_set_override_redirect :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- override_redirect : TBasicType TBoolean
    IO ()


windowSetOverrideRedirect ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- override_redirect
    m ()
windowSetOverrideRedirect _obj override_redirect = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let override_redirect' = (fromIntegral . fromEnum) override_redirect
    gdk_window_set_override_redirect _obj' override_redirect'
    touchManagedPtr _obj
    return ()

-- method Window::set_role
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "role", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "role", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_role" gdk_window_set_role :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CString ->                              -- role : TBasicType TUTF8
    IO ()


windowSetRole ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- role
    m ()
windowSetRole _obj role = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    role' <- textToCString role
    gdk_window_set_role _obj' role'
    touchManagedPtr _obj
    freeMem role'
    return ()

-- method Window::set_shadow_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "left", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "right", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "top", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "bottom", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "left", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "right", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "top", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "bottom", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_shadow_width" gdk_window_set_shadow_width :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Int32 ->                                -- left : TBasicType TInt32
    Int32 ->                                -- right : TBasicType TInt32
    Int32 ->                                -- top : TBasicType TInt32
    Int32 ->                                -- bottom : TBasicType TInt32
    IO ()


windowSetShadowWidth ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- left
    Int32 ->                                -- right
    Int32 ->                                -- top
    Int32 ->                                -- bottom
    m ()
windowSetShadowWidth _obj left right top bottom = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_set_shadow_width _obj' left right top bottom
    touchManagedPtr _obj
    return ()

-- method Window::set_skip_pager_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "skips_pager", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "skips_pager", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_skip_pager_hint" gdk_window_set_skip_pager_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- skips_pager : TBasicType TBoolean
    IO ()


windowSetSkipPagerHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- skips_pager
    m ()
windowSetSkipPagerHint _obj skips_pager = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let skips_pager' = (fromIntegral . fromEnum) skips_pager
    gdk_window_set_skip_pager_hint _obj' skips_pager'
    touchManagedPtr _obj
    return ()

-- method Window::set_skip_taskbar_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "skips_taskbar", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "skips_taskbar", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_skip_taskbar_hint" gdk_window_set_skip_taskbar_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- skips_taskbar : TBasicType TBoolean
    IO ()


windowSetSkipTaskbarHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- skips_taskbar
    m ()
windowSetSkipTaskbarHint _obj skips_taskbar = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let skips_taskbar' = (fromIntegral . fromEnum) skips_taskbar
    gdk_window_set_skip_taskbar_hint _obj' skips_taskbar'
    touchManagedPtr _obj
    return ()

-- method Window::set_source_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source", argType = TInterface "Gdk" "InputSource", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source", argType = TInterface "Gdk" "InputSource", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_source_events" gdk_window_set_source_events :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- source : TInterface "Gdk" "InputSource"
    CUInt ->                                -- event_mask : TInterface "Gdk" "EventMask"
    IO ()


windowSetSourceEvents ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    InputSource ->                          -- source
    [EventMask] ->                          -- event_mask
    m ()
windowSetSourceEvents _obj source event_mask = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let source' = (fromIntegral . fromEnum) source
    let event_mask' = gflagsToWord event_mask
    gdk_window_set_source_events _obj' source' event_mask'
    touchManagedPtr _obj
    return ()

-- method Window::set_startup_id
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_startup_id" gdk_window_set_startup_id :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CString ->                              -- startup_id : TBasicType TUTF8
    IO ()


windowSetStartupId ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- startup_id
    m ()
windowSetStartupId _obj startup_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    startup_id' <- textToCString startup_id
    gdk_window_set_startup_id _obj' startup_id'
    touchManagedPtr _obj
    freeMem startup_id'
    return ()

-- method Window::set_static_gravities
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "use_static", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "use_static", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_static_gravities" gdk_window_set_static_gravities :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- use_static : TBasicType TBoolean
    IO CInt

{-# DEPRECATED windowSetStaticGravities ["(Since version 3.16)","static gravities haven't worked on anything but X11","  for a long time."]#-}
windowSetStaticGravities ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- use_static
    m Bool
windowSetStaticGravities _obj use_static = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let use_static' = (fromIntegral . fromEnum) use_static
    result <- gdk_window_set_static_gravities _obj' use_static'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::set_support_multidevice
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "support_multidevice", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "support_multidevice", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_support_multidevice" gdk_window_set_support_multidevice :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- support_multidevice : TBasicType TBoolean
    IO ()


windowSetSupportMultidevice ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- support_multidevice
    m ()
windowSetSupportMultidevice _obj support_multidevice = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let support_multidevice' = (fromIntegral . fromEnum) support_multidevice
    gdk_window_set_support_multidevice _obj' support_multidevice'
    touchManagedPtr _obj
    return ()

-- method Window::set_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_title" gdk_window_set_title :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CString ->                              -- title : TBasicType TUTF8
    IO ()


windowSetTitle ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- title
    m ()
windowSetTitle _obj title = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    title' <- textToCString title
    gdk_window_set_title _obj' title'
    touchManagedPtr _obj
    freeMem title'
    return ()

-- method Window::set_transient_for
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_transient_for" gdk_window_set_transient_for :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Window ->                           -- parent : TInterface "Gdk" "Window"
    IO ()


windowSetTransientFor ::
    (MonadIO m, WindowK a, WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- parent
    m ()
windowSetTransientFor _obj parent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let parent' = unsafeManagedPtrCastPtr parent
    gdk_window_set_transient_for _obj' parent'
    touchManagedPtr _obj
    touchManagedPtr parent
    return ()

-- method Window::set_type_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Gdk" "WindowTypeHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Gdk" "WindowTypeHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_type_hint" gdk_window_set_type_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CUInt ->                                -- hint : TInterface "Gdk" "WindowTypeHint"
    IO ()


windowSetTypeHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    WindowTypeHint ->                       -- hint
    m ()
windowSetTypeHint _obj hint = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let hint' = (fromIntegral . fromEnum) hint
    gdk_window_set_type_hint _obj' hint'
    touchManagedPtr _obj
    return ()

-- method Window::set_urgency_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "urgent", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "urgent", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_urgency_hint" gdk_window_set_urgency_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    CInt ->                                 -- urgent : TBasicType TBoolean
    IO ()


windowSetUrgencyHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- urgent
    m ()
windowSetUrgencyHint _obj urgent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let urgent' = (fromIntegral . fromEnum) urgent
    gdk_window_set_urgency_hint _obj' urgent'
    touchManagedPtr _obj
    return ()

-- method Window::set_user_data
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_user_data" gdk_window_set_user_data :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr GObject.Object ->                   -- user_data : TInterface "GObject" "Object"
    IO ()


windowSetUserData ::
    (MonadIO m, WindowK a, GObject.ObjectK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- user_data
    m ()
windowSetUserData _obj user_data = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeUser_data <- case user_data of
        Nothing -> return nullPtr
        Just jUser_data -> do
            let jUser_data' = unsafeManagedPtrCastPtr jUser_data
            return jUser_data'
    gdk_window_set_user_data _obj' maybeUser_data
    touchManagedPtr _obj
    whenJust user_data touchManagedPtr
    return ()

-- method Window::shape_combine_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "shape_region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_shape_combine_region" gdk_window_shape_combine_region :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Cairo.Region ->                     -- shape_region : TInterface "cairo" "Region"
    Int32 ->                                -- offset_x : TBasicType TInt32
    Int32 ->                                -- offset_y : TBasicType TInt32
    IO ()


windowShapeCombineRegion ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.Region) ->                 -- shape_region
    Int32 ->                                -- offset_x
    Int32 ->                                -- offset_y
    m ()
windowShapeCombineRegion _obj shape_region offset_x offset_y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeShape_region <- case shape_region of
        Nothing -> return nullPtr
        Just jShape_region -> do
            let jShape_region' = unsafeManagedPtrGetPtr jShape_region
            return jShape_region'
    gdk_window_shape_combine_region _obj' maybeShape_region offset_x offset_y
    touchManagedPtr _obj
    whenJust shape_region touchManagedPtr
    return ()

-- method Window::show
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_show" gdk_window_show :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowShow ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowShow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_show _obj'
    touchManagedPtr _obj
    return ()

-- method Window::show_unraised
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_show_unraised" gdk_window_show_unraised :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowShowUnraised ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowShowUnraised _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_show_unraised _obj'
    touchManagedPtr _obj
    return ()

-- method Window::show_window_menu
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_show_window_menu" gdk_window_show_window_menu :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    Ptr Event ->                            -- event : TInterface "Gdk" "Event"
    IO CInt


windowShowWindowMenu ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Event ->                                -- event
    m Bool
windowShowWindowMenu _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    result <- gdk_window_show_window_menu _obj' event'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr event
    return result'

-- method Window::stick
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_stick" gdk_window_stick :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowStick ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowStick _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_stick _obj'
    touchManagedPtr _obj
    return ()

-- method Window::thaw_toplevel_updates_libgtk_only
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_thaw_toplevel_updates_libgtk_only" gdk_window_thaw_toplevel_updates_libgtk_only :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()

{-# DEPRECATED windowThawToplevelUpdatesLibgtkOnly ["(Since version 3.16)","This symbol was never meant to be used outside of GTK+"]#-}
windowThawToplevelUpdatesLibgtkOnly ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowThawToplevelUpdatesLibgtkOnly _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_thaw_toplevel_updates_libgtk_only _obj'
    touchManagedPtr _obj
    return ()

-- method Window::thaw_updates
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_thaw_updates" gdk_window_thaw_updates :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowThawUpdates ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowThawUpdates _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_thaw_updates _obj'
    touchManagedPtr _obj
    return ()

-- method Window::unfullscreen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_unfullscreen" gdk_window_unfullscreen :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowUnfullscreen ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowUnfullscreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_unfullscreen _obj'
    touchManagedPtr _obj
    return ()

-- method Window::unmaximize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_unmaximize" gdk_window_unmaximize :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowUnmaximize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowUnmaximize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_unmaximize _obj'
    touchManagedPtr _obj
    return ()

-- method Window::unstick
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_unstick" gdk_window_unstick :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowUnstick ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowUnstick _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_unstick _obj'
    touchManagedPtr _obj
    return ()

-- method Window::withdraw
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_withdraw" gdk_window_withdraw :: 
    Ptr Window ->                           -- _obj : TInterface "Gdk" "Window"
    IO ()


windowWithdraw ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowWithdraw _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gdk_window_withdraw _obj'
    touchManagedPtr _obj
    return ()

-- method Window::at_pointer
-- method type : MemberFunction
-- Args : [Arg {argName = "win_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "win_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_at_pointer" gdk_window_at_pointer :: 
    Ptr Int32 ->                            -- win_x : TBasicType TInt32
    Ptr Int32 ->                            -- win_y : TBasicType TInt32
    IO (Ptr Window)

{-# DEPRECATED windowAtPointer ["(Since version 3.0)","Use gdk_device_get_window_at_position() instead."]#-}
windowAtPointer ::
    (MonadIO m) =>
    m (Window,Int32,Int32)
windowAtPointer  = liftIO $ do
    win_x <- allocMem :: IO (Ptr Int32)
    win_y <- allocMem :: IO (Ptr Int32)
    result <- gdk_window_at_pointer win_x win_y
    result' <- (newObject Window) result
    win_x' <- peek win_x
    win_y' <- peek win_y
    freeMem win_x
    freeMem win_y
    return (result', win_x', win_y')

-- method Window::constrain_size
-- method type : MemberFunction
-- Args : [Arg {argName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "new_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_constrain_size" gdk_window_constrain_size :: 
    Ptr Geometry ->                         -- geometry : TInterface "Gdk" "Geometry"
    CUInt ->                                -- flags : TInterface "Gdk" "WindowHints"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    Ptr Int32 ->                            -- new_width : TBasicType TInt32
    Ptr Int32 ->                            -- new_height : TBasicType TInt32
    IO ()


windowConstrainSize ::
    (MonadIO m) =>
    Geometry ->                             -- geometry
    [WindowHints] ->                        -- flags
    Int32 ->                                -- width
    Int32 ->                                -- height
    m (Int32,Int32)
windowConstrainSize geometry flags width height = liftIO $ do
    let geometry' = unsafeManagedPtrGetPtr geometry
    let flags' = gflagsToWord flags
    new_width <- allocMem :: IO (Ptr Int32)
    new_height <- allocMem :: IO (Ptr Int32)
    gdk_window_constrain_size geometry' flags' width height new_width new_height
    new_width' <- peek new_width
    new_height' <- peek new_height
    touchManagedPtr geometry
    freeMem new_width
    freeMem new_height
    return (new_width', new_height')

-- method Window::process_all_updates
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_process_all_updates" gdk_window_process_all_updates :: 
    IO ()


windowProcessAllUpdates ::
    (MonadIO m) =>
    m ()
windowProcessAllUpdates  = liftIO $ do
    gdk_window_process_all_updates
    return ()

-- method Window::set_debug_updates
-- method type : MemberFunction
-- Args : [Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_window_set_debug_updates" gdk_window_set_debug_updates :: 
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetDebugUpdates ::
    (MonadIO m) =>
    Bool ->                                 -- setting
    m ()
windowSetDebugUpdates setting = liftIO $ do
    let setting' = (fromIntegral . fromEnum) setting
    gdk_window_set_debug_updates setting'
    return ()

-- signal Window::create-surface
type WindowCreateSurfaceCallback =
    Int32 ->
    Int32 ->
    IO Cairo.Surface

noWindowCreateSurfaceCallback :: Maybe WindowCreateSurfaceCallback
noWindowCreateSurfaceCallback = Nothing

type WindowCreateSurfaceCallbackC =
    Ptr () ->                               -- object
    Int32 ->
    Int32 ->
    Ptr () ->                               -- user_data
    IO (Ptr Cairo.Surface)

foreign import ccall "wrapper"
    mkWindowCreateSurfaceCallback :: WindowCreateSurfaceCallbackC -> IO (FunPtr WindowCreateSurfaceCallbackC)

windowCreateSurfaceClosure :: WindowCreateSurfaceCallback -> IO Closure
windowCreateSurfaceClosure cb = newCClosure =<< mkWindowCreateSurfaceCallback wrapped
    where wrapped = windowCreateSurfaceCallbackWrapper cb

windowCreateSurfaceCallbackWrapper ::
    WindowCreateSurfaceCallback ->
    Ptr () ->
    Int32 ->
    Int32 ->
    Ptr () ->
    IO (Ptr Cairo.Surface)
windowCreateSurfaceCallbackWrapper _cb _ width height _ = do
    result <- _cb  width height
    result' <- copyBoxed result
    return result'

onWindowCreateSurface :: (GObject a, MonadIO m) => a -> WindowCreateSurfaceCallback -> m SignalHandlerId
onWindowCreateSurface obj cb = liftIO $ connectWindowCreateSurface obj cb SignalConnectBefore
afterWindowCreateSurface :: (GObject a, MonadIO m) => a -> WindowCreateSurfaceCallback -> m SignalHandlerId
afterWindowCreateSurface obj cb = connectWindowCreateSurface obj cb SignalConnectAfter

connectWindowCreateSurface :: (GObject a, MonadIO m) =>
                              a -> WindowCreateSurfaceCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowCreateSurface obj cb after = liftIO $ do
    cb' <- mkWindowCreateSurfaceCallback (windowCreateSurfaceCallbackWrapper cb)
    connectSignalFunPtr obj "create-surface" cb' after

-- signal Window::from-embedder
type WindowFromEmbedderCallback =
    Double ->
    Double ->
    IO (Double,Double)

noWindowFromEmbedderCallback :: Maybe WindowFromEmbedderCallback
noWindowFromEmbedderCallback = Nothing

type WindowFromEmbedderCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr CDouble ->
    Ptr CDouble ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWindowFromEmbedderCallback :: WindowFromEmbedderCallbackC -> IO (FunPtr WindowFromEmbedderCallbackC)

windowFromEmbedderClosure :: WindowFromEmbedderCallback -> IO Closure
windowFromEmbedderClosure cb = newCClosure =<< mkWindowFromEmbedderCallback wrapped
    where wrapped = windowFromEmbedderCallbackWrapper cb

windowFromEmbedderCallbackWrapper ::
    WindowFromEmbedderCallback ->
    Ptr () ->
    CDouble ->
    CDouble ->
    Ptr CDouble ->
    Ptr CDouble ->
    Ptr () ->
    IO ()
windowFromEmbedderCallbackWrapper _cb _ embedder_x embedder_y offscreen_x offscreen_y _ = do
    let embedder_x' = realToFrac embedder_x
    let embedder_y' = realToFrac embedder_y
    (outoffscreen_x, outoffscreen_y) <- _cb  embedder_x' embedder_y'
    let outoffscreen_x' = realToFrac outoffscreen_x
    poke offscreen_x outoffscreen_x'
    let outoffscreen_y' = realToFrac outoffscreen_y
    poke offscreen_y outoffscreen_y'

onWindowFromEmbedder :: (GObject a, MonadIO m) => a -> WindowFromEmbedderCallback -> m SignalHandlerId
onWindowFromEmbedder obj cb = liftIO $ connectWindowFromEmbedder obj cb SignalConnectBefore
afterWindowFromEmbedder :: (GObject a, MonadIO m) => a -> WindowFromEmbedderCallback -> m SignalHandlerId
afterWindowFromEmbedder obj cb = connectWindowFromEmbedder obj cb SignalConnectAfter

connectWindowFromEmbedder :: (GObject a, MonadIO m) =>
                             a -> WindowFromEmbedderCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowFromEmbedder obj cb after = liftIO $ do
    cb' <- mkWindowFromEmbedderCallback (windowFromEmbedderCallbackWrapper cb)
    connectSignalFunPtr obj "from-embedder" cb' after

-- signal Window::pick-embedded-child
type WindowPickEmbeddedChildCallback =
    Double ->
    Double ->
    IO Window

noWindowPickEmbeddedChildCallback :: Maybe WindowPickEmbeddedChildCallback
noWindowPickEmbeddedChildCallback = Nothing

type WindowPickEmbeddedChildCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO (Ptr Window)

foreign import ccall "wrapper"
    mkWindowPickEmbeddedChildCallback :: WindowPickEmbeddedChildCallbackC -> IO (FunPtr WindowPickEmbeddedChildCallbackC)

windowPickEmbeddedChildClosure :: WindowPickEmbeddedChildCallback -> IO Closure
windowPickEmbeddedChildClosure cb = newCClosure =<< mkWindowPickEmbeddedChildCallback wrapped
    where wrapped = windowPickEmbeddedChildCallbackWrapper cb

windowPickEmbeddedChildCallbackWrapper ::
    WindowPickEmbeddedChildCallback ->
    Ptr () ->
    CDouble ->
    CDouble ->
    Ptr () ->
    IO (Ptr Window)
windowPickEmbeddedChildCallbackWrapper _cb _ x y _ = do
    let x' = realToFrac x
    let y' = realToFrac y
    result <- _cb  x' y'
    let result' = unsafeManagedPtrCastPtr result
    return result'

onWindowPickEmbeddedChild :: (GObject a, MonadIO m) => a -> WindowPickEmbeddedChildCallback -> m SignalHandlerId
onWindowPickEmbeddedChild obj cb = liftIO $ connectWindowPickEmbeddedChild obj cb SignalConnectBefore
afterWindowPickEmbeddedChild :: (GObject a, MonadIO m) => a -> WindowPickEmbeddedChildCallback -> m SignalHandlerId
afterWindowPickEmbeddedChild obj cb = connectWindowPickEmbeddedChild obj cb SignalConnectAfter

connectWindowPickEmbeddedChild :: (GObject a, MonadIO m) =>
                                  a -> WindowPickEmbeddedChildCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowPickEmbeddedChild obj cb after = liftIO $ do
    cb' <- mkWindowPickEmbeddedChildCallback (windowPickEmbeddedChildCallbackWrapper cb)
    connectSignalFunPtr obj "pick-embedded-child" cb' after

-- signal Window::to-embedder
type WindowToEmbedderCallback =
    Double ->
    Double ->
    IO (Double,Double)

noWindowToEmbedderCallback :: Maybe WindowToEmbedderCallback
noWindowToEmbedderCallback = Nothing

type WindowToEmbedderCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr CDouble ->
    Ptr CDouble ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWindowToEmbedderCallback :: WindowToEmbedderCallbackC -> IO (FunPtr WindowToEmbedderCallbackC)

windowToEmbedderClosure :: WindowToEmbedderCallback -> IO Closure
windowToEmbedderClosure cb = newCClosure =<< mkWindowToEmbedderCallback wrapped
    where wrapped = windowToEmbedderCallbackWrapper cb

windowToEmbedderCallbackWrapper ::
    WindowToEmbedderCallback ->
    Ptr () ->
    CDouble ->
    CDouble ->
    Ptr CDouble ->
    Ptr CDouble ->
    Ptr () ->
    IO ()
windowToEmbedderCallbackWrapper _cb _ offscreen_x offscreen_y embedder_x embedder_y _ = do
    let offscreen_x' = realToFrac offscreen_x
    let offscreen_y' = realToFrac offscreen_y
    (outembedder_x, outembedder_y) <- _cb  offscreen_x' offscreen_y'
    let outembedder_x' = realToFrac outembedder_x
    poke embedder_x outembedder_x'
    let outembedder_y' = realToFrac outembedder_y
    poke embedder_y outembedder_y'

onWindowToEmbedder :: (GObject a, MonadIO m) => a -> WindowToEmbedderCallback -> m SignalHandlerId
onWindowToEmbedder obj cb = liftIO $ connectWindowToEmbedder obj cb SignalConnectBefore
afterWindowToEmbedder :: (GObject a, MonadIO m) => a -> WindowToEmbedderCallback -> m SignalHandlerId
afterWindowToEmbedder obj cb = connectWindowToEmbedder obj cb SignalConnectAfter

connectWindowToEmbedder :: (GObject a, MonadIO m) =>
                           a -> WindowToEmbedderCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowToEmbedder obj cb after = liftIO $ do
    cb' <- mkWindowToEmbedderCallback (windowToEmbedderCallbackWrapper cb)
    connectSignalFunPtr obj "to-embedder" cb' after

-- struct WindowAttr
newtype WindowAttr = WindowAttr (ForeignPtr WindowAttr)
noWindowAttr :: Maybe WindowAttr
noWindowAttr = Nothing

windowAttrReadTitle :: WindowAttr -> IO T.Text
windowAttrReadTitle s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CString
    val' <- cstringToText val
    return val'

windowAttrReadEventMask :: WindowAttr -> IO Int32
windowAttrReadEventMask s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Int32
    return val

windowAttrReadX :: WindowAttr -> IO Int32
windowAttrReadX s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 12) :: IO Int32
    return val

windowAttrReadY :: WindowAttr -> IO Int32
windowAttrReadY s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int32
    return val

windowAttrReadWidth :: WindowAttr -> IO Int32
windowAttrReadWidth s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Int32
    return val

windowAttrReadHeight :: WindowAttr -> IO Int32
windowAttrReadHeight s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO Int32
    return val

windowAttrReadWclass :: WindowAttr -> IO WindowWindowClass
windowAttrReadWclass s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 28) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

windowAttrReadVisual :: WindowAttr -> IO Visual
windowAttrReadVisual s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Visual)
    val' <- (newObject Visual) val
    return val'

windowAttrReadWindowType :: WindowAttr -> IO WindowType
windowAttrReadWindowType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

windowAttrReadCursor :: WindowAttr -> IO Cursor
windowAttrReadCursor s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO (Ptr Cursor)
    val' <- (newObject Cursor) val
    return val'

windowAttrReadWmclassName :: WindowAttr -> IO T.Text
windowAttrReadWmclassName s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO CString
    val' <- cstringToText val
    return val'

windowAttrReadWmclassClass :: WindowAttr -> IO T.Text
windowAttrReadWmclassClass s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CString
    val' <- cstringToText val
    return val'

windowAttrReadOverrideRedirect :: WindowAttr -> IO Bool
windowAttrReadOverrideRedirect s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO CInt
    let val' = (/= 0) val
    return val'

windowAttrReadTypeHint :: WindowAttr -> IO WindowTypeHint
windowAttrReadTypeHint s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 76) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

-- Flags WindowAttributesType

data WindowAttributesType = 
      WindowAttributesTypeTitle
    | WindowAttributesTypeX
    | WindowAttributesTypeY
    | WindowAttributesTypeCursor
    | WindowAttributesTypeVisual
    | WindowAttributesTypeWmclass
    | WindowAttributesTypeNoredir
    | WindowAttributesTypeTypeHint
    | AnotherWindowAttributesType Int
    deriving (Show, Eq)

instance Enum WindowAttributesType where
    fromEnum WindowAttributesTypeTitle = 2
    fromEnum WindowAttributesTypeX = 4
    fromEnum WindowAttributesTypeY = 8
    fromEnum WindowAttributesTypeCursor = 16
    fromEnum WindowAttributesTypeVisual = 32
    fromEnum WindowAttributesTypeWmclass = 64
    fromEnum WindowAttributesTypeNoredir = 128
    fromEnum WindowAttributesTypeTypeHint = 256
    fromEnum (AnotherWindowAttributesType k) = k

    toEnum 2 = WindowAttributesTypeTitle
    toEnum 4 = WindowAttributesTypeX
    toEnum 8 = WindowAttributesTypeY
    toEnum 16 = WindowAttributesTypeCursor
    toEnum 32 = WindowAttributesTypeVisual
    toEnum 64 = WindowAttributesTypeWmclass
    toEnum 128 = WindowAttributesTypeNoredir
    toEnum 256 = WindowAttributesTypeTypeHint
    toEnum k = AnotherWindowAttributesType k

foreign import ccall "gdk_window_attributes_type_get_type" c_gdk_window_attributes_type_get_type :: 
    IO GType

instance BoxedEnum WindowAttributesType where
    boxedEnumType _ = c_gdk_window_attributes_type_get_type

instance IsGFlag WindowAttributesType

-- callback WindowChildFunc
windowChildFuncClosure :: WindowChildFunc -> IO Closure
windowChildFuncClosure cb = newCClosure =<< mkWindowChildFunc wrapped
    where wrapped = windowChildFuncWrapper Nothing cb

type WindowChildFuncC =
    Ptr Window ->
    Ptr () ->
    IO CInt

foreign import ccall "wrapper"
    mkWindowChildFunc :: WindowChildFuncC -> IO (FunPtr WindowChildFuncC)

type WindowChildFunc =
    Window ->
    IO Bool

noWindowChildFunc :: Maybe WindowChildFunc
noWindowChildFunc = Nothing

windowChildFuncWrapper ::
    Maybe (Ptr (FunPtr (WindowChildFuncC))) ->
    WindowChildFunc ->
    Ptr Window ->
    Ptr () ->
    IO CInt
windowChildFuncWrapper funptrptr _cb window _ = do
    window' <- (newObject Window) window
    result <- _cb  window'
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'

-- Enum WindowEdge

data WindowEdge = 
      WindowEdgeNorthWest
    | WindowEdgeNorth
    | WindowEdgeNorthEast
    | WindowEdgeWest
    | WindowEdgeEast
    | WindowEdgeSouthWest
    | WindowEdgeSouth
    | WindowEdgeSouthEast
    | AnotherWindowEdge Int
    deriving (Show, Eq)

instance Enum WindowEdge where
    fromEnum WindowEdgeNorthWest = 0
    fromEnum WindowEdgeNorth = 1
    fromEnum WindowEdgeNorthEast = 2
    fromEnum WindowEdgeWest = 3
    fromEnum WindowEdgeEast = 4
    fromEnum WindowEdgeSouthWest = 5
    fromEnum WindowEdgeSouth = 6
    fromEnum WindowEdgeSouthEast = 7
    fromEnum (AnotherWindowEdge k) = k

    toEnum 0 = WindowEdgeNorthWest
    toEnum 1 = WindowEdgeNorth
    toEnum 2 = WindowEdgeNorthEast
    toEnum 3 = WindowEdgeWest
    toEnum 4 = WindowEdgeEast
    toEnum 5 = WindowEdgeSouthWest
    toEnum 6 = WindowEdgeSouth
    toEnum 7 = WindowEdgeSouthEast
    toEnum k = AnotherWindowEdge k

foreign import ccall "gdk_window_edge_get_type" c_gdk_window_edge_get_type :: 
    IO GType

instance BoxedEnum WindowEdge where
    boxedEnumType _ = c_gdk_window_edge_get_type

-- Flags WindowHints

data WindowHints = 
      WindowHintsPos
    | WindowHintsMinSize
    | WindowHintsMaxSize
    | WindowHintsBaseSize
    | WindowHintsAspect
    | WindowHintsResizeInc
    | WindowHintsWinGravity
    | WindowHintsUserPos
    | WindowHintsUserSize
    | AnotherWindowHints Int
    deriving (Show, Eq)

instance Enum WindowHints where
    fromEnum WindowHintsPos = 1
    fromEnum WindowHintsMinSize = 2
    fromEnum WindowHintsMaxSize = 4
    fromEnum WindowHintsBaseSize = 8
    fromEnum WindowHintsAspect = 16
    fromEnum WindowHintsResizeInc = 32
    fromEnum WindowHintsWinGravity = 64
    fromEnum WindowHintsUserPos = 128
    fromEnum WindowHintsUserSize = 256
    fromEnum (AnotherWindowHints k) = k

    toEnum 1 = WindowHintsPos
    toEnum 2 = WindowHintsMinSize
    toEnum 4 = WindowHintsMaxSize
    toEnum 8 = WindowHintsBaseSize
    toEnum 16 = WindowHintsAspect
    toEnum 32 = WindowHintsResizeInc
    toEnum 64 = WindowHintsWinGravity
    toEnum 128 = WindowHintsUserPos
    toEnum 256 = WindowHintsUserSize
    toEnum k = AnotherWindowHints k

foreign import ccall "gdk_window_hints_get_type" c_gdk_window_hints_get_type :: 
    IO GType

instance BoxedEnum WindowHints where
    boxedEnumType _ = c_gdk_window_hints_get_type

instance IsGFlag WindowHints

-- callback WindowInvalidateHandlerFunc
windowInvalidateHandlerFuncClosure :: WindowInvalidateHandlerFunc -> IO Closure
windowInvalidateHandlerFuncClosure cb = newCClosure =<< mkWindowInvalidateHandlerFunc wrapped
    where wrapped = windowInvalidateHandlerFuncWrapper Nothing cb

type WindowInvalidateHandlerFuncC =
    Ptr Window ->
    Ptr Cairo.Region ->
    IO ()

foreign import ccall "wrapper"
    mkWindowInvalidateHandlerFunc :: WindowInvalidateHandlerFuncC -> IO (FunPtr WindowInvalidateHandlerFuncC)

type WindowInvalidateHandlerFunc =
    Window ->
    Cairo.Region ->
    IO ()

noWindowInvalidateHandlerFunc :: Maybe WindowInvalidateHandlerFunc
noWindowInvalidateHandlerFunc = Nothing

windowInvalidateHandlerFuncWrapper ::
    Maybe (Ptr (FunPtr (WindowInvalidateHandlerFuncC))) ->
    WindowInvalidateHandlerFunc ->
    Ptr Window ->
    Ptr Cairo.Region ->
    IO ()
windowInvalidateHandlerFuncWrapper funptrptr _cb window region = do
    window' <- (newObject Window) window
    region' <- (newBoxed Cairo.Region) region
    _cb  window' region'
    maybeReleaseFunPtr funptrptr

-- struct WindowRedirect
newtype WindowRedirect = WindowRedirect (ForeignPtr WindowRedirect)
noWindowRedirect :: Maybe WindowRedirect
noWindowRedirect = Nothing

-- Flags WindowState

data WindowState = 
      WindowStateWithdrawn
    | WindowStateIconified
    | WindowStateMaximized
    | WindowStateSticky
    | WindowStateFullscreen
    | WindowStateAbove
    | WindowStateBelow
    | WindowStateFocused
    | WindowStateTiled
    | AnotherWindowState Int
    deriving (Show, Eq)

instance Enum WindowState where
    fromEnum WindowStateWithdrawn = 1
    fromEnum WindowStateIconified = 2
    fromEnum WindowStateMaximized = 4
    fromEnum WindowStateSticky = 8
    fromEnum WindowStateFullscreen = 16
    fromEnum WindowStateAbove = 32
    fromEnum WindowStateBelow = 64
    fromEnum WindowStateFocused = 128
    fromEnum WindowStateTiled = 256
    fromEnum (AnotherWindowState k) = k

    toEnum 1 = WindowStateWithdrawn
    toEnum 2 = WindowStateIconified
    toEnum 4 = WindowStateMaximized
    toEnum 8 = WindowStateSticky
    toEnum 16 = WindowStateFullscreen
    toEnum 32 = WindowStateAbove
    toEnum 64 = WindowStateBelow
    toEnum 128 = WindowStateFocused
    toEnum 256 = WindowStateTiled
    toEnum k = AnotherWindowState k

foreign import ccall "gdk_window_state_get_type" c_gdk_window_state_get_type :: 
    IO GType

instance BoxedEnum WindowState where
    boxedEnumType _ = c_gdk_window_state_get_type

instance IsGFlag WindowState

-- Enum WindowType

data WindowType = 
      WindowTypeRoot
    | WindowTypeToplevel
    | WindowTypeChild
    | WindowTypeTemp
    | WindowTypeForeign
    | WindowTypeOffscreen
    | WindowTypeSubsurface
    | AnotherWindowType Int
    deriving (Show, Eq)

instance Enum WindowType where
    fromEnum WindowTypeRoot = 0
    fromEnum WindowTypeToplevel = 1
    fromEnum WindowTypeChild = 2
    fromEnum WindowTypeTemp = 3
    fromEnum WindowTypeForeign = 4
    fromEnum WindowTypeOffscreen = 5
    fromEnum WindowTypeSubsurface = 6
    fromEnum (AnotherWindowType k) = k

    toEnum 0 = WindowTypeRoot
    toEnum 1 = WindowTypeToplevel
    toEnum 2 = WindowTypeChild
    toEnum 3 = WindowTypeTemp
    toEnum 4 = WindowTypeForeign
    toEnum 5 = WindowTypeOffscreen
    toEnum 6 = WindowTypeSubsurface
    toEnum k = AnotherWindowType k

foreign import ccall "gdk_window_type_get_type" c_gdk_window_type_get_type :: 
    IO GType

instance BoxedEnum WindowType where
    boxedEnumType _ = c_gdk_window_type_get_type

-- Enum WindowTypeHint

data WindowTypeHint = 
      WindowTypeHintNormal
    | WindowTypeHintDialog
    | WindowTypeHintMenu
    | WindowTypeHintToolbar
    | WindowTypeHintSplashscreen
    | WindowTypeHintUtility
    | WindowTypeHintDock
    | WindowTypeHintDesktop
    | WindowTypeHintDropdownMenu
    | WindowTypeHintPopupMenu
    | WindowTypeHintTooltip
    | WindowTypeHintNotification
    | WindowTypeHintCombo
    | WindowTypeHintDnd
    | AnotherWindowTypeHint Int
    deriving (Show, Eq)

instance Enum WindowTypeHint where
    fromEnum WindowTypeHintNormal = 0
    fromEnum WindowTypeHintDialog = 1
    fromEnum WindowTypeHintMenu = 2
    fromEnum WindowTypeHintToolbar = 3
    fromEnum WindowTypeHintSplashscreen = 4
    fromEnum WindowTypeHintUtility = 5
    fromEnum WindowTypeHintDock = 6
    fromEnum WindowTypeHintDesktop = 7
    fromEnum WindowTypeHintDropdownMenu = 8
    fromEnum WindowTypeHintPopupMenu = 9
    fromEnum WindowTypeHintTooltip = 10
    fromEnum WindowTypeHintNotification = 11
    fromEnum WindowTypeHintCombo = 12
    fromEnum WindowTypeHintDnd = 13
    fromEnum (AnotherWindowTypeHint k) = k

    toEnum 0 = WindowTypeHintNormal
    toEnum 1 = WindowTypeHintDialog
    toEnum 2 = WindowTypeHintMenu
    toEnum 3 = WindowTypeHintToolbar
    toEnum 4 = WindowTypeHintSplashscreen
    toEnum 5 = WindowTypeHintUtility
    toEnum 6 = WindowTypeHintDock
    toEnum 7 = WindowTypeHintDesktop
    toEnum 8 = WindowTypeHintDropdownMenu
    toEnum 9 = WindowTypeHintPopupMenu
    toEnum 10 = WindowTypeHintTooltip
    toEnum 11 = WindowTypeHintNotification
    toEnum 12 = WindowTypeHintCombo
    toEnum 13 = WindowTypeHintDnd
    toEnum k = AnotherWindowTypeHint k

foreign import ccall "gdk_window_type_hint_get_type" c_gdk_window_type_hint_get_type :: 
    IO GType

instance BoxedEnum WindowTypeHint where
    boxedEnumType _ = c_gdk_window_type_hint_get_type

-- Enum WindowWindowClass

data WindowWindowClass = 
      WindowWindowClassInputOutput
    | WindowWindowClassInputOnly
    | AnotherWindowWindowClass Int
    deriving (Show, Eq)

instance Enum WindowWindowClass where
    fromEnum WindowWindowClassInputOutput = 0
    fromEnum WindowWindowClassInputOnly = 1
    fromEnum (AnotherWindowWindowClass k) = k

    toEnum 0 = WindowWindowClassInputOutput
    toEnum 1 = WindowWindowClassInputOnly
    toEnum k = AnotherWindowWindowClass k

foreign import ccall "gdk_window_window_class_get_type" c_gdk_window_window_class_get_type :: 
    IO GType

instance BoxedEnum WindowWindowClass where
    boxedEnumType _ = c_gdk_window_window_class_get_type

-- constant _BUTTON_MIDDLE

_BUTTON_MIDDLE :: Int32
_BUTTON_MIDDLE = 2
-- constant _BUTTON_PRIMARY

_BUTTON_PRIMARY :: Int32
_BUTTON_PRIMARY = 1
-- constant _BUTTON_SECONDARY

_BUTTON_SECONDARY :: Int32
_BUTTON_SECONDARY = 3
-- constant _CURRENT_TIME

_CURRENT_TIME :: Int32
_CURRENT_TIME = 0
-- constant _EVENT_PROPAGATE

_EVENT_PROPAGATE :: Bool
_EVENT_PROPAGATE = False
-- constant _EVENT_STOP

_EVENT_STOP :: Bool
_EVENT_STOP = True
-- constant _KEY_0

_KEY_0 :: Int32
_KEY_0 = 48
-- constant _KEY_1

_KEY_1 :: Int32
_KEY_1 = 49
-- constant _KEY_2

_KEY_2 :: Int32
_KEY_2 = 50
-- constant _KEY_3

_KEY_3 :: Int32
_KEY_3 = 51
-- constant _KEY_3270_AltCursor

_KEY_3270_AltCursor :: Int32
_KEY_3270_AltCursor = 64784
-- constant _KEY_3270_Attn

_KEY_3270_Attn :: Int32
_KEY_3270_Attn = 64782
-- constant _KEY_3270_BackTab

_KEY_3270_BackTab :: Int32
_KEY_3270_BackTab = 64773
-- constant _KEY_3270_ChangeScreen

_KEY_3270_ChangeScreen :: Int32
_KEY_3270_ChangeScreen = 64793
-- constant _KEY_3270_Copy

_KEY_3270_Copy :: Int32
_KEY_3270_Copy = 64789
-- constant _KEY_3270_CursorBlink

_KEY_3270_CursorBlink :: Int32
_KEY_3270_CursorBlink = 64783
-- constant _KEY_3270_CursorSelect

_KEY_3270_CursorSelect :: Int32
_KEY_3270_CursorSelect = 64796
-- constant _KEY_3270_DeleteWord

_KEY_3270_DeleteWord :: Int32
_KEY_3270_DeleteWord = 64794
-- constant _KEY_3270_Duplicate

_KEY_3270_Duplicate :: Int32
_KEY_3270_Duplicate = 64769
-- constant _KEY_3270_Enter

_KEY_3270_Enter :: Int32
_KEY_3270_Enter = 64798
-- constant _KEY_3270_EraseEOF

_KEY_3270_EraseEOF :: Int32
_KEY_3270_EraseEOF = 64774
-- constant _KEY_3270_EraseInput

_KEY_3270_EraseInput :: Int32
_KEY_3270_EraseInput = 64775
-- constant _KEY_3270_ExSelect

_KEY_3270_ExSelect :: Int32
_KEY_3270_ExSelect = 64795
-- constant _KEY_3270_FieldMark

_KEY_3270_FieldMark :: Int32
_KEY_3270_FieldMark = 64770
-- constant _KEY_3270_Ident

_KEY_3270_Ident :: Int32
_KEY_3270_Ident = 64787
-- constant _KEY_3270_Jump

_KEY_3270_Jump :: Int32
_KEY_3270_Jump = 64786
-- constant _KEY_3270_KeyClick

_KEY_3270_KeyClick :: Int32
_KEY_3270_KeyClick = 64785
-- constant _KEY_3270_Left2

_KEY_3270_Left2 :: Int32
_KEY_3270_Left2 = 64772
-- constant _KEY_3270_PA1

_KEY_3270_PA1 :: Int32
_KEY_3270_PA1 = 64778
-- constant _KEY_3270_PA2

_KEY_3270_PA2 :: Int32
_KEY_3270_PA2 = 64779
-- constant _KEY_3270_PA3

_KEY_3270_PA3 :: Int32
_KEY_3270_PA3 = 64780
-- constant _KEY_3270_Play

_KEY_3270_Play :: Int32
_KEY_3270_Play = 64790
-- constant _KEY_3270_PrintScreen

_KEY_3270_PrintScreen :: Int32
_KEY_3270_PrintScreen = 64797
-- constant _KEY_3270_Quit

_KEY_3270_Quit :: Int32
_KEY_3270_Quit = 64777
-- constant _KEY_3270_Record

_KEY_3270_Record :: Int32
_KEY_3270_Record = 64792
-- constant _KEY_3270_Reset

_KEY_3270_Reset :: Int32
_KEY_3270_Reset = 64776
-- constant _KEY_3270_Right2

_KEY_3270_Right2 :: Int32
_KEY_3270_Right2 = 64771
-- constant _KEY_3270_Rule

_KEY_3270_Rule :: Int32
_KEY_3270_Rule = 64788
-- constant _KEY_3270_Setup

_KEY_3270_Setup :: Int32
_KEY_3270_Setup = 64791
-- constant _KEY_3270_Test

_KEY_3270_Test :: Int32
_KEY_3270_Test = 64781
-- constant _KEY_4

_KEY_4 :: Int32
_KEY_4 = 52
-- constant _KEY_5

_KEY_5 :: Int32
_KEY_5 = 53
-- constant _KEY_6

_KEY_6 :: Int32
_KEY_6 = 54
-- constant _KEY_7

_KEY_7 :: Int32
_KEY_7 = 55
-- constant _KEY_8

_KEY_8 :: Int32
_KEY_8 = 56
-- constant _KEY_9

_KEY_9 :: Int32
_KEY_9 = 57
-- constant _KEY_A

_KEY_A :: Int32
_KEY_A = 65
-- constant _KEY_AE

_KEY_AE :: Int32
_KEY_AE = 198
-- constant _KEY_Aacute

_KEY_Aacute :: Int32
_KEY_Aacute = 193
-- constant _KEY_Abelowdot

_KEY_Abelowdot :: Int32
_KEY_Abelowdot = 16785056
-- constant _KEY_Abreve

_KEY_Abreve :: Int32
_KEY_Abreve = 451
-- constant _KEY_Abreveacute

_KEY_Abreveacute :: Int32
_KEY_Abreveacute = 16785070
-- constant _KEY_Abrevebelowdot

_KEY_Abrevebelowdot :: Int32
_KEY_Abrevebelowdot = 16785078
-- constant _KEY_Abrevegrave

_KEY_Abrevegrave :: Int32
_KEY_Abrevegrave = 16785072
-- constant _KEY_Abrevehook

_KEY_Abrevehook :: Int32
_KEY_Abrevehook = 16785074
-- constant _KEY_Abrevetilde

_KEY_Abrevetilde :: Int32
_KEY_Abrevetilde = 16785076
-- constant _KEY_AccessX_Enable

_KEY_AccessX_Enable :: Int32
_KEY_AccessX_Enable = 65136
-- constant _KEY_AccessX_Feedback_Enable

_KEY_AccessX_Feedback_Enable :: Int32
_KEY_AccessX_Feedback_Enable = 65137
-- constant _KEY_Acircumflex

_KEY_Acircumflex :: Int32
_KEY_Acircumflex = 194
-- constant _KEY_Acircumflexacute

_KEY_Acircumflexacute :: Int32
_KEY_Acircumflexacute = 16785060
-- constant _KEY_Acircumflexbelowdot

_KEY_Acircumflexbelowdot :: Int32
_KEY_Acircumflexbelowdot = 16785068
-- constant _KEY_Acircumflexgrave

_KEY_Acircumflexgrave :: Int32
_KEY_Acircumflexgrave = 16785062
-- constant _KEY_Acircumflexhook

_KEY_Acircumflexhook :: Int32
_KEY_Acircumflexhook = 16785064
-- constant _KEY_Acircumflextilde

_KEY_Acircumflextilde :: Int32
_KEY_Acircumflextilde = 16785066
-- constant _KEY_AddFavorite

_KEY_AddFavorite :: Int32
_KEY_AddFavorite = 269025081
-- constant _KEY_Adiaeresis

_KEY_Adiaeresis :: Int32
_KEY_Adiaeresis = 196
-- constant _KEY_Agrave

_KEY_Agrave :: Int32
_KEY_Agrave = 192
-- constant _KEY_Ahook

_KEY_Ahook :: Int32
_KEY_Ahook = 16785058
-- constant _KEY_Alt_L

_KEY_Alt_L :: Int32
_KEY_Alt_L = 65513
-- constant _KEY_Alt_R

_KEY_Alt_R :: Int32
_KEY_Alt_R = 65514
-- constant _KEY_Amacron

_KEY_Amacron :: Int32
_KEY_Amacron = 960
-- constant _KEY_Aogonek

_KEY_Aogonek :: Int32
_KEY_Aogonek = 417
-- constant _KEY_ApplicationLeft

_KEY_ApplicationLeft :: Int32
_KEY_ApplicationLeft = 269025104
-- constant _KEY_ApplicationRight

_KEY_ApplicationRight :: Int32
_KEY_ApplicationRight = 269025105
-- constant _KEY_Arabic_0

_KEY_Arabic_0 :: Int32
_KEY_Arabic_0 = 16778848
-- constant _KEY_Arabic_1

_KEY_Arabic_1 :: Int32
_KEY_Arabic_1 = 16778849
-- constant _KEY_Arabic_2

_KEY_Arabic_2 :: Int32
_KEY_Arabic_2 = 16778850
-- constant _KEY_Arabic_3

_KEY_Arabic_3 :: Int32
_KEY_Arabic_3 = 16778851
-- constant _KEY_Arabic_4

_KEY_Arabic_4 :: Int32
_KEY_Arabic_4 = 16778852
-- constant _KEY_Arabic_5

_KEY_Arabic_5 :: Int32
_KEY_Arabic_5 = 16778853
-- constant _KEY_Arabic_6

_KEY_Arabic_6 :: Int32
_KEY_Arabic_6 = 16778854
-- constant _KEY_Arabic_7

_KEY_Arabic_7 :: Int32
_KEY_Arabic_7 = 16778855
-- constant _KEY_Arabic_8

_KEY_Arabic_8 :: Int32
_KEY_Arabic_8 = 16778856
-- constant _KEY_Arabic_9

_KEY_Arabic_9 :: Int32
_KEY_Arabic_9 = 16778857
-- constant _KEY_Arabic_ain

_KEY_Arabic_ain :: Int32
_KEY_Arabic_ain = 1497
-- constant _KEY_Arabic_alef

_KEY_Arabic_alef :: Int32
_KEY_Arabic_alef = 1479
-- constant _KEY_Arabic_alefmaksura

_KEY_Arabic_alefmaksura :: Int32
_KEY_Arabic_alefmaksura = 1513
-- constant _KEY_Arabic_beh

_KEY_Arabic_beh :: Int32
_KEY_Arabic_beh = 1480
-- constant _KEY_Arabic_comma

_KEY_Arabic_comma :: Int32
_KEY_Arabic_comma = 1452
-- constant _KEY_Arabic_dad

_KEY_Arabic_dad :: Int32
_KEY_Arabic_dad = 1494
-- constant _KEY_Arabic_dal

_KEY_Arabic_dal :: Int32
_KEY_Arabic_dal = 1487
-- constant _KEY_Arabic_damma

_KEY_Arabic_damma :: Int32
_KEY_Arabic_damma = 1519
-- constant _KEY_Arabic_dammatan

_KEY_Arabic_dammatan :: Int32
_KEY_Arabic_dammatan = 1516
-- constant _KEY_Arabic_ddal

_KEY_Arabic_ddal :: Int32
_KEY_Arabic_ddal = 16778888
-- constant _KEY_Arabic_farsi_yeh

_KEY_Arabic_farsi_yeh :: Int32
_KEY_Arabic_farsi_yeh = 16778956
-- constant _KEY_Arabic_fatha

_KEY_Arabic_fatha :: Int32
_KEY_Arabic_fatha = 1518
-- constant _KEY_Arabic_fathatan

_KEY_Arabic_fathatan :: Int32
_KEY_Arabic_fathatan = 1515
-- constant _KEY_Arabic_feh

_KEY_Arabic_feh :: Int32
_KEY_Arabic_feh = 1505
-- constant _KEY_Arabic_fullstop

_KEY_Arabic_fullstop :: Int32
_KEY_Arabic_fullstop = 16778964
-- constant _KEY_Arabic_gaf

_KEY_Arabic_gaf :: Int32
_KEY_Arabic_gaf = 16778927
-- constant _KEY_Arabic_ghain

_KEY_Arabic_ghain :: Int32
_KEY_Arabic_ghain = 1498
-- constant _KEY_Arabic_ha

_KEY_Arabic_ha :: Int32
_KEY_Arabic_ha = 1511
-- constant _KEY_Arabic_hah

_KEY_Arabic_hah :: Int32
_KEY_Arabic_hah = 1485
-- constant _KEY_Arabic_hamza

_KEY_Arabic_hamza :: Int32
_KEY_Arabic_hamza = 1473
-- constant _KEY_Arabic_hamza_above

_KEY_Arabic_hamza_above :: Int32
_KEY_Arabic_hamza_above = 16778836
-- constant _KEY_Arabic_hamza_below

_KEY_Arabic_hamza_below :: Int32
_KEY_Arabic_hamza_below = 16778837
-- constant _KEY_Arabic_hamzaonalef

_KEY_Arabic_hamzaonalef :: Int32
_KEY_Arabic_hamzaonalef = 1475
-- constant _KEY_Arabic_hamzaonwaw

_KEY_Arabic_hamzaonwaw :: Int32
_KEY_Arabic_hamzaonwaw = 1476
-- constant _KEY_Arabic_hamzaonyeh

_KEY_Arabic_hamzaonyeh :: Int32
_KEY_Arabic_hamzaonyeh = 1478
-- constant _KEY_Arabic_hamzaunderalef

_KEY_Arabic_hamzaunderalef :: Int32
_KEY_Arabic_hamzaunderalef = 1477
-- constant _KEY_Arabic_heh

_KEY_Arabic_heh :: Int32
_KEY_Arabic_heh = 1511
-- constant _KEY_Arabic_heh_doachashmee

_KEY_Arabic_heh_doachashmee :: Int32
_KEY_Arabic_heh_doachashmee = 16778942
-- constant _KEY_Arabic_heh_goal

_KEY_Arabic_heh_goal :: Int32
_KEY_Arabic_heh_goal = 16778945
-- constant _KEY_Arabic_jeem

_KEY_Arabic_jeem :: Int32
_KEY_Arabic_jeem = 1484
-- constant _KEY_Arabic_jeh

_KEY_Arabic_jeh :: Int32
_KEY_Arabic_jeh = 16778904
-- constant _KEY_Arabic_kaf

_KEY_Arabic_kaf :: Int32
_KEY_Arabic_kaf = 1507
-- constant _KEY_Arabic_kasra

_KEY_Arabic_kasra :: Int32
_KEY_Arabic_kasra = 1520
-- constant _KEY_Arabic_kasratan

_KEY_Arabic_kasratan :: Int32
_KEY_Arabic_kasratan = 1517
-- constant _KEY_Arabic_keheh

_KEY_Arabic_keheh :: Int32
_KEY_Arabic_keheh = 16778921
-- constant _KEY_Arabic_khah

_KEY_Arabic_khah :: Int32
_KEY_Arabic_khah = 1486
-- constant _KEY_Arabic_lam

_KEY_Arabic_lam :: Int32
_KEY_Arabic_lam = 1508
-- constant _KEY_Arabic_madda_above

_KEY_Arabic_madda_above :: Int32
_KEY_Arabic_madda_above = 16778835
-- constant _KEY_Arabic_maddaonalef

_KEY_Arabic_maddaonalef :: Int32
_KEY_Arabic_maddaonalef = 1474
-- constant _KEY_Arabic_meem

_KEY_Arabic_meem :: Int32
_KEY_Arabic_meem = 1509
-- constant _KEY_Arabic_noon

_KEY_Arabic_noon :: Int32
_KEY_Arabic_noon = 1510
-- constant _KEY_Arabic_noon_ghunna

_KEY_Arabic_noon_ghunna :: Int32
_KEY_Arabic_noon_ghunna = 16778938
-- constant _KEY_Arabic_peh

_KEY_Arabic_peh :: Int32
_KEY_Arabic_peh = 16778878
-- constant _KEY_Arabic_percent

_KEY_Arabic_percent :: Int32
_KEY_Arabic_percent = 16778858
-- constant _KEY_Arabic_qaf

_KEY_Arabic_qaf :: Int32
_KEY_Arabic_qaf = 1506
-- constant _KEY_Arabic_question_mark

_KEY_Arabic_question_mark :: Int32
_KEY_Arabic_question_mark = 1471
-- constant _KEY_Arabic_ra

_KEY_Arabic_ra :: Int32
_KEY_Arabic_ra = 1489
-- constant _KEY_Arabic_rreh

_KEY_Arabic_rreh :: Int32
_KEY_Arabic_rreh = 16778897
-- constant _KEY_Arabic_sad

_KEY_Arabic_sad :: Int32
_KEY_Arabic_sad = 1493
-- constant _KEY_Arabic_seen

_KEY_Arabic_seen :: Int32
_KEY_Arabic_seen = 1491
-- constant _KEY_Arabic_semicolon

_KEY_Arabic_semicolon :: Int32
_KEY_Arabic_semicolon = 1467
-- constant _KEY_Arabic_shadda

_KEY_Arabic_shadda :: Int32
_KEY_Arabic_shadda = 1521
-- constant _KEY_Arabic_sheen

_KEY_Arabic_sheen :: Int32
_KEY_Arabic_sheen = 1492
-- constant _KEY_Arabic_sukun

_KEY_Arabic_sukun :: Int32
_KEY_Arabic_sukun = 1522
-- constant _KEY_Arabic_superscript_alef

_KEY_Arabic_superscript_alef :: Int32
_KEY_Arabic_superscript_alef = 16778864
-- constant _KEY_Arabic_switch

_KEY_Arabic_switch :: Int32
_KEY_Arabic_switch = 65406
-- constant _KEY_Arabic_tah

_KEY_Arabic_tah :: Int32
_KEY_Arabic_tah = 1495
-- constant _KEY_Arabic_tatweel

_KEY_Arabic_tatweel :: Int32
_KEY_Arabic_tatweel = 1504
-- constant _KEY_Arabic_tcheh

_KEY_Arabic_tcheh :: Int32
_KEY_Arabic_tcheh = 16778886
-- constant _KEY_Arabic_teh

_KEY_Arabic_teh :: Int32
_KEY_Arabic_teh = 1482
-- constant _KEY_Arabic_tehmarbuta

_KEY_Arabic_tehmarbuta :: Int32
_KEY_Arabic_tehmarbuta = 1481
-- constant _KEY_Arabic_thal

_KEY_Arabic_thal :: Int32
_KEY_Arabic_thal = 1488
-- constant _KEY_Arabic_theh

_KEY_Arabic_theh :: Int32
_KEY_Arabic_theh = 1483
-- constant _KEY_Arabic_tteh

_KEY_Arabic_tteh :: Int32
_KEY_Arabic_tteh = 16778873
-- constant _KEY_Arabic_veh

_KEY_Arabic_veh :: Int32
_KEY_Arabic_veh = 16778916
-- constant _KEY_Arabic_waw

_KEY_Arabic_waw :: Int32
_KEY_Arabic_waw = 1512
-- constant _KEY_Arabic_yeh

_KEY_Arabic_yeh :: Int32
_KEY_Arabic_yeh = 1514
-- constant _KEY_Arabic_yeh_baree

_KEY_Arabic_yeh_baree :: Int32
_KEY_Arabic_yeh_baree = 16778962
-- constant _KEY_Arabic_zah

_KEY_Arabic_zah :: Int32
_KEY_Arabic_zah = 1496
-- constant _KEY_Arabic_zain

_KEY_Arabic_zain :: Int32
_KEY_Arabic_zain = 1490
-- constant _KEY_Aring

_KEY_Aring :: Int32
_KEY_Aring = 197
-- constant _KEY_Armenian_AT

_KEY_Armenian_AT :: Int32
_KEY_Armenian_AT = 16778552
-- constant _KEY_Armenian_AYB

_KEY_Armenian_AYB :: Int32
_KEY_Armenian_AYB = 16778545
-- constant _KEY_Armenian_BEN

_KEY_Armenian_BEN :: Int32
_KEY_Armenian_BEN = 16778546
-- constant _KEY_Armenian_CHA

_KEY_Armenian_CHA :: Int32
_KEY_Armenian_CHA = 16778569
-- constant _KEY_Armenian_DA

_KEY_Armenian_DA :: Int32
_KEY_Armenian_DA = 16778548
-- constant _KEY_Armenian_DZA

_KEY_Armenian_DZA :: Int32
_KEY_Armenian_DZA = 16778561
-- constant _KEY_Armenian_E

_KEY_Armenian_E :: Int32
_KEY_Armenian_E = 16778551
-- constant _KEY_Armenian_FE

_KEY_Armenian_FE :: Int32
_KEY_Armenian_FE = 16778582
-- constant _KEY_Armenian_GHAT

_KEY_Armenian_GHAT :: Int32
_KEY_Armenian_GHAT = 16778562
-- constant _KEY_Armenian_GIM

_KEY_Armenian_GIM :: Int32
_KEY_Armenian_GIM = 16778547
-- constant _KEY_Armenian_HI

_KEY_Armenian_HI :: Int32
_KEY_Armenian_HI = 16778565
-- constant _KEY_Armenian_HO

_KEY_Armenian_HO :: Int32
_KEY_Armenian_HO = 16778560
-- constant _KEY_Armenian_INI

_KEY_Armenian_INI :: Int32
_KEY_Armenian_INI = 16778555
-- constant _KEY_Armenian_JE

_KEY_Armenian_JE :: Int32
_KEY_Armenian_JE = 16778571
-- constant _KEY_Armenian_KE

_KEY_Armenian_KE :: Int32
_KEY_Armenian_KE = 16778580
-- constant _KEY_Armenian_KEN

_KEY_Armenian_KEN :: Int32
_KEY_Armenian_KEN = 16778559
-- constant _KEY_Armenian_KHE

_KEY_Armenian_KHE :: Int32
_KEY_Armenian_KHE = 16778557
-- constant _KEY_Armenian_LYUN

_KEY_Armenian_LYUN :: Int32
_KEY_Armenian_LYUN = 16778556
-- constant _KEY_Armenian_MEN

_KEY_Armenian_MEN :: Int32
_KEY_Armenian_MEN = 16778564
-- constant _KEY_Armenian_NU

_KEY_Armenian_NU :: Int32
_KEY_Armenian_NU = 16778566
-- constant _KEY_Armenian_O

_KEY_Armenian_O :: Int32
_KEY_Armenian_O = 16778581
-- constant _KEY_Armenian_PE

_KEY_Armenian_PE :: Int32
_KEY_Armenian_PE = 16778570
-- constant _KEY_Armenian_PYUR

_KEY_Armenian_PYUR :: Int32
_KEY_Armenian_PYUR = 16778579
-- constant _KEY_Armenian_RA

_KEY_Armenian_RA :: Int32
_KEY_Armenian_RA = 16778572
-- constant _KEY_Armenian_RE

_KEY_Armenian_RE :: Int32
_KEY_Armenian_RE = 16778576
-- constant _KEY_Armenian_SE

_KEY_Armenian_SE :: Int32
_KEY_Armenian_SE = 16778573
-- constant _KEY_Armenian_SHA

_KEY_Armenian_SHA :: Int32
_KEY_Armenian_SHA = 16778567
-- constant _KEY_Armenian_TCHE

_KEY_Armenian_TCHE :: Int32
_KEY_Armenian_TCHE = 16778563
-- constant _KEY_Armenian_TO

_KEY_Armenian_TO :: Int32
_KEY_Armenian_TO = 16778553
-- constant _KEY_Armenian_TSA

_KEY_Armenian_TSA :: Int32
_KEY_Armenian_TSA = 16778558
-- constant _KEY_Armenian_TSO

_KEY_Armenian_TSO :: Int32
_KEY_Armenian_TSO = 16778577
-- constant _KEY_Armenian_TYUN

_KEY_Armenian_TYUN :: Int32
_KEY_Armenian_TYUN = 16778575
-- constant _KEY_Armenian_VEV

_KEY_Armenian_VEV :: Int32
_KEY_Armenian_VEV = 16778574
-- constant _KEY_Armenian_VO

_KEY_Armenian_VO :: Int32
_KEY_Armenian_VO = 16778568
-- constant _KEY_Armenian_VYUN

_KEY_Armenian_VYUN :: Int32
_KEY_Armenian_VYUN = 16778578
-- constant _KEY_Armenian_YECH

_KEY_Armenian_YECH :: Int32
_KEY_Armenian_YECH = 16778549
-- constant _KEY_Armenian_ZA

_KEY_Armenian_ZA :: Int32
_KEY_Armenian_ZA = 16778550
-- constant _KEY_Armenian_ZHE

_KEY_Armenian_ZHE :: Int32
_KEY_Armenian_ZHE = 16778554
-- constant _KEY_Armenian_accent

_KEY_Armenian_accent :: Int32
_KEY_Armenian_accent = 16778587
-- constant _KEY_Armenian_amanak

_KEY_Armenian_amanak :: Int32
_KEY_Armenian_amanak = 16778588
-- constant _KEY_Armenian_apostrophe

_KEY_Armenian_apostrophe :: Int32
_KEY_Armenian_apostrophe = 16778586
-- constant _KEY_Armenian_at

_KEY_Armenian_at :: Int32
_KEY_Armenian_at = 16778600
-- constant _KEY_Armenian_ayb

_KEY_Armenian_ayb :: Int32
_KEY_Armenian_ayb = 16778593
-- constant _KEY_Armenian_ben

_KEY_Armenian_ben :: Int32
_KEY_Armenian_ben = 16778594
-- constant _KEY_Armenian_but

_KEY_Armenian_but :: Int32
_KEY_Armenian_but = 16778589
-- constant _KEY_Armenian_cha

_KEY_Armenian_cha :: Int32
_KEY_Armenian_cha = 16778617
-- constant _KEY_Armenian_da

_KEY_Armenian_da :: Int32
_KEY_Armenian_da = 16778596
-- constant _KEY_Armenian_dza

_KEY_Armenian_dza :: Int32
_KEY_Armenian_dza = 16778609
-- constant _KEY_Armenian_e

_KEY_Armenian_e :: Int32
_KEY_Armenian_e = 16778599
-- constant _KEY_Armenian_exclam

_KEY_Armenian_exclam :: Int32
_KEY_Armenian_exclam = 16778588
-- constant _KEY_Armenian_fe

_KEY_Armenian_fe :: Int32
_KEY_Armenian_fe = 16778630
-- constant _KEY_Armenian_full_stop

_KEY_Armenian_full_stop :: Int32
_KEY_Armenian_full_stop = 16778633
-- constant _KEY_Armenian_ghat

_KEY_Armenian_ghat :: Int32
_KEY_Armenian_ghat = 16778610
-- constant _KEY_Armenian_gim

_KEY_Armenian_gim :: Int32
_KEY_Armenian_gim = 16778595
-- constant _KEY_Armenian_hi

_KEY_Armenian_hi :: Int32
_KEY_Armenian_hi = 16778613
-- constant _KEY_Armenian_ho

_KEY_Armenian_ho :: Int32
_KEY_Armenian_ho = 16778608
-- constant _KEY_Armenian_hyphen

_KEY_Armenian_hyphen :: Int32
_KEY_Armenian_hyphen = 16778634
-- constant _KEY_Armenian_ini

_KEY_Armenian_ini :: Int32
_KEY_Armenian_ini = 16778603
-- constant _KEY_Armenian_je

_KEY_Armenian_je :: Int32
_KEY_Armenian_je = 16778619
-- constant _KEY_Armenian_ke

_KEY_Armenian_ke :: Int32
_KEY_Armenian_ke = 16778628
-- constant _KEY_Armenian_ken

_KEY_Armenian_ken :: Int32
_KEY_Armenian_ken = 16778607
-- constant _KEY_Armenian_khe

_KEY_Armenian_khe :: Int32
_KEY_Armenian_khe = 16778605
-- constant _KEY_Armenian_ligature_ew

_KEY_Armenian_ligature_ew :: Int32
_KEY_Armenian_ligature_ew = 16778631
-- constant _KEY_Armenian_lyun

_KEY_Armenian_lyun :: Int32
_KEY_Armenian_lyun = 16778604
-- constant _KEY_Armenian_men

_KEY_Armenian_men :: Int32
_KEY_Armenian_men = 16778612
-- constant _KEY_Armenian_nu

_KEY_Armenian_nu :: Int32
_KEY_Armenian_nu = 16778614
-- constant _KEY_Armenian_o

_KEY_Armenian_o :: Int32
_KEY_Armenian_o = 16778629
-- constant _KEY_Armenian_paruyk

_KEY_Armenian_paruyk :: Int32
_KEY_Armenian_paruyk = 16778590
-- constant _KEY_Armenian_pe

_KEY_Armenian_pe :: Int32
_KEY_Armenian_pe = 16778618
-- constant _KEY_Armenian_pyur

_KEY_Armenian_pyur :: Int32
_KEY_Armenian_pyur = 16778627
-- constant _KEY_Armenian_question

_KEY_Armenian_question :: Int32
_KEY_Armenian_question = 16778590
-- constant _KEY_Armenian_ra

_KEY_Armenian_ra :: Int32
_KEY_Armenian_ra = 16778620
-- constant _KEY_Armenian_re

_KEY_Armenian_re :: Int32
_KEY_Armenian_re = 16778624
-- constant _KEY_Armenian_se

_KEY_Armenian_se :: Int32
_KEY_Armenian_se = 16778621
-- constant _KEY_Armenian_separation_mark

_KEY_Armenian_separation_mark :: Int32
_KEY_Armenian_separation_mark = 16778589
-- constant _KEY_Armenian_sha

_KEY_Armenian_sha :: Int32
_KEY_Armenian_sha = 16778615
-- constant _KEY_Armenian_shesht

_KEY_Armenian_shesht :: Int32
_KEY_Armenian_shesht = 16778587
-- constant _KEY_Armenian_tche

_KEY_Armenian_tche :: Int32
_KEY_Armenian_tche = 16778611
-- constant _KEY_Armenian_to

_KEY_Armenian_to :: Int32
_KEY_Armenian_to = 16778601
-- constant _KEY_Armenian_tsa

_KEY_Armenian_tsa :: Int32
_KEY_Armenian_tsa = 16778606
-- constant _KEY_Armenian_tso

_KEY_Armenian_tso :: Int32
_KEY_Armenian_tso = 16778625
-- constant _KEY_Armenian_tyun

_KEY_Armenian_tyun :: Int32
_KEY_Armenian_tyun = 16778623
-- constant _KEY_Armenian_verjaket

_KEY_Armenian_verjaket :: Int32
_KEY_Armenian_verjaket = 16778633
-- constant _KEY_Armenian_vev

_KEY_Armenian_vev :: Int32
_KEY_Armenian_vev = 16778622
-- constant _KEY_Armenian_vo

_KEY_Armenian_vo :: Int32
_KEY_Armenian_vo = 16778616
-- constant _KEY_Armenian_vyun

_KEY_Armenian_vyun :: Int32
_KEY_Armenian_vyun = 16778626
-- constant _KEY_Armenian_yech

_KEY_Armenian_yech :: Int32
_KEY_Armenian_yech = 16778597
-- constant _KEY_Armenian_yentamna

_KEY_Armenian_yentamna :: Int32
_KEY_Armenian_yentamna = 16778634
-- constant _KEY_Armenian_za

_KEY_Armenian_za :: Int32
_KEY_Armenian_za = 16778598
-- constant _KEY_Armenian_zhe

_KEY_Armenian_zhe :: Int32
_KEY_Armenian_zhe = 16778602
-- constant _KEY_Atilde

_KEY_Atilde :: Int32
_KEY_Atilde = 195
-- constant _KEY_AudibleBell_Enable

_KEY_AudibleBell_Enable :: Int32
_KEY_AudibleBell_Enable = 65146
-- constant _KEY_AudioCycleTrack

_KEY_AudioCycleTrack :: Int32
_KEY_AudioCycleTrack = 269025179
-- constant _KEY_AudioForward

_KEY_AudioForward :: Int32
_KEY_AudioForward = 269025175
-- constant _KEY_AudioLowerVolume

_KEY_AudioLowerVolume :: Int32
_KEY_AudioLowerVolume = 269025041
-- constant _KEY_AudioMedia

_KEY_AudioMedia :: Int32
_KEY_AudioMedia = 269025074
-- constant _KEY_AudioMicMute

_KEY_AudioMicMute :: Int32
_KEY_AudioMicMute = 269025202
-- constant _KEY_AudioMute

_KEY_AudioMute :: Int32
_KEY_AudioMute = 269025042
-- constant _KEY_AudioNext

_KEY_AudioNext :: Int32
_KEY_AudioNext = 269025047
-- constant _KEY_AudioPause

_KEY_AudioPause :: Int32
_KEY_AudioPause = 269025073
-- constant _KEY_AudioPlay

_KEY_AudioPlay :: Int32
_KEY_AudioPlay = 269025044
-- constant _KEY_AudioPrev

_KEY_AudioPrev :: Int32
_KEY_AudioPrev = 269025046
-- constant _KEY_AudioRaiseVolume

_KEY_AudioRaiseVolume :: Int32
_KEY_AudioRaiseVolume = 269025043
-- constant _KEY_AudioRandomPlay

_KEY_AudioRandomPlay :: Int32
_KEY_AudioRandomPlay = 269025177
-- constant _KEY_AudioRecord

_KEY_AudioRecord :: Int32
_KEY_AudioRecord = 269025052
-- constant _KEY_AudioRepeat

_KEY_AudioRepeat :: Int32
_KEY_AudioRepeat = 269025176
-- constant _KEY_AudioRewind

_KEY_AudioRewind :: Int32
_KEY_AudioRewind = 269025086
-- constant _KEY_AudioStop

_KEY_AudioStop :: Int32
_KEY_AudioStop = 269025045
-- constant _KEY_Away

_KEY_Away :: Int32
_KEY_Away = 269025165
-- constant _KEY_B

_KEY_B :: Int32
_KEY_B = 66
-- constant _KEY_Babovedot

_KEY_Babovedot :: Int32
_KEY_Babovedot = 16784898
-- constant _KEY_Back

_KEY_Back :: Int32
_KEY_Back = 269025062
-- constant _KEY_BackForward

_KEY_BackForward :: Int32
_KEY_BackForward = 269025087
-- constant _KEY_BackSpace

_KEY_BackSpace :: Int32
_KEY_BackSpace = 65288
-- constant _KEY_Battery

_KEY_Battery :: Int32
_KEY_Battery = 269025171
-- constant _KEY_Begin

_KEY_Begin :: Int32
_KEY_Begin = 65368
-- constant _KEY_Blue

_KEY_Blue :: Int32
_KEY_Blue = 269025190
-- constant _KEY_Bluetooth

_KEY_Bluetooth :: Int32
_KEY_Bluetooth = 269025172
-- constant _KEY_Book

_KEY_Book :: Int32
_KEY_Book = 269025106
-- constant _KEY_BounceKeys_Enable

_KEY_BounceKeys_Enable :: Int32
_KEY_BounceKeys_Enable = 65140
-- constant _KEY_Break

_KEY_Break :: Int32
_KEY_Break = 65387
-- constant _KEY_BrightnessAdjust

_KEY_BrightnessAdjust :: Int32
_KEY_BrightnessAdjust = 269025083
-- constant _KEY_Byelorussian_SHORTU

_KEY_Byelorussian_SHORTU :: Int32
_KEY_Byelorussian_SHORTU = 1726
-- constant _KEY_Byelorussian_shortu

_KEY_Byelorussian_shortu :: Int32
_KEY_Byelorussian_shortu = 1710
-- constant _KEY_C

_KEY_C :: Int32
_KEY_C = 67
-- constant _KEY_CD

_KEY_CD :: Int32
_KEY_CD = 269025107
-- constant _KEY_CH

_KEY_CH :: Int32
_KEY_CH = 65186
-- constant _KEY_C_H

_KEY_C_H :: Int32
_KEY_C_H = 65189
-- constant _KEY_C_h

_KEY_C_h :: Int32
_KEY_C_h = 65188
-- constant _KEY_Cabovedot

_KEY_Cabovedot :: Int32
_KEY_Cabovedot = 709
-- constant _KEY_Cacute

_KEY_Cacute :: Int32
_KEY_Cacute = 454
-- constant _KEY_Calculator

_KEY_Calculator :: Int32
_KEY_Calculator = 269025053
-- constant _KEY_Calendar

_KEY_Calendar :: Int32
_KEY_Calendar = 269025056
-- constant _KEY_Cancel

_KEY_Cancel :: Int32
_KEY_Cancel = 65385
-- constant _KEY_Caps_Lock

_KEY_Caps_Lock :: Int32
_KEY_Caps_Lock = 65509
-- constant _KEY_Ccaron

_KEY_Ccaron :: Int32
_KEY_Ccaron = 456
-- constant _KEY_Ccedilla

_KEY_Ccedilla :: Int32
_KEY_Ccedilla = 199
-- constant _KEY_Ccircumflex

_KEY_Ccircumflex :: Int32
_KEY_Ccircumflex = 710
-- constant _KEY_Ch

_KEY_Ch :: Int32
_KEY_Ch = 65185
-- constant _KEY_Clear

_KEY_Clear :: Int32
_KEY_Clear = 65291
-- constant _KEY_ClearGrab

_KEY_ClearGrab :: Int32
_KEY_ClearGrab = 269024801
-- constant _KEY_Close

_KEY_Close :: Int32
_KEY_Close = 269025110
-- constant _KEY_Codeinput

_KEY_Codeinput :: Int32
_KEY_Codeinput = 65335
-- constant _KEY_ColonSign

_KEY_ColonSign :: Int32
_KEY_ColonSign = 16785569
-- constant _KEY_Community

_KEY_Community :: Int32
_KEY_Community = 269025085
-- constant _KEY_ContrastAdjust

_KEY_ContrastAdjust :: Int32
_KEY_ContrastAdjust = 269025058
-- constant _KEY_Control_L

_KEY_Control_L :: Int32
_KEY_Control_L = 65507
-- constant _KEY_Control_R

_KEY_Control_R :: Int32
_KEY_Control_R = 65508
-- constant _KEY_Copy

_KEY_Copy :: Int32
_KEY_Copy = 269025111
-- constant _KEY_CruzeiroSign

_KEY_CruzeiroSign :: Int32
_KEY_CruzeiroSign = 16785570
-- constant _KEY_Cut

_KEY_Cut :: Int32
_KEY_Cut = 269025112
-- constant _KEY_CycleAngle

_KEY_CycleAngle :: Int32
_KEY_CycleAngle = 269025180
-- constant _KEY_Cyrillic_A

_KEY_Cyrillic_A :: Int32
_KEY_Cyrillic_A = 1761
-- constant _KEY_Cyrillic_BE

_KEY_Cyrillic_BE :: Int32
_KEY_Cyrillic_BE = 1762
-- constant _KEY_Cyrillic_CHE

_KEY_Cyrillic_CHE :: Int32
_KEY_Cyrillic_CHE = 1790
-- constant _KEY_Cyrillic_CHE_descender

_KEY_Cyrillic_CHE_descender :: Int32
_KEY_Cyrillic_CHE_descender = 16778422
-- constant _KEY_Cyrillic_CHE_vertstroke

_KEY_Cyrillic_CHE_vertstroke :: Int32
_KEY_Cyrillic_CHE_vertstroke = 16778424
-- constant _KEY_Cyrillic_DE

_KEY_Cyrillic_DE :: Int32
_KEY_Cyrillic_DE = 1764
-- constant _KEY_Cyrillic_DZHE

_KEY_Cyrillic_DZHE :: Int32
_KEY_Cyrillic_DZHE = 1727
-- constant _KEY_Cyrillic_E

_KEY_Cyrillic_E :: Int32
_KEY_Cyrillic_E = 1788
-- constant _KEY_Cyrillic_EF

_KEY_Cyrillic_EF :: Int32
_KEY_Cyrillic_EF = 1766
-- constant _KEY_Cyrillic_EL

_KEY_Cyrillic_EL :: Int32
_KEY_Cyrillic_EL = 1772
-- constant _KEY_Cyrillic_EM

_KEY_Cyrillic_EM :: Int32
_KEY_Cyrillic_EM = 1773
-- constant _KEY_Cyrillic_EN

_KEY_Cyrillic_EN :: Int32
_KEY_Cyrillic_EN = 1774
-- constant _KEY_Cyrillic_EN_descender

_KEY_Cyrillic_EN_descender :: Int32
_KEY_Cyrillic_EN_descender = 16778402
-- constant _KEY_Cyrillic_ER

_KEY_Cyrillic_ER :: Int32
_KEY_Cyrillic_ER = 1778
-- constant _KEY_Cyrillic_ES

_KEY_Cyrillic_ES :: Int32
_KEY_Cyrillic_ES = 1779
-- constant _KEY_Cyrillic_GHE

_KEY_Cyrillic_GHE :: Int32
_KEY_Cyrillic_GHE = 1767
-- constant _KEY_Cyrillic_GHE_bar

_KEY_Cyrillic_GHE_bar :: Int32
_KEY_Cyrillic_GHE_bar = 16778386
-- constant _KEY_Cyrillic_HA

_KEY_Cyrillic_HA :: Int32
_KEY_Cyrillic_HA = 1768
-- constant _KEY_Cyrillic_HARDSIGN

_KEY_Cyrillic_HARDSIGN :: Int32
_KEY_Cyrillic_HARDSIGN = 1791
-- constant _KEY_Cyrillic_HA_descender

_KEY_Cyrillic_HA_descender :: Int32
_KEY_Cyrillic_HA_descender = 16778418
-- constant _KEY_Cyrillic_I

_KEY_Cyrillic_I :: Int32
_KEY_Cyrillic_I = 1769
-- constant _KEY_Cyrillic_IE

_KEY_Cyrillic_IE :: Int32
_KEY_Cyrillic_IE = 1765
-- constant _KEY_Cyrillic_IO

_KEY_Cyrillic_IO :: Int32
_KEY_Cyrillic_IO = 1715
-- constant _KEY_Cyrillic_I_macron

_KEY_Cyrillic_I_macron :: Int32
_KEY_Cyrillic_I_macron = 16778466
-- constant _KEY_Cyrillic_JE

_KEY_Cyrillic_JE :: Int32
_KEY_Cyrillic_JE = 1720
-- constant _KEY_Cyrillic_KA

_KEY_Cyrillic_KA :: Int32
_KEY_Cyrillic_KA = 1771
-- constant _KEY_Cyrillic_KA_descender

_KEY_Cyrillic_KA_descender :: Int32
_KEY_Cyrillic_KA_descender = 16778394
-- constant _KEY_Cyrillic_KA_vertstroke

_KEY_Cyrillic_KA_vertstroke :: Int32
_KEY_Cyrillic_KA_vertstroke = 16778396
-- constant _KEY_Cyrillic_LJE

_KEY_Cyrillic_LJE :: Int32
_KEY_Cyrillic_LJE = 1721
-- constant _KEY_Cyrillic_NJE

_KEY_Cyrillic_NJE :: Int32
_KEY_Cyrillic_NJE = 1722
-- constant _KEY_Cyrillic_O

_KEY_Cyrillic_O :: Int32
_KEY_Cyrillic_O = 1775
-- constant _KEY_Cyrillic_O_bar

_KEY_Cyrillic_O_bar :: Int32
_KEY_Cyrillic_O_bar = 16778472
-- constant _KEY_Cyrillic_PE

_KEY_Cyrillic_PE :: Int32
_KEY_Cyrillic_PE = 1776
-- constant _KEY_Cyrillic_SCHWA

_KEY_Cyrillic_SCHWA :: Int32
_KEY_Cyrillic_SCHWA = 16778456
-- constant _KEY_Cyrillic_SHA

_KEY_Cyrillic_SHA :: Int32
_KEY_Cyrillic_SHA = 1787
-- constant _KEY_Cyrillic_SHCHA

_KEY_Cyrillic_SHCHA :: Int32
_KEY_Cyrillic_SHCHA = 1789
-- constant _KEY_Cyrillic_SHHA

_KEY_Cyrillic_SHHA :: Int32
_KEY_Cyrillic_SHHA = 16778426
-- constant _KEY_Cyrillic_SHORTI

_KEY_Cyrillic_SHORTI :: Int32
_KEY_Cyrillic_SHORTI = 1770
-- constant _KEY_Cyrillic_SOFTSIGN

_KEY_Cyrillic_SOFTSIGN :: Int32
_KEY_Cyrillic_SOFTSIGN = 1784
-- constant _KEY_Cyrillic_TE

_KEY_Cyrillic_TE :: Int32
_KEY_Cyrillic_TE = 1780
-- constant _KEY_Cyrillic_TSE

_KEY_Cyrillic_TSE :: Int32
_KEY_Cyrillic_TSE = 1763
-- constant _KEY_Cyrillic_U

_KEY_Cyrillic_U :: Int32
_KEY_Cyrillic_U = 1781
-- constant _KEY_Cyrillic_U_macron

_KEY_Cyrillic_U_macron :: Int32
_KEY_Cyrillic_U_macron = 16778478
-- constant _KEY_Cyrillic_U_straight

_KEY_Cyrillic_U_straight :: Int32
_KEY_Cyrillic_U_straight = 16778414
-- constant _KEY_Cyrillic_U_straight_bar

_KEY_Cyrillic_U_straight_bar :: Int32
_KEY_Cyrillic_U_straight_bar = 16778416
-- constant _KEY_Cyrillic_VE

_KEY_Cyrillic_VE :: Int32
_KEY_Cyrillic_VE = 1783
-- constant _KEY_Cyrillic_YA

_KEY_Cyrillic_YA :: Int32
_KEY_Cyrillic_YA = 1777
-- constant _KEY_Cyrillic_YERU

_KEY_Cyrillic_YERU :: Int32
_KEY_Cyrillic_YERU = 1785
-- constant _KEY_Cyrillic_YU

_KEY_Cyrillic_YU :: Int32
_KEY_Cyrillic_YU = 1760
-- constant _KEY_Cyrillic_ZE

_KEY_Cyrillic_ZE :: Int32
_KEY_Cyrillic_ZE = 1786
-- constant _KEY_Cyrillic_ZHE

_KEY_Cyrillic_ZHE :: Int32
_KEY_Cyrillic_ZHE = 1782
-- constant _KEY_Cyrillic_ZHE_descender

_KEY_Cyrillic_ZHE_descender :: Int32
_KEY_Cyrillic_ZHE_descender = 16778390
-- constant _KEY_Cyrillic_a

_KEY_Cyrillic_a :: Int32
_KEY_Cyrillic_a = 1729
-- constant _KEY_Cyrillic_be

_KEY_Cyrillic_be :: Int32
_KEY_Cyrillic_be = 1730
-- constant _KEY_Cyrillic_che

_KEY_Cyrillic_che :: Int32
_KEY_Cyrillic_che = 1758
-- constant _KEY_Cyrillic_che_descender

_KEY_Cyrillic_che_descender :: Int32
_KEY_Cyrillic_che_descender = 16778423
-- constant _KEY_Cyrillic_che_vertstroke

_KEY_Cyrillic_che_vertstroke :: Int32
_KEY_Cyrillic_che_vertstroke = 16778425
-- constant _KEY_Cyrillic_de

_KEY_Cyrillic_de :: Int32
_KEY_Cyrillic_de = 1732
-- constant _KEY_Cyrillic_dzhe

_KEY_Cyrillic_dzhe :: Int32
_KEY_Cyrillic_dzhe = 1711
-- constant _KEY_Cyrillic_e

_KEY_Cyrillic_e :: Int32
_KEY_Cyrillic_e = 1756
-- constant _KEY_Cyrillic_ef

_KEY_Cyrillic_ef :: Int32
_KEY_Cyrillic_ef = 1734
-- constant _KEY_Cyrillic_el

_KEY_Cyrillic_el :: Int32
_KEY_Cyrillic_el = 1740
-- constant _KEY_Cyrillic_em

_KEY_Cyrillic_em :: Int32
_KEY_Cyrillic_em = 1741
-- constant _KEY_Cyrillic_en

_KEY_Cyrillic_en :: Int32
_KEY_Cyrillic_en = 1742
-- constant _KEY_Cyrillic_en_descender

_KEY_Cyrillic_en_descender :: Int32
_KEY_Cyrillic_en_descender = 16778403
-- constant _KEY_Cyrillic_er

_KEY_Cyrillic_er :: Int32
_KEY_Cyrillic_er = 1746
-- constant _KEY_Cyrillic_es

_KEY_Cyrillic_es :: Int32
_KEY_Cyrillic_es = 1747
-- constant _KEY_Cyrillic_ghe

_KEY_Cyrillic_ghe :: Int32
_KEY_Cyrillic_ghe = 1735
-- constant _KEY_Cyrillic_ghe_bar

_KEY_Cyrillic_ghe_bar :: Int32
_KEY_Cyrillic_ghe_bar = 16778387
-- constant _KEY_Cyrillic_ha

_KEY_Cyrillic_ha :: Int32
_KEY_Cyrillic_ha = 1736
-- constant _KEY_Cyrillic_ha_descender

_KEY_Cyrillic_ha_descender :: Int32
_KEY_Cyrillic_ha_descender = 16778419
-- constant _KEY_Cyrillic_hardsign

_KEY_Cyrillic_hardsign :: Int32
_KEY_Cyrillic_hardsign = 1759
-- constant _KEY_Cyrillic_i

_KEY_Cyrillic_i :: Int32
_KEY_Cyrillic_i = 1737
-- constant _KEY_Cyrillic_i_macron

_KEY_Cyrillic_i_macron :: Int32
_KEY_Cyrillic_i_macron = 16778467
-- constant _KEY_Cyrillic_ie

_KEY_Cyrillic_ie :: Int32
_KEY_Cyrillic_ie = 1733
-- constant _KEY_Cyrillic_io

_KEY_Cyrillic_io :: Int32
_KEY_Cyrillic_io = 1699
-- constant _KEY_Cyrillic_je

_KEY_Cyrillic_je :: Int32
_KEY_Cyrillic_je = 1704
-- constant _KEY_Cyrillic_ka

_KEY_Cyrillic_ka :: Int32
_KEY_Cyrillic_ka = 1739
-- constant _KEY_Cyrillic_ka_descender

_KEY_Cyrillic_ka_descender :: Int32
_KEY_Cyrillic_ka_descender = 16778395
-- constant _KEY_Cyrillic_ka_vertstroke

_KEY_Cyrillic_ka_vertstroke :: Int32
_KEY_Cyrillic_ka_vertstroke = 16778397
-- constant _KEY_Cyrillic_lje

_KEY_Cyrillic_lje :: Int32
_KEY_Cyrillic_lje = 1705
-- constant _KEY_Cyrillic_nje

_KEY_Cyrillic_nje :: Int32
_KEY_Cyrillic_nje = 1706
-- constant _KEY_Cyrillic_o

_KEY_Cyrillic_o :: Int32
_KEY_Cyrillic_o = 1743
-- constant _KEY_Cyrillic_o_bar

_KEY_Cyrillic_o_bar :: Int32
_KEY_Cyrillic_o_bar = 16778473
-- constant _KEY_Cyrillic_pe

_KEY_Cyrillic_pe :: Int32
_KEY_Cyrillic_pe = 1744
-- constant _KEY_Cyrillic_schwa

_KEY_Cyrillic_schwa :: Int32
_KEY_Cyrillic_schwa = 16778457
-- constant _KEY_Cyrillic_sha

_KEY_Cyrillic_sha :: Int32
_KEY_Cyrillic_sha = 1755
-- constant _KEY_Cyrillic_shcha

_KEY_Cyrillic_shcha :: Int32
_KEY_Cyrillic_shcha = 1757
-- constant _KEY_Cyrillic_shha

_KEY_Cyrillic_shha :: Int32
_KEY_Cyrillic_shha = 16778427
-- constant _KEY_Cyrillic_shorti

_KEY_Cyrillic_shorti :: Int32
_KEY_Cyrillic_shorti = 1738
-- constant _KEY_Cyrillic_softsign

_KEY_Cyrillic_softsign :: Int32
_KEY_Cyrillic_softsign = 1752
-- constant _KEY_Cyrillic_te

_KEY_Cyrillic_te :: Int32
_KEY_Cyrillic_te = 1748
-- constant _KEY_Cyrillic_tse

_KEY_Cyrillic_tse :: Int32
_KEY_Cyrillic_tse = 1731
-- constant _KEY_Cyrillic_u

_KEY_Cyrillic_u :: Int32
_KEY_Cyrillic_u = 1749
-- constant _KEY_Cyrillic_u_macron

_KEY_Cyrillic_u_macron :: Int32
_KEY_Cyrillic_u_macron = 16778479
-- constant _KEY_Cyrillic_u_straight

_KEY_Cyrillic_u_straight :: Int32
_KEY_Cyrillic_u_straight = 16778415
-- constant _KEY_Cyrillic_u_straight_bar

_KEY_Cyrillic_u_straight_bar :: Int32
_KEY_Cyrillic_u_straight_bar = 16778417
-- constant _KEY_Cyrillic_ve

_KEY_Cyrillic_ve :: Int32
_KEY_Cyrillic_ve = 1751
-- constant _KEY_Cyrillic_ya

_KEY_Cyrillic_ya :: Int32
_KEY_Cyrillic_ya = 1745
-- constant _KEY_Cyrillic_yeru

_KEY_Cyrillic_yeru :: Int32
_KEY_Cyrillic_yeru = 1753
-- constant _KEY_Cyrillic_yu

_KEY_Cyrillic_yu :: Int32
_KEY_Cyrillic_yu = 1728
-- constant _KEY_Cyrillic_ze

_KEY_Cyrillic_ze :: Int32
_KEY_Cyrillic_ze = 1754
-- constant _KEY_Cyrillic_zhe

_KEY_Cyrillic_zhe :: Int32
_KEY_Cyrillic_zhe = 1750
-- constant _KEY_Cyrillic_zhe_descender

_KEY_Cyrillic_zhe_descender :: Int32
_KEY_Cyrillic_zhe_descender = 16778391
-- constant _KEY_D

_KEY_D :: Int32
_KEY_D = 68
-- constant _KEY_DOS

_KEY_DOS :: Int32
_KEY_DOS = 269025114
-- constant _KEY_Dabovedot

_KEY_Dabovedot :: Int32
_KEY_Dabovedot = 16784906
-- constant _KEY_Dcaron

_KEY_Dcaron :: Int32
_KEY_Dcaron = 463
-- constant _KEY_Delete

_KEY_Delete :: Int32
_KEY_Delete = 65535
-- constant _KEY_Display

_KEY_Display :: Int32
_KEY_Display = 269025113
-- constant _KEY_Documents

_KEY_Documents :: Int32
_KEY_Documents = 269025115
-- constant _KEY_DongSign

_KEY_DongSign :: Int32
_KEY_DongSign = 16785579
-- constant _KEY_Down

_KEY_Down :: Int32
_KEY_Down = 65364
-- constant _KEY_Dstroke

_KEY_Dstroke :: Int32
_KEY_Dstroke = 464
-- constant _KEY_E

_KEY_E :: Int32
_KEY_E = 69
-- constant _KEY_ENG

_KEY_ENG :: Int32
_KEY_ENG = 957
-- constant _KEY_ETH

_KEY_ETH :: Int32
_KEY_ETH = 208
-- constant _KEY_EZH

_KEY_EZH :: Int32
_KEY_EZH = 16777655
-- constant _KEY_Eabovedot

_KEY_Eabovedot :: Int32
_KEY_Eabovedot = 972
-- constant _KEY_Eacute

_KEY_Eacute :: Int32
_KEY_Eacute = 201
-- constant _KEY_Ebelowdot

_KEY_Ebelowdot :: Int32
_KEY_Ebelowdot = 16785080
-- constant _KEY_Ecaron

_KEY_Ecaron :: Int32
_KEY_Ecaron = 460
-- constant _KEY_Ecircumflex

_KEY_Ecircumflex :: Int32
_KEY_Ecircumflex = 202
-- constant _KEY_Ecircumflexacute

_KEY_Ecircumflexacute :: Int32
_KEY_Ecircumflexacute = 16785086
-- constant _KEY_Ecircumflexbelowdot

_KEY_Ecircumflexbelowdot :: Int32
_KEY_Ecircumflexbelowdot = 16785094
-- constant _KEY_Ecircumflexgrave

_KEY_Ecircumflexgrave :: Int32
_KEY_Ecircumflexgrave = 16785088
-- constant _KEY_Ecircumflexhook

_KEY_Ecircumflexhook :: Int32
_KEY_Ecircumflexhook = 16785090
-- constant _KEY_Ecircumflextilde

_KEY_Ecircumflextilde :: Int32
_KEY_Ecircumflextilde = 16785092
-- constant _KEY_EcuSign

_KEY_EcuSign :: Int32
_KEY_EcuSign = 16785568
-- constant _KEY_Ediaeresis

_KEY_Ediaeresis :: Int32
_KEY_Ediaeresis = 203
-- constant _KEY_Egrave

_KEY_Egrave :: Int32
_KEY_Egrave = 200
-- constant _KEY_Ehook

_KEY_Ehook :: Int32
_KEY_Ehook = 16785082
-- constant _KEY_Eisu_Shift

_KEY_Eisu_Shift :: Int32
_KEY_Eisu_Shift = 65327
-- constant _KEY_Eisu_toggle

_KEY_Eisu_toggle :: Int32
_KEY_Eisu_toggle = 65328
-- constant _KEY_Eject

_KEY_Eject :: Int32
_KEY_Eject = 269025068
-- constant _KEY_Emacron

_KEY_Emacron :: Int32
_KEY_Emacron = 938
-- constant _KEY_End

_KEY_End :: Int32
_KEY_End = 65367
-- constant _KEY_Eogonek

_KEY_Eogonek :: Int32
_KEY_Eogonek = 458
-- constant _KEY_Escape

_KEY_Escape :: Int32
_KEY_Escape = 65307
-- constant _KEY_Eth

_KEY_Eth :: Int32
_KEY_Eth = 208
-- constant _KEY_Etilde

_KEY_Etilde :: Int32
_KEY_Etilde = 16785084
-- constant _KEY_EuroSign

_KEY_EuroSign :: Int32
_KEY_EuroSign = 8364
-- constant _KEY_Excel

_KEY_Excel :: Int32
_KEY_Excel = 269025116
-- constant _KEY_Execute

_KEY_Execute :: Int32
_KEY_Execute = 65378
-- constant _KEY_Explorer

_KEY_Explorer :: Int32
_KEY_Explorer = 269025117
-- constant _KEY_F

_KEY_F :: Int32
_KEY_F = 70
-- constant _KEY_F1

_KEY_F1 :: Int32
_KEY_F1 = 65470
-- constant _KEY_F10

_KEY_F10 :: Int32
_KEY_F10 = 65479
-- constant _KEY_F11

_KEY_F11 :: Int32
_KEY_F11 = 65480
-- constant _KEY_F12

_KEY_F12 :: Int32
_KEY_F12 = 65481
-- constant _KEY_F13

_KEY_F13 :: Int32
_KEY_F13 = 65482
-- constant _KEY_F14

_KEY_F14 :: Int32
_KEY_F14 = 65483
-- constant _KEY_F15

_KEY_F15 :: Int32
_KEY_F15 = 65484
-- constant _KEY_F16

_KEY_F16 :: Int32
_KEY_F16 = 65485
-- constant _KEY_F17

_KEY_F17 :: Int32
_KEY_F17 = 65486
-- constant _KEY_F18

_KEY_F18 :: Int32
_KEY_F18 = 65487
-- constant _KEY_F19

_KEY_F19 :: Int32
_KEY_F19 = 65488
-- constant _KEY_F2

_KEY_F2 :: Int32
_KEY_F2 = 65471
-- constant _KEY_F20

_KEY_F20 :: Int32
_KEY_F20 = 65489
-- constant _KEY_F21

_KEY_F21 :: Int32
_KEY_F21 = 65490
-- constant _KEY_F22

_KEY_F22 :: Int32
_KEY_F22 = 65491
-- constant _KEY_F23

_KEY_F23 :: Int32
_KEY_F23 = 65492
-- constant _KEY_F24

_KEY_F24 :: Int32
_KEY_F24 = 65493
-- constant _KEY_F25

_KEY_F25 :: Int32
_KEY_F25 = 65494
-- constant _KEY_F26

_KEY_F26 :: Int32
_KEY_F26 = 65495
-- constant _KEY_F27

_KEY_F27 :: Int32
_KEY_F27 = 65496
-- constant _KEY_F28

_KEY_F28 :: Int32
_KEY_F28 = 65497
-- constant _KEY_F29

_KEY_F29 :: Int32
_KEY_F29 = 65498
-- constant _KEY_F3

_KEY_F3 :: Int32
_KEY_F3 = 65472
-- constant _KEY_F30

_KEY_F30 :: Int32
_KEY_F30 = 65499
-- constant _KEY_F31

_KEY_F31 :: Int32
_KEY_F31 = 65500
-- constant _KEY_F32

_KEY_F32 :: Int32
_KEY_F32 = 65501
-- constant _KEY_F33

_KEY_F33 :: Int32
_KEY_F33 = 65502
-- constant _KEY_F34

_KEY_F34 :: Int32
_KEY_F34 = 65503
-- constant _KEY_F35

_KEY_F35 :: Int32
_KEY_F35 = 65504
-- constant _KEY_F4

_KEY_F4 :: Int32
_KEY_F4 = 65473
-- constant _KEY_F5

_KEY_F5 :: Int32
_KEY_F5 = 65474
-- constant _KEY_F6

_KEY_F6 :: Int32
_KEY_F6 = 65475
-- constant _KEY_F7

_KEY_F7 :: Int32
_KEY_F7 = 65476
-- constant _KEY_F8

_KEY_F8 :: Int32
_KEY_F8 = 65477
-- constant _KEY_F9

_KEY_F9 :: Int32
_KEY_F9 = 65478
-- constant _KEY_FFrancSign

_KEY_FFrancSign :: Int32
_KEY_FFrancSign = 16785571
-- constant _KEY_Fabovedot

_KEY_Fabovedot :: Int32
_KEY_Fabovedot = 16784926
-- constant _KEY_Farsi_0

_KEY_Farsi_0 :: Int32
_KEY_Farsi_0 = 16778992
-- constant _KEY_Farsi_1

_KEY_Farsi_1 :: Int32
_KEY_Farsi_1 = 16778993
-- constant _KEY_Farsi_2

_KEY_Farsi_2 :: Int32
_KEY_Farsi_2 = 16778994
-- constant _KEY_Farsi_3

_KEY_Farsi_3 :: Int32
_KEY_Farsi_3 = 16778995
-- constant _KEY_Farsi_4

_KEY_Farsi_4 :: Int32
_KEY_Farsi_4 = 16778996
-- constant _KEY_Farsi_5

_KEY_Farsi_5 :: Int32
_KEY_Farsi_5 = 16778997
-- constant _KEY_Farsi_6

_KEY_Farsi_6 :: Int32
_KEY_Farsi_6 = 16778998
-- constant _KEY_Farsi_7

_KEY_Farsi_7 :: Int32
_KEY_Farsi_7 = 16778999
-- constant _KEY_Farsi_8

_KEY_Farsi_8 :: Int32
_KEY_Farsi_8 = 16779000
-- constant _KEY_Farsi_9

_KEY_Farsi_9 :: Int32
_KEY_Farsi_9 = 16779001
-- constant _KEY_Farsi_yeh

_KEY_Farsi_yeh :: Int32
_KEY_Farsi_yeh = 16778956
-- constant _KEY_Favorites

_KEY_Favorites :: Int32
_KEY_Favorites = 269025072
-- constant _KEY_Finance

_KEY_Finance :: Int32
_KEY_Finance = 269025084
-- constant _KEY_Find

_KEY_Find :: Int32
_KEY_Find = 65384
-- constant _KEY_First_Virtual_Screen

_KEY_First_Virtual_Screen :: Int32
_KEY_First_Virtual_Screen = 65232
-- constant _KEY_Forward

_KEY_Forward :: Int32
_KEY_Forward = 269025063
-- constant _KEY_FrameBack

_KEY_FrameBack :: Int32
_KEY_FrameBack = 269025181
-- constant _KEY_FrameForward

_KEY_FrameForward :: Int32
_KEY_FrameForward = 269025182
-- constant _KEY_G

_KEY_G :: Int32
_KEY_G = 71
-- constant _KEY_Gabovedot

_KEY_Gabovedot :: Int32
_KEY_Gabovedot = 725
-- constant _KEY_Game

_KEY_Game :: Int32
_KEY_Game = 269025118
-- constant _KEY_Gbreve

_KEY_Gbreve :: Int32
_KEY_Gbreve = 683
-- constant _KEY_Gcaron

_KEY_Gcaron :: Int32
_KEY_Gcaron = 16777702
-- constant _KEY_Gcedilla

_KEY_Gcedilla :: Int32
_KEY_Gcedilla = 939
-- constant _KEY_Gcircumflex

_KEY_Gcircumflex :: Int32
_KEY_Gcircumflex = 728
-- constant _KEY_Georgian_an

_KEY_Georgian_an :: Int32
_KEY_Georgian_an = 16781520
-- constant _KEY_Georgian_ban

_KEY_Georgian_ban :: Int32
_KEY_Georgian_ban = 16781521
-- constant _KEY_Georgian_can

_KEY_Georgian_can :: Int32
_KEY_Georgian_can = 16781546
-- constant _KEY_Georgian_char

_KEY_Georgian_char :: Int32
_KEY_Georgian_char = 16781549
-- constant _KEY_Georgian_chin

_KEY_Georgian_chin :: Int32
_KEY_Georgian_chin = 16781545
-- constant _KEY_Georgian_cil

_KEY_Georgian_cil :: Int32
_KEY_Georgian_cil = 16781548
-- constant _KEY_Georgian_don

_KEY_Georgian_don :: Int32
_KEY_Georgian_don = 16781523
-- constant _KEY_Georgian_en

_KEY_Georgian_en :: Int32
_KEY_Georgian_en = 16781524
-- constant _KEY_Georgian_fi

_KEY_Georgian_fi :: Int32
_KEY_Georgian_fi = 16781558
-- constant _KEY_Georgian_gan

_KEY_Georgian_gan :: Int32
_KEY_Georgian_gan = 16781522
-- constant _KEY_Georgian_ghan

_KEY_Georgian_ghan :: Int32
_KEY_Georgian_ghan = 16781542
-- constant _KEY_Georgian_hae

_KEY_Georgian_hae :: Int32
_KEY_Georgian_hae = 16781552
-- constant _KEY_Georgian_har

_KEY_Georgian_har :: Int32
_KEY_Georgian_har = 16781556
-- constant _KEY_Georgian_he

_KEY_Georgian_he :: Int32
_KEY_Georgian_he = 16781553
-- constant _KEY_Georgian_hie

_KEY_Georgian_hie :: Int32
_KEY_Georgian_hie = 16781554
-- constant _KEY_Georgian_hoe

_KEY_Georgian_hoe :: Int32
_KEY_Georgian_hoe = 16781557
-- constant _KEY_Georgian_in

_KEY_Georgian_in :: Int32
_KEY_Georgian_in = 16781528
-- constant _KEY_Georgian_jhan

_KEY_Georgian_jhan :: Int32
_KEY_Georgian_jhan = 16781551
-- constant _KEY_Georgian_jil

_KEY_Georgian_jil :: Int32
_KEY_Georgian_jil = 16781547
-- constant _KEY_Georgian_kan

_KEY_Georgian_kan :: Int32
_KEY_Georgian_kan = 16781529
-- constant _KEY_Georgian_khar

_KEY_Georgian_khar :: Int32
_KEY_Georgian_khar = 16781541
-- constant _KEY_Georgian_las

_KEY_Georgian_las :: Int32
_KEY_Georgian_las = 16781530
-- constant _KEY_Georgian_man

_KEY_Georgian_man :: Int32
_KEY_Georgian_man = 16781531
-- constant _KEY_Georgian_nar

_KEY_Georgian_nar :: Int32
_KEY_Georgian_nar = 16781532
-- constant _KEY_Georgian_on

_KEY_Georgian_on :: Int32
_KEY_Georgian_on = 16781533
-- constant _KEY_Georgian_par

_KEY_Georgian_par :: Int32
_KEY_Georgian_par = 16781534
-- constant _KEY_Georgian_phar

_KEY_Georgian_phar :: Int32
_KEY_Georgian_phar = 16781540
-- constant _KEY_Georgian_qar

_KEY_Georgian_qar :: Int32
_KEY_Georgian_qar = 16781543
-- constant _KEY_Georgian_rae

_KEY_Georgian_rae :: Int32
_KEY_Georgian_rae = 16781536
-- constant _KEY_Georgian_san

_KEY_Georgian_san :: Int32
_KEY_Georgian_san = 16781537
-- constant _KEY_Georgian_shin

_KEY_Georgian_shin :: Int32
_KEY_Georgian_shin = 16781544
-- constant _KEY_Georgian_tan

_KEY_Georgian_tan :: Int32
_KEY_Georgian_tan = 16781527
-- constant _KEY_Georgian_tar

_KEY_Georgian_tar :: Int32
_KEY_Georgian_tar = 16781538
-- constant _KEY_Georgian_un

_KEY_Georgian_un :: Int32
_KEY_Georgian_un = 16781539
-- constant _KEY_Georgian_vin

_KEY_Georgian_vin :: Int32
_KEY_Georgian_vin = 16781525
-- constant _KEY_Georgian_we

_KEY_Georgian_we :: Int32
_KEY_Georgian_we = 16781555
-- constant _KEY_Georgian_xan

_KEY_Georgian_xan :: Int32
_KEY_Georgian_xan = 16781550
-- constant _KEY_Georgian_zen

_KEY_Georgian_zen :: Int32
_KEY_Georgian_zen = 16781526
-- constant _KEY_Georgian_zhar

_KEY_Georgian_zhar :: Int32
_KEY_Georgian_zhar = 16781535
-- constant _KEY_Go

_KEY_Go :: Int32
_KEY_Go = 269025119
-- constant _KEY_Greek_ALPHA

_KEY_Greek_ALPHA :: Int32
_KEY_Greek_ALPHA = 1985
-- constant _KEY_Greek_ALPHAaccent

_KEY_Greek_ALPHAaccent :: Int32
_KEY_Greek_ALPHAaccent = 1953
-- constant _KEY_Greek_BETA

_KEY_Greek_BETA :: Int32
_KEY_Greek_BETA = 1986
-- constant _KEY_Greek_CHI

_KEY_Greek_CHI :: Int32
_KEY_Greek_CHI = 2007
-- constant _KEY_Greek_DELTA

_KEY_Greek_DELTA :: Int32
_KEY_Greek_DELTA = 1988
-- constant _KEY_Greek_EPSILON

_KEY_Greek_EPSILON :: Int32
_KEY_Greek_EPSILON = 1989
-- constant _KEY_Greek_EPSILONaccent

_KEY_Greek_EPSILONaccent :: Int32
_KEY_Greek_EPSILONaccent = 1954
-- constant _KEY_Greek_ETA

_KEY_Greek_ETA :: Int32
_KEY_Greek_ETA = 1991
-- constant _KEY_Greek_ETAaccent

_KEY_Greek_ETAaccent :: Int32
_KEY_Greek_ETAaccent = 1955
-- constant _KEY_Greek_GAMMA

_KEY_Greek_GAMMA :: Int32
_KEY_Greek_GAMMA = 1987
-- constant _KEY_Greek_IOTA

_KEY_Greek_IOTA :: Int32
_KEY_Greek_IOTA = 1993
-- constant _KEY_Greek_IOTAaccent

_KEY_Greek_IOTAaccent :: Int32
_KEY_Greek_IOTAaccent = 1956
-- constant _KEY_Greek_IOTAdiaeresis

_KEY_Greek_IOTAdiaeresis :: Int32
_KEY_Greek_IOTAdiaeresis = 1957
-- constant _KEY_Greek_IOTAdieresis

_KEY_Greek_IOTAdieresis :: Int32
_KEY_Greek_IOTAdieresis = 1957
-- constant _KEY_Greek_KAPPA

_KEY_Greek_KAPPA :: Int32
_KEY_Greek_KAPPA = 1994
-- constant _KEY_Greek_LAMBDA

_KEY_Greek_LAMBDA :: Int32
_KEY_Greek_LAMBDA = 1995
-- constant _KEY_Greek_LAMDA

_KEY_Greek_LAMDA :: Int32
_KEY_Greek_LAMDA = 1995
-- constant _KEY_Greek_MU

_KEY_Greek_MU :: Int32
_KEY_Greek_MU = 1996
-- constant _KEY_Greek_NU

_KEY_Greek_NU :: Int32
_KEY_Greek_NU = 1997
-- constant _KEY_Greek_OMEGA

_KEY_Greek_OMEGA :: Int32
_KEY_Greek_OMEGA = 2009
-- constant _KEY_Greek_OMEGAaccent

_KEY_Greek_OMEGAaccent :: Int32
_KEY_Greek_OMEGAaccent = 1963
-- constant _KEY_Greek_OMICRON

_KEY_Greek_OMICRON :: Int32
_KEY_Greek_OMICRON = 1999
-- constant _KEY_Greek_OMICRONaccent

_KEY_Greek_OMICRONaccent :: Int32
_KEY_Greek_OMICRONaccent = 1959
-- constant _KEY_Greek_PHI

_KEY_Greek_PHI :: Int32
_KEY_Greek_PHI = 2006
-- constant _KEY_Greek_PI

_KEY_Greek_PI :: Int32
_KEY_Greek_PI = 2000
-- constant _KEY_Greek_PSI

_KEY_Greek_PSI :: Int32
_KEY_Greek_PSI = 2008
-- constant _KEY_Greek_RHO

_KEY_Greek_RHO :: Int32
_KEY_Greek_RHO = 2001
-- constant _KEY_Greek_SIGMA

_KEY_Greek_SIGMA :: Int32
_KEY_Greek_SIGMA = 2002
-- constant _KEY_Greek_TAU

_KEY_Greek_TAU :: Int32
_KEY_Greek_TAU = 2004
-- constant _KEY_Greek_THETA

_KEY_Greek_THETA :: Int32
_KEY_Greek_THETA = 1992
-- constant _KEY_Greek_UPSILON

_KEY_Greek_UPSILON :: Int32
_KEY_Greek_UPSILON = 2005
-- constant _KEY_Greek_UPSILONaccent

_KEY_Greek_UPSILONaccent :: Int32
_KEY_Greek_UPSILONaccent = 1960
-- constant _KEY_Greek_UPSILONdieresis

_KEY_Greek_UPSILONdieresis :: Int32
_KEY_Greek_UPSILONdieresis = 1961
-- constant _KEY_Greek_XI

_KEY_Greek_XI :: Int32
_KEY_Greek_XI = 1998
-- constant _KEY_Greek_ZETA

_KEY_Greek_ZETA :: Int32
_KEY_Greek_ZETA = 1990
-- constant _KEY_Greek_accentdieresis

_KEY_Greek_accentdieresis :: Int32
_KEY_Greek_accentdieresis = 1966
-- constant _KEY_Greek_alpha

_KEY_Greek_alpha :: Int32
_KEY_Greek_alpha = 2017
-- constant _KEY_Greek_alphaaccent

_KEY_Greek_alphaaccent :: Int32
_KEY_Greek_alphaaccent = 1969
-- constant _KEY_Greek_beta

_KEY_Greek_beta :: Int32
_KEY_Greek_beta = 2018
-- constant _KEY_Greek_chi

_KEY_Greek_chi :: Int32
_KEY_Greek_chi = 2039
-- constant _KEY_Greek_delta

_KEY_Greek_delta :: Int32
_KEY_Greek_delta = 2020
-- constant _KEY_Greek_epsilon

_KEY_Greek_epsilon :: Int32
_KEY_Greek_epsilon = 2021
-- constant _KEY_Greek_epsilonaccent

_KEY_Greek_epsilonaccent :: Int32
_KEY_Greek_epsilonaccent = 1970
-- constant _KEY_Greek_eta

_KEY_Greek_eta :: Int32
_KEY_Greek_eta = 2023
-- constant _KEY_Greek_etaaccent

_KEY_Greek_etaaccent :: Int32
_KEY_Greek_etaaccent = 1971
-- constant _KEY_Greek_finalsmallsigma

_KEY_Greek_finalsmallsigma :: Int32
_KEY_Greek_finalsmallsigma = 2035
-- constant _KEY_Greek_gamma

_KEY_Greek_gamma :: Int32
_KEY_Greek_gamma = 2019
-- constant _KEY_Greek_horizbar

_KEY_Greek_horizbar :: Int32
_KEY_Greek_horizbar = 1967
-- constant _KEY_Greek_iota

_KEY_Greek_iota :: Int32
_KEY_Greek_iota = 2025
-- constant _KEY_Greek_iotaaccent

_KEY_Greek_iotaaccent :: Int32
_KEY_Greek_iotaaccent = 1972
-- constant _KEY_Greek_iotaaccentdieresis

_KEY_Greek_iotaaccentdieresis :: Int32
_KEY_Greek_iotaaccentdieresis = 1974
-- constant _KEY_Greek_iotadieresis

_KEY_Greek_iotadieresis :: Int32
_KEY_Greek_iotadieresis = 1973
-- constant _KEY_Greek_kappa

_KEY_Greek_kappa :: Int32
_KEY_Greek_kappa = 2026
-- constant _KEY_Greek_lambda

_KEY_Greek_lambda :: Int32
_KEY_Greek_lambda = 2027
-- constant _KEY_Greek_lamda

_KEY_Greek_lamda :: Int32
_KEY_Greek_lamda = 2027
-- constant _KEY_Greek_mu

_KEY_Greek_mu :: Int32
_KEY_Greek_mu = 2028
-- constant _KEY_Greek_nu

_KEY_Greek_nu :: Int32
_KEY_Greek_nu = 2029
-- constant _KEY_Greek_omega

_KEY_Greek_omega :: Int32
_KEY_Greek_omega = 2041
-- constant _KEY_Greek_omegaaccent

_KEY_Greek_omegaaccent :: Int32
_KEY_Greek_omegaaccent = 1979
-- constant _KEY_Greek_omicron

_KEY_Greek_omicron :: Int32
_KEY_Greek_omicron = 2031
-- constant _KEY_Greek_omicronaccent

_KEY_Greek_omicronaccent :: Int32
_KEY_Greek_omicronaccent = 1975
-- constant _KEY_Greek_phi

_KEY_Greek_phi :: Int32
_KEY_Greek_phi = 2038
-- constant _KEY_Greek_pi

_KEY_Greek_pi :: Int32
_KEY_Greek_pi = 2032
-- constant _KEY_Greek_psi

_KEY_Greek_psi :: Int32
_KEY_Greek_psi = 2040
-- constant _KEY_Greek_rho

_KEY_Greek_rho :: Int32
_KEY_Greek_rho = 2033
-- constant _KEY_Greek_sigma

_KEY_Greek_sigma :: Int32
_KEY_Greek_sigma = 2034
-- constant _KEY_Greek_switch

_KEY_Greek_switch :: Int32
_KEY_Greek_switch = 65406
-- constant _KEY_Greek_tau

_KEY_Greek_tau :: Int32
_KEY_Greek_tau = 2036
-- constant _KEY_Greek_theta

_KEY_Greek_theta :: Int32
_KEY_Greek_theta = 2024
-- constant _KEY_Greek_upsilon

_KEY_Greek_upsilon :: Int32
_KEY_Greek_upsilon = 2037
-- constant _KEY_Greek_upsilonaccent

_KEY_Greek_upsilonaccent :: Int32
_KEY_Greek_upsilonaccent = 1976
-- constant _KEY_Greek_upsilonaccentdieresis

_KEY_Greek_upsilonaccentdieresis :: Int32
_KEY_Greek_upsilonaccentdieresis = 1978
-- constant _KEY_Greek_upsilondieresis

_KEY_Greek_upsilondieresis :: Int32
_KEY_Greek_upsilondieresis = 1977
-- constant _KEY_Greek_xi

_KEY_Greek_xi :: Int32
_KEY_Greek_xi = 2030
-- constant _KEY_Greek_zeta

_KEY_Greek_zeta :: Int32
_KEY_Greek_zeta = 2022
-- constant _KEY_Green

_KEY_Green :: Int32
_KEY_Green = 269025188
-- constant _KEY_H

_KEY_H :: Int32
_KEY_H = 72
-- constant _KEY_Hangul

_KEY_Hangul :: Int32
_KEY_Hangul = 65329
-- constant _KEY_Hangul_A

_KEY_Hangul_A :: Int32
_KEY_Hangul_A = 3775
-- constant _KEY_Hangul_AE

_KEY_Hangul_AE :: Int32
_KEY_Hangul_AE = 3776
-- constant _KEY_Hangul_AraeA

_KEY_Hangul_AraeA :: Int32
_KEY_Hangul_AraeA = 3830
-- constant _KEY_Hangul_AraeAE

_KEY_Hangul_AraeAE :: Int32
_KEY_Hangul_AraeAE = 3831
-- constant _KEY_Hangul_Banja

_KEY_Hangul_Banja :: Int32
_KEY_Hangul_Banja = 65337
-- constant _KEY_Hangul_Cieuc

_KEY_Hangul_Cieuc :: Int32
_KEY_Hangul_Cieuc = 3770
-- constant _KEY_Hangul_Codeinput

_KEY_Hangul_Codeinput :: Int32
_KEY_Hangul_Codeinput = 65335
-- constant _KEY_Hangul_Dikeud

_KEY_Hangul_Dikeud :: Int32
_KEY_Hangul_Dikeud = 3751
-- constant _KEY_Hangul_E

_KEY_Hangul_E :: Int32
_KEY_Hangul_E = 3780
-- constant _KEY_Hangul_EO

_KEY_Hangul_EO :: Int32
_KEY_Hangul_EO = 3779
-- constant _KEY_Hangul_EU

_KEY_Hangul_EU :: Int32
_KEY_Hangul_EU = 3793
-- constant _KEY_Hangul_End

_KEY_Hangul_End :: Int32
_KEY_Hangul_End = 65331
-- constant _KEY_Hangul_Hanja

_KEY_Hangul_Hanja :: Int32
_KEY_Hangul_Hanja = 65332
-- constant _KEY_Hangul_Hieuh

_KEY_Hangul_Hieuh :: Int32
_KEY_Hangul_Hieuh = 3774
-- constant _KEY_Hangul_I

_KEY_Hangul_I :: Int32
_KEY_Hangul_I = 3795
-- constant _KEY_Hangul_Ieung

_KEY_Hangul_Ieung :: Int32
_KEY_Hangul_Ieung = 3767
-- constant _KEY_Hangul_J_Cieuc

_KEY_Hangul_J_Cieuc :: Int32
_KEY_Hangul_J_Cieuc = 3818
-- constant _KEY_Hangul_J_Dikeud

_KEY_Hangul_J_Dikeud :: Int32
_KEY_Hangul_J_Dikeud = 3802
-- constant _KEY_Hangul_J_Hieuh

_KEY_Hangul_J_Hieuh :: Int32
_KEY_Hangul_J_Hieuh = 3822
-- constant _KEY_Hangul_J_Ieung

_KEY_Hangul_J_Ieung :: Int32
_KEY_Hangul_J_Ieung = 3816
-- constant _KEY_Hangul_J_Jieuj

_KEY_Hangul_J_Jieuj :: Int32
_KEY_Hangul_J_Jieuj = 3817
-- constant _KEY_Hangul_J_Khieuq

_KEY_Hangul_J_Khieuq :: Int32
_KEY_Hangul_J_Khieuq = 3819
-- constant _KEY_Hangul_J_Kiyeog

_KEY_Hangul_J_Kiyeog :: Int32
_KEY_Hangul_J_Kiyeog = 3796
-- constant _KEY_Hangul_J_KiyeogSios

_KEY_Hangul_J_KiyeogSios :: Int32
_KEY_Hangul_J_KiyeogSios = 3798
-- constant _KEY_Hangul_J_KkogjiDalrinIeung

_KEY_Hangul_J_KkogjiDalrinIeung :: Int32
_KEY_Hangul_J_KkogjiDalrinIeung = 3833
-- constant _KEY_Hangul_J_Mieum

_KEY_Hangul_J_Mieum :: Int32
_KEY_Hangul_J_Mieum = 3811
-- constant _KEY_Hangul_J_Nieun

_KEY_Hangul_J_Nieun :: Int32
_KEY_Hangul_J_Nieun = 3799
-- constant _KEY_Hangul_J_NieunHieuh

_KEY_Hangul_J_NieunHieuh :: Int32
_KEY_Hangul_J_NieunHieuh = 3801
-- constant _KEY_Hangul_J_NieunJieuj

_KEY_Hangul_J_NieunJieuj :: Int32
_KEY_Hangul_J_NieunJieuj = 3800
-- constant _KEY_Hangul_J_PanSios

_KEY_Hangul_J_PanSios :: Int32
_KEY_Hangul_J_PanSios = 3832
-- constant _KEY_Hangul_J_Phieuf

_KEY_Hangul_J_Phieuf :: Int32
_KEY_Hangul_J_Phieuf = 3821
-- constant _KEY_Hangul_J_Pieub

_KEY_Hangul_J_Pieub :: Int32
_KEY_Hangul_J_Pieub = 3812
-- constant _KEY_Hangul_J_PieubSios

_KEY_Hangul_J_PieubSios :: Int32
_KEY_Hangul_J_PieubSios = 3813
-- constant _KEY_Hangul_J_Rieul

_KEY_Hangul_J_Rieul :: Int32
_KEY_Hangul_J_Rieul = 3803
-- constant _KEY_Hangul_J_RieulHieuh

_KEY_Hangul_J_RieulHieuh :: Int32
_KEY_Hangul_J_RieulHieuh = 3810
-- constant _KEY_Hangul_J_RieulKiyeog

_KEY_Hangul_J_RieulKiyeog :: Int32
_KEY_Hangul_J_RieulKiyeog = 3804
-- constant _KEY_Hangul_J_RieulMieum

_KEY_Hangul_J_RieulMieum :: Int32
_KEY_Hangul_J_RieulMieum = 3805
-- constant _KEY_Hangul_J_RieulPhieuf

_KEY_Hangul_J_RieulPhieuf :: Int32
_KEY_Hangul_J_RieulPhieuf = 3809
-- constant _KEY_Hangul_J_RieulPieub

_KEY_Hangul_J_RieulPieub :: Int32
_KEY_Hangul_J_RieulPieub = 3806
-- constant _KEY_Hangul_J_RieulSios

_KEY_Hangul_J_RieulSios :: Int32
_KEY_Hangul_J_RieulSios = 3807
-- constant _KEY_Hangul_J_RieulTieut

_KEY_Hangul_J_RieulTieut :: Int32
_KEY_Hangul_J_RieulTieut = 3808
-- constant _KEY_Hangul_J_Sios

_KEY_Hangul_J_Sios :: Int32
_KEY_Hangul_J_Sios = 3814
-- constant _KEY_Hangul_J_SsangKiyeog

_KEY_Hangul_J_SsangKiyeog :: Int32
_KEY_Hangul_J_SsangKiyeog = 3797
-- constant _KEY_Hangul_J_SsangSios

_KEY_Hangul_J_SsangSios :: Int32
_KEY_Hangul_J_SsangSios = 3815
-- constant _KEY_Hangul_J_Tieut

_KEY_Hangul_J_Tieut :: Int32
_KEY_Hangul_J_Tieut = 3820
-- constant _KEY_Hangul_J_YeorinHieuh

_KEY_Hangul_J_YeorinHieuh :: Int32
_KEY_Hangul_J_YeorinHieuh = 3834
-- constant _KEY_Hangul_Jamo

_KEY_Hangul_Jamo :: Int32
_KEY_Hangul_Jamo = 65333
-- constant _KEY_Hangul_Jeonja

_KEY_Hangul_Jeonja :: Int32
_KEY_Hangul_Jeonja = 65336
-- constant _KEY_Hangul_Jieuj

_KEY_Hangul_Jieuj :: Int32
_KEY_Hangul_Jieuj = 3768
-- constant _KEY_Hangul_Khieuq

_KEY_Hangul_Khieuq :: Int32
_KEY_Hangul_Khieuq = 3771
-- constant _KEY_Hangul_Kiyeog

_KEY_Hangul_Kiyeog :: Int32
_KEY_Hangul_Kiyeog = 3745
-- constant _KEY_Hangul_KiyeogSios

_KEY_Hangul_KiyeogSios :: Int32
_KEY_Hangul_KiyeogSios = 3747
-- constant _KEY_Hangul_KkogjiDalrinIeung

_KEY_Hangul_KkogjiDalrinIeung :: Int32
_KEY_Hangul_KkogjiDalrinIeung = 3827
-- constant _KEY_Hangul_Mieum

_KEY_Hangul_Mieum :: Int32
_KEY_Hangul_Mieum = 3761
-- constant _KEY_Hangul_MultipleCandidate

_KEY_Hangul_MultipleCandidate :: Int32
_KEY_Hangul_MultipleCandidate = 65341
-- constant _KEY_Hangul_Nieun

_KEY_Hangul_Nieun :: Int32
_KEY_Hangul_Nieun = 3748
-- constant _KEY_Hangul_NieunHieuh

_KEY_Hangul_NieunHieuh :: Int32
_KEY_Hangul_NieunHieuh = 3750
-- constant _KEY_Hangul_NieunJieuj

_KEY_Hangul_NieunJieuj :: Int32
_KEY_Hangul_NieunJieuj = 3749
-- constant _KEY_Hangul_O

_KEY_Hangul_O :: Int32
_KEY_Hangul_O = 3783
-- constant _KEY_Hangul_OE

_KEY_Hangul_OE :: Int32
_KEY_Hangul_OE = 3786
-- constant _KEY_Hangul_PanSios

_KEY_Hangul_PanSios :: Int32
_KEY_Hangul_PanSios = 3826
-- constant _KEY_Hangul_Phieuf

_KEY_Hangul_Phieuf :: Int32
_KEY_Hangul_Phieuf = 3773
-- constant _KEY_Hangul_Pieub

_KEY_Hangul_Pieub :: Int32
_KEY_Hangul_Pieub = 3762
-- constant _KEY_Hangul_PieubSios

_KEY_Hangul_PieubSios :: Int32
_KEY_Hangul_PieubSios = 3764
-- constant _KEY_Hangul_PostHanja

_KEY_Hangul_PostHanja :: Int32
_KEY_Hangul_PostHanja = 65339
-- constant _KEY_Hangul_PreHanja

_KEY_Hangul_PreHanja :: Int32
_KEY_Hangul_PreHanja = 65338
-- constant _KEY_Hangul_PreviousCandidate

_KEY_Hangul_PreviousCandidate :: Int32
_KEY_Hangul_PreviousCandidate = 65342
-- constant _KEY_Hangul_Rieul

_KEY_Hangul_Rieul :: Int32
_KEY_Hangul_Rieul = 3753
-- constant _KEY_Hangul_RieulHieuh

_KEY_Hangul_RieulHieuh :: Int32
_KEY_Hangul_RieulHieuh = 3760
-- constant _KEY_Hangul_RieulKiyeog

_KEY_Hangul_RieulKiyeog :: Int32
_KEY_Hangul_RieulKiyeog = 3754
-- constant _KEY_Hangul_RieulMieum

_KEY_Hangul_RieulMieum :: Int32
_KEY_Hangul_RieulMieum = 3755
-- constant _KEY_Hangul_RieulPhieuf

_KEY_Hangul_RieulPhieuf :: Int32
_KEY_Hangul_RieulPhieuf = 3759
-- constant _KEY_Hangul_RieulPieub

_KEY_Hangul_RieulPieub :: Int32
_KEY_Hangul_RieulPieub = 3756
-- constant _KEY_Hangul_RieulSios

_KEY_Hangul_RieulSios :: Int32
_KEY_Hangul_RieulSios = 3757
-- constant _KEY_Hangul_RieulTieut

_KEY_Hangul_RieulTieut :: Int32
_KEY_Hangul_RieulTieut = 3758
-- constant _KEY_Hangul_RieulYeorinHieuh

_KEY_Hangul_RieulYeorinHieuh :: Int32
_KEY_Hangul_RieulYeorinHieuh = 3823
-- constant _KEY_Hangul_Romaja

_KEY_Hangul_Romaja :: Int32
_KEY_Hangul_Romaja = 65334
-- constant _KEY_Hangul_SingleCandidate

_KEY_Hangul_SingleCandidate :: Int32
_KEY_Hangul_SingleCandidate = 65340
-- constant _KEY_Hangul_Sios

_KEY_Hangul_Sios :: Int32
_KEY_Hangul_Sios = 3765
-- constant _KEY_Hangul_Special

_KEY_Hangul_Special :: Int32
_KEY_Hangul_Special = 65343
-- constant _KEY_Hangul_SsangDikeud

_KEY_Hangul_SsangDikeud :: Int32
_KEY_Hangul_SsangDikeud = 3752
-- constant _KEY_Hangul_SsangJieuj

_KEY_Hangul_SsangJieuj :: Int32
_KEY_Hangul_SsangJieuj = 3769
-- constant _KEY_Hangul_SsangKiyeog

_KEY_Hangul_SsangKiyeog :: Int32
_KEY_Hangul_SsangKiyeog = 3746
-- constant _KEY_Hangul_SsangPieub

_KEY_Hangul_SsangPieub :: Int32
_KEY_Hangul_SsangPieub = 3763
-- constant _KEY_Hangul_SsangSios

_KEY_Hangul_SsangSios :: Int32
_KEY_Hangul_SsangSios = 3766
-- constant _KEY_Hangul_Start

_KEY_Hangul_Start :: Int32
_KEY_Hangul_Start = 65330
-- constant _KEY_Hangul_SunkyeongeumMieum

_KEY_Hangul_SunkyeongeumMieum :: Int32
_KEY_Hangul_SunkyeongeumMieum = 3824
-- constant _KEY_Hangul_SunkyeongeumPhieuf

_KEY_Hangul_SunkyeongeumPhieuf :: Int32
_KEY_Hangul_SunkyeongeumPhieuf = 3828
-- constant _KEY_Hangul_SunkyeongeumPieub

_KEY_Hangul_SunkyeongeumPieub :: Int32
_KEY_Hangul_SunkyeongeumPieub = 3825
-- constant _KEY_Hangul_Tieut

_KEY_Hangul_Tieut :: Int32
_KEY_Hangul_Tieut = 3772
-- constant _KEY_Hangul_U

_KEY_Hangul_U :: Int32
_KEY_Hangul_U = 3788
-- constant _KEY_Hangul_WA

_KEY_Hangul_WA :: Int32
_KEY_Hangul_WA = 3784
-- constant _KEY_Hangul_WAE

_KEY_Hangul_WAE :: Int32
_KEY_Hangul_WAE = 3785
-- constant _KEY_Hangul_WE

_KEY_Hangul_WE :: Int32
_KEY_Hangul_WE = 3790
-- constant _KEY_Hangul_WEO

_KEY_Hangul_WEO :: Int32
_KEY_Hangul_WEO = 3789
-- constant _KEY_Hangul_WI

_KEY_Hangul_WI :: Int32
_KEY_Hangul_WI = 3791
-- constant _KEY_Hangul_YA

_KEY_Hangul_YA :: Int32
_KEY_Hangul_YA = 3777
-- constant _KEY_Hangul_YAE

_KEY_Hangul_YAE :: Int32
_KEY_Hangul_YAE = 3778
-- constant _KEY_Hangul_YE

_KEY_Hangul_YE :: Int32
_KEY_Hangul_YE = 3782
-- constant _KEY_Hangul_YEO

_KEY_Hangul_YEO :: Int32
_KEY_Hangul_YEO = 3781
-- constant _KEY_Hangul_YI

_KEY_Hangul_YI :: Int32
_KEY_Hangul_YI = 3794
-- constant _KEY_Hangul_YO

_KEY_Hangul_YO :: Int32
_KEY_Hangul_YO = 3787
-- constant _KEY_Hangul_YU

_KEY_Hangul_YU :: Int32
_KEY_Hangul_YU = 3792
-- constant _KEY_Hangul_YeorinHieuh

_KEY_Hangul_YeorinHieuh :: Int32
_KEY_Hangul_YeorinHieuh = 3829
-- constant _KEY_Hangul_switch

_KEY_Hangul_switch :: Int32
_KEY_Hangul_switch = 65406
-- constant _KEY_Hankaku

_KEY_Hankaku :: Int32
_KEY_Hankaku = 65321
-- constant _KEY_Hcircumflex

_KEY_Hcircumflex :: Int32
_KEY_Hcircumflex = 678
-- constant _KEY_Hebrew_switch

_KEY_Hebrew_switch :: Int32
_KEY_Hebrew_switch = 65406
-- constant _KEY_Help

_KEY_Help :: Int32
_KEY_Help = 65386
-- constant _KEY_Henkan

_KEY_Henkan :: Int32
_KEY_Henkan = 65315
-- constant _KEY_Henkan_Mode

_KEY_Henkan_Mode :: Int32
_KEY_Henkan_Mode = 65315
-- constant _KEY_Hibernate

_KEY_Hibernate :: Int32
_KEY_Hibernate = 269025192
-- constant _KEY_Hiragana

_KEY_Hiragana :: Int32
_KEY_Hiragana = 65317
-- constant _KEY_Hiragana_Katakana

_KEY_Hiragana_Katakana :: Int32
_KEY_Hiragana_Katakana = 65319
-- constant _KEY_History

_KEY_History :: Int32
_KEY_History = 269025079
-- constant _KEY_Home

_KEY_Home :: Int32
_KEY_Home = 65360
-- constant _KEY_HomePage

_KEY_HomePage :: Int32
_KEY_HomePage = 269025048
-- constant _KEY_HotLinks

_KEY_HotLinks :: Int32
_KEY_HotLinks = 269025082
-- constant _KEY_Hstroke

_KEY_Hstroke :: Int32
_KEY_Hstroke = 673
-- constant _KEY_Hyper_L

_KEY_Hyper_L :: Int32
_KEY_Hyper_L = 65517
-- constant _KEY_Hyper_R

_KEY_Hyper_R :: Int32
_KEY_Hyper_R = 65518
-- constant _KEY_I

_KEY_I :: Int32
_KEY_I = 73
-- constant _KEY_ISO_Center_Object

_KEY_ISO_Center_Object :: Int32
_KEY_ISO_Center_Object = 65075
-- constant _KEY_ISO_Continuous_Underline

_KEY_ISO_Continuous_Underline :: Int32
_KEY_ISO_Continuous_Underline = 65072
-- constant _KEY_ISO_Discontinuous_Underline

_KEY_ISO_Discontinuous_Underline :: Int32
_KEY_ISO_Discontinuous_Underline = 65073
-- constant _KEY_ISO_Emphasize

_KEY_ISO_Emphasize :: Int32
_KEY_ISO_Emphasize = 65074
-- constant _KEY_ISO_Enter

_KEY_ISO_Enter :: Int32
_KEY_ISO_Enter = 65076
-- constant _KEY_ISO_Fast_Cursor_Down

_KEY_ISO_Fast_Cursor_Down :: Int32
_KEY_ISO_Fast_Cursor_Down = 65071
-- constant _KEY_ISO_Fast_Cursor_Left

_KEY_ISO_Fast_Cursor_Left :: Int32
_KEY_ISO_Fast_Cursor_Left = 65068
-- constant _KEY_ISO_Fast_Cursor_Right

_KEY_ISO_Fast_Cursor_Right :: Int32
_KEY_ISO_Fast_Cursor_Right = 65069
-- constant _KEY_ISO_Fast_Cursor_Up

_KEY_ISO_Fast_Cursor_Up :: Int32
_KEY_ISO_Fast_Cursor_Up = 65070
-- constant _KEY_ISO_First_Group

_KEY_ISO_First_Group :: Int32
_KEY_ISO_First_Group = 65036
-- constant _KEY_ISO_First_Group_Lock

_KEY_ISO_First_Group_Lock :: Int32
_KEY_ISO_First_Group_Lock = 65037
-- constant _KEY_ISO_Group_Latch

_KEY_ISO_Group_Latch :: Int32
_KEY_ISO_Group_Latch = 65030
-- constant _KEY_ISO_Group_Lock

_KEY_ISO_Group_Lock :: Int32
_KEY_ISO_Group_Lock = 65031
-- constant _KEY_ISO_Group_Shift

_KEY_ISO_Group_Shift :: Int32
_KEY_ISO_Group_Shift = 65406
-- constant _KEY_ISO_Last_Group

_KEY_ISO_Last_Group :: Int32
_KEY_ISO_Last_Group = 65038
-- constant _KEY_ISO_Last_Group_Lock

_KEY_ISO_Last_Group_Lock :: Int32
_KEY_ISO_Last_Group_Lock = 65039
-- constant _KEY_ISO_Left_Tab

_KEY_ISO_Left_Tab :: Int32
_KEY_ISO_Left_Tab = 65056
-- constant _KEY_ISO_Level2_Latch

_KEY_ISO_Level2_Latch :: Int32
_KEY_ISO_Level2_Latch = 65026
-- constant _KEY_ISO_Level3_Latch

_KEY_ISO_Level3_Latch :: Int32
_KEY_ISO_Level3_Latch = 65028
-- constant _KEY_ISO_Level3_Lock

_KEY_ISO_Level3_Lock :: Int32
_KEY_ISO_Level3_Lock = 65029
-- constant _KEY_ISO_Level3_Shift

_KEY_ISO_Level3_Shift :: Int32
_KEY_ISO_Level3_Shift = 65027
-- constant _KEY_ISO_Level5_Latch

_KEY_ISO_Level5_Latch :: Int32
_KEY_ISO_Level5_Latch = 65042
-- constant _KEY_ISO_Level5_Lock

_KEY_ISO_Level5_Lock :: Int32
_KEY_ISO_Level5_Lock = 65043
-- constant _KEY_ISO_Level5_Shift

_KEY_ISO_Level5_Shift :: Int32
_KEY_ISO_Level5_Shift = 65041
-- constant _KEY_ISO_Lock

_KEY_ISO_Lock :: Int32
_KEY_ISO_Lock = 65025
-- constant _KEY_ISO_Move_Line_Down

_KEY_ISO_Move_Line_Down :: Int32
_KEY_ISO_Move_Line_Down = 65058
-- constant _KEY_ISO_Move_Line_Up

_KEY_ISO_Move_Line_Up :: Int32
_KEY_ISO_Move_Line_Up = 65057
-- constant _KEY_ISO_Next_Group

_KEY_ISO_Next_Group :: Int32
_KEY_ISO_Next_Group = 65032
-- constant _KEY_ISO_Next_Group_Lock

_KEY_ISO_Next_Group_Lock :: Int32
_KEY_ISO_Next_Group_Lock = 65033
-- constant _KEY_ISO_Partial_Line_Down

_KEY_ISO_Partial_Line_Down :: Int32
_KEY_ISO_Partial_Line_Down = 65060
-- constant _KEY_ISO_Partial_Line_Up

_KEY_ISO_Partial_Line_Up :: Int32
_KEY_ISO_Partial_Line_Up = 65059
-- constant _KEY_ISO_Partial_Space_Left

_KEY_ISO_Partial_Space_Left :: Int32
_KEY_ISO_Partial_Space_Left = 65061
-- constant _KEY_ISO_Partial_Space_Right

_KEY_ISO_Partial_Space_Right :: Int32
_KEY_ISO_Partial_Space_Right = 65062
-- constant _KEY_ISO_Prev_Group

_KEY_ISO_Prev_Group :: Int32
_KEY_ISO_Prev_Group = 65034
-- constant _KEY_ISO_Prev_Group_Lock

_KEY_ISO_Prev_Group_Lock :: Int32
_KEY_ISO_Prev_Group_Lock = 65035
-- constant _KEY_ISO_Release_Both_Margins

_KEY_ISO_Release_Both_Margins :: Int32
_KEY_ISO_Release_Both_Margins = 65067
-- constant _KEY_ISO_Release_Margin_Left

_KEY_ISO_Release_Margin_Left :: Int32
_KEY_ISO_Release_Margin_Left = 65065
-- constant _KEY_ISO_Release_Margin_Right

_KEY_ISO_Release_Margin_Right :: Int32
_KEY_ISO_Release_Margin_Right = 65066
-- constant _KEY_ISO_Set_Margin_Left

_KEY_ISO_Set_Margin_Left :: Int32
_KEY_ISO_Set_Margin_Left = 65063
-- constant _KEY_ISO_Set_Margin_Right

_KEY_ISO_Set_Margin_Right :: Int32
_KEY_ISO_Set_Margin_Right = 65064
-- constant _KEY_Iabovedot

_KEY_Iabovedot :: Int32
_KEY_Iabovedot = 681
-- constant _KEY_Iacute

_KEY_Iacute :: Int32
_KEY_Iacute = 205
-- constant _KEY_Ibelowdot

_KEY_Ibelowdot :: Int32
_KEY_Ibelowdot = 16785098
-- constant _KEY_Ibreve

_KEY_Ibreve :: Int32
_KEY_Ibreve = 16777516
-- constant _KEY_Icircumflex

_KEY_Icircumflex :: Int32
_KEY_Icircumflex = 206
-- constant _KEY_Idiaeresis

_KEY_Idiaeresis :: Int32
_KEY_Idiaeresis = 207
-- constant _KEY_Igrave

_KEY_Igrave :: Int32
_KEY_Igrave = 204
-- constant _KEY_Ihook

_KEY_Ihook :: Int32
_KEY_Ihook = 16785096
-- constant _KEY_Imacron

_KEY_Imacron :: Int32
_KEY_Imacron = 975
-- constant _KEY_Insert

_KEY_Insert :: Int32
_KEY_Insert = 65379
-- constant _KEY_Iogonek

_KEY_Iogonek :: Int32
_KEY_Iogonek = 967
-- constant _KEY_Itilde

_KEY_Itilde :: Int32
_KEY_Itilde = 933
-- constant _KEY_J

_KEY_J :: Int32
_KEY_J = 74
-- constant _KEY_Jcircumflex

_KEY_Jcircumflex :: Int32
_KEY_Jcircumflex = 684
-- constant _KEY_K

_KEY_K :: Int32
_KEY_K = 75
-- constant _KEY_KP_0

_KEY_KP_0 :: Int32
_KEY_KP_0 = 65456
-- constant _KEY_KP_1

_KEY_KP_1 :: Int32
_KEY_KP_1 = 65457
-- constant _KEY_KP_2

_KEY_KP_2 :: Int32
_KEY_KP_2 = 65458
-- constant _KEY_KP_3

_KEY_KP_3 :: Int32
_KEY_KP_3 = 65459
-- constant _KEY_KP_4

_KEY_KP_4 :: Int32
_KEY_KP_4 = 65460
-- constant _KEY_KP_5

_KEY_KP_5 :: Int32
_KEY_KP_5 = 65461
-- constant _KEY_KP_6

_KEY_KP_6 :: Int32
_KEY_KP_6 = 65462
-- constant _KEY_KP_7

_KEY_KP_7 :: Int32
_KEY_KP_7 = 65463
-- constant _KEY_KP_8

_KEY_KP_8 :: Int32
_KEY_KP_8 = 65464
-- constant _KEY_KP_9

_KEY_KP_9 :: Int32
_KEY_KP_9 = 65465
-- constant _KEY_KP_Add

_KEY_KP_Add :: Int32
_KEY_KP_Add = 65451
-- constant _KEY_KP_Begin

_KEY_KP_Begin :: Int32
_KEY_KP_Begin = 65437
-- constant _KEY_KP_Decimal

_KEY_KP_Decimal :: Int32
_KEY_KP_Decimal = 65454
-- constant _KEY_KP_Delete

_KEY_KP_Delete :: Int32
_KEY_KP_Delete = 65439
-- constant _KEY_KP_Divide

_KEY_KP_Divide :: Int32
_KEY_KP_Divide = 65455
-- constant _KEY_KP_Down

_KEY_KP_Down :: Int32
_KEY_KP_Down = 65433
-- constant _KEY_KP_End

_KEY_KP_End :: Int32
_KEY_KP_End = 65436
-- constant _KEY_KP_Enter

_KEY_KP_Enter :: Int32
_KEY_KP_Enter = 65421
-- constant _KEY_KP_Equal

_KEY_KP_Equal :: Int32
_KEY_KP_Equal = 65469
-- constant _KEY_KP_F1

_KEY_KP_F1 :: Int32
_KEY_KP_F1 = 65425
-- constant _KEY_KP_F2

_KEY_KP_F2 :: Int32
_KEY_KP_F2 = 65426
-- constant _KEY_KP_F3

_KEY_KP_F3 :: Int32
_KEY_KP_F3 = 65427
-- constant _KEY_KP_F4

_KEY_KP_F4 :: Int32
_KEY_KP_F4 = 65428
-- constant _KEY_KP_Home

_KEY_KP_Home :: Int32
_KEY_KP_Home = 65429
-- constant _KEY_KP_Insert

_KEY_KP_Insert :: Int32
_KEY_KP_Insert = 65438
-- constant _KEY_KP_Left

_KEY_KP_Left :: Int32
_KEY_KP_Left = 65430
-- constant _KEY_KP_Multiply

_KEY_KP_Multiply :: Int32
_KEY_KP_Multiply = 65450
-- constant _KEY_KP_Next

_KEY_KP_Next :: Int32
_KEY_KP_Next = 65435
-- constant _KEY_KP_Page_Down

_KEY_KP_Page_Down :: Int32
_KEY_KP_Page_Down = 65435
-- constant _KEY_KP_Page_Up

_KEY_KP_Page_Up :: Int32
_KEY_KP_Page_Up = 65434
-- constant _KEY_KP_Prior

_KEY_KP_Prior :: Int32
_KEY_KP_Prior = 65434
-- constant _KEY_KP_Right

_KEY_KP_Right :: Int32
_KEY_KP_Right = 65432
-- constant _KEY_KP_Separator

_KEY_KP_Separator :: Int32
_KEY_KP_Separator = 65452
-- constant _KEY_KP_Space

_KEY_KP_Space :: Int32
_KEY_KP_Space = 65408
-- constant _KEY_KP_Subtract

_KEY_KP_Subtract :: Int32
_KEY_KP_Subtract = 65453
-- constant _KEY_KP_Tab

_KEY_KP_Tab :: Int32
_KEY_KP_Tab = 65417
-- constant _KEY_KP_Up

_KEY_KP_Up :: Int32
_KEY_KP_Up = 65431
-- constant _KEY_Kana_Lock

_KEY_Kana_Lock :: Int32
_KEY_Kana_Lock = 65325
-- constant _KEY_Kana_Shift

_KEY_Kana_Shift :: Int32
_KEY_Kana_Shift = 65326
-- constant _KEY_Kanji

_KEY_Kanji :: Int32
_KEY_Kanji = 65313
-- constant _KEY_Kanji_Bangou

_KEY_Kanji_Bangou :: Int32
_KEY_Kanji_Bangou = 65335
-- constant _KEY_Katakana

_KEY_Katakana :: Int32
_KEY_Katakana = 65318
-- constant _KEY_KbdBrightnessDown

_KEY_KbdBrightnessDown :: Int32
_KEY_KbdBrightnessDown = 269025030
-- constant _KEY_KbdBrightnessUp

_KEY_KbdBrightnessUp :: Int32
_KEY_KbdBrightnessUp = 269025029
-- constant _KEY_KbdLightOnOff

_KEY_KbdLightOnOff :: Int32
_KEY_KbdLightOnOff = 269025028
-- constant _KEY_Kcedilla

_KEY_Kcedilla :: Int32
_KEY_Kcedilla = 979
-- constant _KEY_Korean_Won

_KEY_Korean_Won :: Int32
_KEY_Korean_Won = 3839
-- constant _KEY_L

_KEY_L :: Int32
_KEY_L = 76
-- constant _KEY_L1

_KEY_L1 :: Int32
_KEY_L1 = 65480
-- constant _KEY_L10

_KEY_L10 :: Int32
_KEY_L10 = 65489
-- constant _KEY_L2

_KEY_L2 :: Int32
_KEY_L2 = 65481
-- constant _KEY_L3

_KEY_L3 :: Int32
_KEY_L3 = 65482
-- constant _KEY_L4

_KEY_L4 :: Int32
_KEY_L4 = 65483
-- constant _KEY_L5

_KEY_L5 :: Int32
_KEY_L5 = 65484
-- constant _KEY_L6

_KEY_L6 :: Int32
_KEY_L6 = 65485
-- constant _KEY_L7

_KEY_L7 :: Int32
_KEY_L7 = 65486
-- constant _KEY_L8

_KEY_L8 :: Int32
_KEY_L8 = 65487
-- constant _KEY_L9

_KEY_L9 :: Int32
_KEY_L9 = 65488
-- constant _KEY_Lacute

_KEY_Lacute :: Int32
_KEY_Lacute = 453
-- constant _KEY_Last_Virtual_Screen

_KEY_Last_Virtual_Screen :: Int32
_KEY_Last_Virtual_Screen = 65236
-- constant _KEY_Launch0

_KEY_Launch0 :: Int32
_KEY_Launch0 = 269025088
-- constant _KEY_Launch1

_KEY_Launch1 :: Int32
_KEY_Launch1 = 269025089
-- constant _KEY_Launch2

_KEY_Launch2 :: Int32
_KEY_Launch2 = 269025090
-- constant _KEY_Launch3

_KEY_Launch3 :: Int32
_KEY_Launch3 = 269025091
-- constant _KEY_Launch4

_KEY_Launch4 :: Int32
_KEY_Launch4 = 269025092
-- constant _KEY_Launch5

_KEY_Launch5 :: Int32
_KEY_Launch5 = 269025093
-- constant _KEY_Launch6

_KEY_Launch6 :: Int32
_KEY_Launch6 = 269025094
-- constant _KEY_Launch7

_KEY_Launch7 :: Int32
_KEY_Launch7 = 269025095
-- constant _KEY_Launch8

_KEY_Launch8 :: Int32
_KEY_Launch8 = 269025096
-- constant _KEY_Launch9

_KEY_Launch9 :: Int32
_KEY_Launch9 = 269025097
-- constant _KEY_LaunchA

_KEY_LaunchA :: Int32
_KEY_LaunchA = 269025098
-- constant _KEY_LaunchB

_KEY_LaunchB :: Int32
_KEY_LaunchB = 269025099
-- constant _KEY_LaunchC

_KEY_LaunchC :: Int32
_KEY_LaunchC = 269025100
-- constant _KEY_LaunchD

_KEY_LaunchD :: Int32
_KEY_LaunchD = 269025101
-- constant _KEY_LaunchE

_KEY_LaunchE :: Int32
_KEY_LaunchE = 269025102
-- constant _KEY_LaunchF

_KEY_LaunchF :: Int32
_KEY_LaunchF = 269025103
-- constant _KEY_Lbelowdot

_KEY_Lbelowdot :: Int32
_KEY_Lbelowdot = 16784950
-- constant _KEY_Lcaron

_KEY_Lcaron :: Int32
_KEY_Lcaron = 421
-- constant _KEY_Lcedilla

_KEY_Lcedilla :: Int32
_KEY_Lcedilla = 934
-- constant _KEY_Left

_KEY_Left :: Int32
_KEY_Left = 65361
-- constant _KEY_LightBulb

_KEY_LightBulb :: Int32
_KEY_LightBulb = 269025077
-- constant _KEY_Linefeed

_KEY_Linefeed :: Int32
_KEY_Linefeed = 65290
-- constant _KEY_LiraSign

_KEY_LiraSign :: Int32
_KEY_LiraSign = 16785572
-- constant _KEY_LogGrabInfo

_KEY_LogGrabInfo :: Int32
_KEY_LogGrabInfo = 269024805
-- constant _KEY_LogOff

_KEY_LogOff :: Int32
_KEY_LogOff = 269025121
-- constant _KEY_LogWindowTree

_KEY_LogWindowTree :: Int32
_KEY_LogWindowTree = 269024804
-- constant _KEY_Lstroke

_KEY_Lstroke :: Int32
_KEY_Lstroke = 419
-- constant _KEY_M

_KEY_M :: Int32
_KEY_M = 77
-- constant _KEY_Mabovedot

_KEY_Mabovedot :: Int32
_KEY_Mabovedot = 16784960
-- constant _KEY_Macedonia_DSE

_KEY_Macedonia_DSE :: Int32
_KEY_Macedonia_DSE = 1717
-- constant _KEY_Macedonia_GJE

_KEY_Macedonia_GJE :: Int32
_KEY_Macedonia_GJE = 1714
-- constant _KEY_Macedonia_KJE

_KEY_Macedonia_KJE :: Int32
_KEY_Macedonia_KJE = 1724
-- constant _KEY_Macedonia_dse

_KEY_Macedonia_dse :: Int32
_KEY_Macedonia_dse = 1701
-- constant _KEY_Macedonia_gje

_KEY_Macedonia_gje :: Int32
_KEY_Macedonia_gje = 1698
-- constant _KEY_Macedonia_kje

_KEY_Macedonia_kje :: Int32
_KEY_Macedonia_kje = 1708
-- constant _KEY_Mae_Koho

_KEY_Mae_Koho :: Int32
_KEY_Mae_Koho = 65342
-- constant _KEY_Mail

_KEY_Mail :: Int32
_KEY_Mail = 269025049
-- constant _KEY_MailForward

_KEY_MailForward :: Int32
_KEY_MailForward = 269025168
-- constant _KEY_Market

_KEY_Market :: Int32
_KEY_Market = 269025122
-- constant _KEY_Massyo

_KEY_Massyo :: Int32
_KEY_Massyo = 65324
-- constant _KEY_Meeting

_KEY_Meeting :: Int32
_KEY_Meeting = 269025123
-- constant _KEY_Memo

_KEY_Memo :: Int32
_KEY_Memo = 269025054
-- constant _KEY_Menu

_KEY_Menu :: Int32
_KEY_Menu = 65383
-- constant _KEY_MenuKB

_KEY_MenuKB :: Int32
_KEY_MenuKB = 269025125
-- constant _KEY_MenuPB

_KEY_MenuPB :: Int32
_KEY_MenuPB = 269025126
-- constant _KEY_Messenger

_KEY_Messenger :: Int32
_KEY_Messenger = 269025166
-- constant _KEY_Meta_L

_KEY_Meta_L :: Int32
_KEY_Meta_L = 65511
-- constant _KEY_Meta_R

_KEY_Meta_R :: Int32
_KEY_Meta_R = 65512
-- constant _KEY_MillSign

_KEY_MillSign :: Int32
_KEY_MillSign = 16785573
-- constant _KEY_ModeLock

_KEY_ModeLock :: Int32
_KEY_ModeLock = 269025025
-- constant _KEY_Mode_switch

_KEY_Mode_switch :: Int32
_KEY_Mode_switch = 65406
-- constant _KEY_MonBrightnessDown

_KEY_MonBrightnessDown :: Int32
_KEY_MonBrightnessDown = 269025027
-- constant _KEY_MonBrightnessUp

_KEY_MonBrightnessUp :: Int32
_KEY_MonBrightnessUp = 269025026
-- constant _KEY_MouseKeys_Accel_Enable

_KEY_MouseKeys_Accel_Enable :: Int32
_KEY_MouseKeys_Accel_Enable = 65143
-- constant _KEY_MouseKeys_Enable

_KEY_MouseKeys_Enable :: Int32
_KEY_MouseKeys_Enable = 65142
-- constant _KEY_Muhenkan

_KEY_Muhenkan :: Int32
_KEY_Muhenkan = 65314
-- constant _KEY_Multi_key

_KEY_Multi_key :: Int32
_KEY_Multi_key = 65312
-- constant _KEY_MultipleCandidate

_KEY_MultipleCandidate :: Int32
_KEY_MultipleCandidate = 65341
-- constant _KEY_Music

_KEY_Music :: Int32
_KEY_Music = 269025170
-- constant _KEY_MyComputer

_KEY_MyComputer :: Int32
_KEY_MyComputer = 269025075
-- constant _KEY_MySites

_KEY_MySites :: Int32
_KEY_MySites = 269025127
-- constant _KEY_N

_KEY_N :: Int32
_KEY_N = 78
-- constant _KEY_Nacute

_KEY_Nacute :: Int32
_KEY_Nacute = 465
-- constant _KEY_NairaSign

_KEY_NairaSign :: Int32
_KEY_NairaSign = 16785574
-- constant _KEY_Ncaron

_KEY_Ncaron :: Int32
_KEY_Ncaron = 466
-- constant _KEY_Ncedilla

_KEY_Ncedilla :: Int32
_KEY_Ncedilla = 977
-- constant _KEY_New

_KEY_New :: Int32
_KEY_New = 269025128
-- constant _KEY_NewSheqelSign

_KEY_NewSheqelSign :: Int32
_KEY_NewSheqelSign = 16785578
-- constant _KEY_News

_KEY_News :: Int32
_KEY_News = 269025129
-- constant _KEY_Next

_KEY_Next :: Int32
_KEY_Next = 65366
-- constant _KEY_Next_VMode

_KEY_Next_VMode :: Int32
_KEY_Next_VMode = 269024802
-- constant _KEY_Next_Virtual_Screen

_KEY_Next_Virtual_Screen :: Int32
_KEY_Next_Virtual_Screen = 65234
-- constant _KEY_Ntilde

_KEY_Ntilde :: Int32
_KEY_Ntilde = 209
-- constant _KEY_Num_Lock

_KEY_Num_Lock :: Int32
_KEY_Num_Lock = 65407
-- constant _KEY_O

_KEY_O :: Int32
_KEY_O = 79
-- constant _KEY_OE

_KEY_OE :: Int32
_KEY_OE = 5052
-- constant _KEY_Oacute

_KEY_Oacute :: Int32
_KEY_Oacute = 211
-- constant _KEY_Obarred

_KEY_Obarred :: Int32
_KEY_Obarred = 16777631
-- constant _KEY_Obelowdot

_KEY_Obelowdot :: Int32
_KEY_Obelowdot = 16785100
-- constant _KEY_Ocaron

_KEY_Ocaron :: Int32
_KEY_Ocaron = 16777681
-- constant _KEY_Ocircumflex

_KEY_Ocircumflex :: Int32
_KEY_Ocircumflex = 212
-- constant _KEY_Ocircumflexacute

_KEY_Ocircumflexacute :: Int32
_KEY_Ocircumflexacute = 16785104
-- constant _KEY_Ocircumflexbelowdot

_KEY_Ocircumflexbelowdot :: Int32
_KEY_Ocircumflexbelowdot = 16785112
-- constant _KEY_Ocircumflexgrave

_KEY_Ocircumflexgrave :: Int32
_KEY_Ocircumflexgrave = 16785106
-- constant _KEY_Ocircumflexhook

_KEY_Ocircumflexhook :: Int32
_KEY_Ocircumflexhook = 16785108
-- constant _KEY_Ocircumflextilde

_KEY_Ocircumflextilde :: Int32
_KEY_Ocircumflextilde = 16785110
-- constant _KEY_Odiaeresis

_KEY_Odiaeresis :: Int32
_KEY_Odiaeresis = 214
-- constant _KEY_Odoubleacute

_KEY_Odoubleacute :: Int32
_KEY_Odoubleacute = 469
-- constant _KEY_OfficeHome

_KEY_OfficeHome :: Int32
_KEY_OfficeHome = 269025130
-- constant _KEY_Ograve

_KEY_Ograve :: Int32
_KEY_Ograve = 210
-- constant _KEY_Ohook

_KEY_Ohook :: Int32
_KEY_Ohook = 16785102
-- constant _KEY_Ohorn

_KEY_Ohorn :: Int32
_KEY_Ohorn = 16777632
-- constant _KEY_Ohornacute

_KEY_Ohornacute :: Int32
_KEY_Ohornacute = 16785114
-- constant _KEY_Ohornbelowdot

_KEY_Ohornbelowdot :: Int32
_KEY_Ohornbelowdot = 16785122
-- constant _KEY_Ohorngrave

_KEY_Ohorngrave :: Int32
_KEY_Ohorngrave = 16785116
-- constant _KEY_Ohornhook

_KEY_Ohornhook :: Int32
_KEY_Ohornhook = 16785118
-- constant _KEY_Ohorntilde

_KEY_Ohorntilde :: Int32
_KEY_Ohorntilde = 16785120
-- constant _KEY_Omacron

_KEY_Omacron :: Int32
_KEY_Omacron = 978
-- constant _KEY_Ooblique

_KEY_Ooblique :: Int32
_KEY_Ooblique = 216
-- constant _KEY_Open

_KEY_Open :: Int32
_KEY_Open = 269025131
-- constant _KEY_OpenURL

_KEY_OpenURL :: Int32
_KEY_OpenURL = 269025080
-- constant _KEY_Option

_KEY_Option :: Int32
_KEY_Option = 269025132
-- constant _KEY_Oslash

_KEY_Oslash :: Int32
_KEY_Oslash = 216
-- constant _KEY_Otilde

_KEY_Otilde :: Int32
_KEY_Otilde = 213
-- constant _KEY_Overlay1_Enable

_KEY_Overlay1_Enable :: Int32
_KEY_Overlay1_Enable = 65144
-- constant _KEY_Overlay2_Enable

_KEY_Overlay2_Enable :: Int32
_KEY_Overlay2_Enable = 65145
-- constant _KEY_P

_KEY_P :: Int32
_KEY_P = 80
-- constant _KEY_Pabovedot

_KEY_Pabovedot :: Int32
_KEY_Pabovedot = 16784982
-- constant _KEY_Page_Down

_KEY_Page_Down :: Int32
_KEY_Page_Down = 65366
-- constant _KEY_Page_Up

_KEY_Page_Up :: Int32
_KEY_Page_Up = 65365
-- constant _KEY_Paste

_KEY_Paste :: Int32
_KEY_Paste = 269025133
-- constant _KEY_Pause

_KEY_Pause :: Int32
_KEY_Pause = 65299
-- constant _KEY_PesetaSign

_KEY_PesetaSign :: Int32
_KEY_PesetaSign = 16785575
-- constant _KEY_Phone

_KEY_Phone :: Int32
_KEY_Phone = 269025134
-- constant _KEY_Pictures

_KEY_Pictures :: Int32
_KEY_Pictures = 269025169
-- constant _KEY_Pointer_Accelerate

_KEY_Pointer_Accelerate :: Int32
_KEY_Pointer_Accelerate = 65274
-- constant _KEY_Pointer_Button1

_KEY_Pointer_Button1 :: Int32
_KEY_Pointer_Button1 = 65257
-- constant _KEY_Pointer_Button2

_KEY_Pointer_Button2 :: Int32
_KEY_Pointer_Button2 = 65258
-- constant _KEY_Pointer_Button3

_KEY_Pointer_Button3 :: Int32
_KEY_Pointer_Button3 = 65259
-- constant _KEY_Pointer_Button4

_KEY_Pointer_Button4 :: Int32
_KEY_Pointer_Button4 = 65260
-- constant _KEY_Pointer_Button5

_KEY_Pointer_Button5 :: Int32
_KEY_Pointer_Button5 = 65261
-- constant _KEY_Pointer_Button_Dflt

_KEY_Pointer_Button_Dflt :: Int32
_KEY_Pointer_Button_Dflt = 65256
-- constant _KEY_Pointer_DblClick1

_KEY_Pointer_DblClick1 :: Int32
_KEY_Pointer_DblClick1 = 65263
-- constant _KEY_Pointer_DblClick2

_KEY_Pointer_DblClick2 :: Int32
_KEY_Pointer_DblClick2 = 65264
-- constant _KEY_Pointer_DblClick3

_KEY_Pointer_DblClick3 :: Int32
_KEY_Pointer_DblClick3 = 65265
-- constant _KEY_Pointer_DblClick4

_KEY_Pointer_DblClick4 :: Int32
_KEY_Pointer_DblClick4 = 65266
-- constant _KEY_Pointer_DblClick5

_KEY_Pointer_DblClick5 :: Int32
_KEY_Pointer_DblClick5 = 65267
-- constant _KEY_Pointer_DblClick_Dflt

_KEY_Pointer_DblClick_Dflt :: Int32
_KEY_Pointer_DblClick_Dflt = 65262
-- constant _KEY_Pointer_DfltBtnNext

_KEY_Pointer_DfltBtnNext :: Int32
_KEY_Pointer_DfltBtnNext = 65275
-- constant _KEY_Pointer_DfltBtnPrev

_KEY_Pointer_DfltBtnPrev :: Int32
_KEY_Pointer_DfltBtnPrev = 65276
-- constant _KEY_Pointer_Down

_KEY_Pointer_Down :: Int32
_KEY_Pointer_Down = 65251
-- constant _KEY_Pointer_DownLeft

_KEY_Pointer_DownLeft :: Int32
_KEY_Pointer_DownLeft = 65254
-- constant _KEY_Pointer_DownRight

_KEY_Pointer_DownRight :: Int32
_KEY_Pointer_DownRight = 65255
-- constant _KEY_Pointer_Drag1

_KEY_Pointer_Drag1 :: Int32
_KEY_Pointer_Drag1 = 65269
-- constant _KEY_Pointer_Drag2

_KEY_Pointer_Drag2 :: Int32
_KEY_Pointer_Drag2 = 65270
-- constant _KEY_Pointer_Drag3

_KEY_Pointer_Drag3 :: Int32
_KEY_Pointer_Drag3 = 65271
-- constant _KEY_Pointer_Drag4

_KEY_Pointer_Drag4 :: Int32
_KEY_Pointer_Drag4 = 65272
-- constant _KEY_Pointer_Drag5

_KEY_Pointer_Drag5 :: Int32
_KEY_Pointer_Drag5 = 65277
-- constant _KEY_Pointer_Drag_Dflt

_KEY_Pointer_Drag_Dflt :: Int32
_KEY_Pointer_Drag_Dflt = 65268
-- constant _KEY_Pointer_EnableKeys

_KEY_Pointer_EnableKeys :: Int32
_KEY_Pointer_EnableKeys = 65273
-- constant _KEY_Pointer_Left

_KEY_Pointer_Left :: Int32
_KEY_Pointer_Left = 65248
-- constant _KEY_Pointer_Right

_KEY_Pointer_Right :: Int32
_KEY_Pointer_Right = 65249
-- constant _KEY_Pointer_Up

_KEY_Pointer_Up :: Int32
_KEY_Pointer_Up = 65250
-- constant _KEY_Pointer_UpLeft

_KEY_Pointer_UpLeft :: Int32
_KEY_Pointer_UpLeft = 65252
-- constant _KEY_Pointer_UpRight

_KEY_Pointer_UpRight :: Int32
_KEY_Pointer_UpRight = 65253
-- constant _KEY_PowerDown

_KEY_PowerDown :: Int32
_KEY_PowerDown = 269025057
-- constant _KEY_PowerOff

_KEY_PowerOff :: Int32
_KEY_PowerOff = 269025066
-- constant _KEY_Prev_VMode

_KEY_Prev_VMode :: Int32
_KEY_Prev_VMode = 269024803
-- constant _KEY_Prev_Virtual_Screen

_KEY_Prev_Virtual_Screen :: Int32
_KEY_Prev_Virtual_Screen = 65233
-- constant _KEY_PreviousCandidate

_KEY_PreviousCandidate :: Int32
_KEY_PreviousCandidate = 65342
-- constant _KEY_Print

_KEY_Print :: Int32
_KEY_Print = 65377
-- constant _KEY_Prior

_KEY_Prior :: Int32
_KEY_Prior = 65365
-- constant _KEY_Q

_KEY_Q :: Int32
_KEY_Q = 81
-- constant _KEY_R

_KEY_R :: Int32
_KEY_R = 82
-- constant _KEY_R1

_KEY_R1 :: Int32
_KEY_R1 = 65490
-- constant _KEY_R10

_KEY_R10 :: Int32
_KEY_R10 = 65499
-- constant _KEY_R11

_KEY_R11 :: Int32
_KEY_R11 = 65500
-- constant _KEY_R12

_KEY_R12 :: Int32
_KEY_R12 = 65501
-- constant _KEY_R13

_KEY_R13 :: Int32
_KEY_R13 = 65502
-- constant _KEY_R14

_KEY_R14 :: Int32
_KEY_R14 = 65503
-- constant _KEY_R15

_KEY_R15 :: Int32
_KEY_R15 = 65504
-- constant _KEY_R2

_KEY_R2 :: Int32
_KEY_R2 = 65491
-- constant _KEY_R3

_KEY_R3 :: Int32
_KEY_R3 = 65492
-- constant _KEY_R4

_KEY_R4 :: Int32
_KEY_R4 = 65493
-- constant _KEY_R5

_KEY_R5 :: Int32
_KEY_R5 = 65494
-- constant _KEY_R6

_KEY_R6 :: Int32
_KEY_R6 = 65495
-- constant _KEY_R7

_KEY_R7 :: Int32
_KEY_R7 = 65496
-- constant _KEY_R8

_KEY_R8 :: Int32
_KEY_R8 = 65497
-- constant _KEY_R9

_KEY_R9 :: Int32
_KEY_R9 = 65498
-- constant _KEY_Racute

_KEY_Racute :: Int32
_KEY_Racute = 448
-- constant _KEY_Rcaron

_KEY_Rcaron :: Int32
_KEY_Rcaron = 472
-- constant _KEY_Rcedilla

_KEY_Rcedilla :: Int32
_KEY_Rcedilla = 931
-- constant _KEY_Red

_KEY_Red :: Int32
_KEY_Red = 269025187
-- constant _KEY_Redo

_KEY_Redo :: Int32
_KEY_Redo = 65382
-- constant _KEY_Refresh

_KEY_Refresh :: Int32
_KEY_Refresh = 269025065
-- constant _KEY_Reload

_KEY_Reload :: Int32
_KEY_Reload = 269025139
-- constant _KEY_RepeatKeys_Enable

_KEY_RepeatKeys_Enable :: Int32
_KEY_RepeatKeys_Enable = 65138
-- constant _KEY_Reply

_KEY_Reply :: Int32
_KEY_Reply = 269025138
-- constant _KEY_Return

_KEY_Return :: Int32
_KEY_Return = 65293
-- constant _KEY_Right

_KEY_Right :: Int32
_KEY_Right = 65363
-- constant _KEY_RockerDown

_KEY_RockerDown :: Int32
_KEY_RockerDown = 269025060
-- constant _KEY_RockerEnter

_KEY_RockerEnter :: Int32
_KEY_RockerEnter = 269025061
-- constant _KEY_RockerUp

_KEY_RockerUp :: Int32
_KEY_RockerUp = 269025059
-- constant _KEY_Romaji

_KEY_Romaji :: Int32
_KEY_Romaji = 65316
-- constant _KEY_RotateWindows

_KEY_RotateWindows :: Int32
_KEY_RotateWindows = 269025140
-- constant _KEY_RotationKB

_KEY_RotationKB :: Int32
_KEY_RotationKB = 269025142
-- constant _KEY_RotationPB

_KEY_RotationPB :: Int32
_KEY_RotationPB = 269025141
-- constant _KEY_RupeeSign

_KEY_RupeeSign :: Int32
_KEY_RupeeSign = 16785576
-- constant _KEY_S

_KEY_S :: Int32
_KEY_S = 83
-- constant _KEY_SCHWA

_KEY_SCHWA :: Int32
_KEY_SCHWA = 16777615
-- constant _KEY_Sabovedot

_KEY_Sabovedot :: Int32
_KEY_Sabovedot = 16784992
-- constant _KEY_Sacute

_KEY_Sacute :: Int32
_KEY_Sacute = 422
-- constant _KEY_Save

_KEY_Save :: Int32
_KEY_Save = 269025143
-- constant _KEY_Scaron

_KEY_Scaron :: Int32
_KEY_Scaron = 425
-- constant _KEY_Scedilla

_KEY_Scedilla :: Int32
_KEY_Scedilla = 426
-- constant _KEY_Scircumflex

_KEY_Scircumflex :: Int32
_KEY_Scircumflex = 734
-- constant _KEY_ScreenSaver

_KEY_ScreenSaver :: Int32
_KEY_ScreenSaver = 269025069
-- constant _KEY_ScrollClick

_KEY_ScrollClick :: Int32
_KEY_ScrollClick = 269025146
-- constant _KEY_ScrollDown

_KEY_ScrollDown :: Int32
_KEY_ScrollDown = 269025145
-- constant _KEY_ScrollUp

_KEY_ScrollUp :: Int32
_KEY_ScrollUp = 269025144
-- constant _KEY_Scroll_Lock

_KEY_Scroll_Lock :: Int32
_KEY_Scroll_Lock = 65300
-- constant _KEY_Search

_KEY_Search :: Int32
_KEY_Search = 269025051
-- constant _KEY_Select

_KEY_Select :: Int32
_KEY_Select = 65376
-- constant _KEY_SelectButton

_KEY_SelectButton :: Int32
_KEY_SelectButton = 269025184
-- constant _KEY_Send

_KEY_Send :: Int32
_KEY_Send = 269025147
-- constant _KEY_Serbian_DJE

_KEY_Serbian_DJE :: Int32
_KEY_Serbian_DJE = 1713
-- constant _KEY_Serbian_DZE

_KEY_Serbian_DZE :: Int32
_KEY_Serbian_DZE = 1727
-- constant _KEY_Serbian_JE

_KEY_Serbian_JE :: Int32
_KEY_Serbian_JE = 1720
-- constant _KEY_Serbian_LJE

_KEY_Serbian_LJE :: Int32
_KEY_Serbian_LJE = 1721
-- constant _KEY_Serbian_NJE

_KEY_Serbian_NJE :: Int32
_KEY_Serbian_NJE = 1722
-- constant _KEY_Serbian_TSHE

_KEY_Serbian_TSHE :: Int32
_KEY_Serbian_TSHE = 1723
-- constant _KEY_Serbian_dje

_KEY_Serbian_dje :: Int32
_KEY_Serbian_dje = 1697
-- constant _KEY_Serbian_dze

_KEY_Serbian_dze :: Int32
_KEY_Serbian_dze = 1711
-- constant _KEY_Serbian_je

_KEY_Serbian_je :: Int32
_KEY_Serbian_je = 1704
-- constant _KEY_Serbian_lje

_KEY_Serbian_lje :: Int32
_KEY_Serbian_lje = 1705
-- constant _KEY_Serbian_nje

_KEY_Serbian_nje :: Int32
_KEY_Serbian_nje = 1706
-- constant _KEY_Serbian_tshe

_KEY_Serbian_tshe :: Int32
_KEY_Serbian_tshe = 1707
-- constant _KEY_Shift_L

_KEY_Shift_L :: Int32
_KEY_Shift_L = 65505
-- constant _KEY_Shift_Lock

_KEY_Shift_Lock :: Int32
_KEY_Shift_Lock = 65510
-- constant _KEY_Shift_R

_KEY_Shift_R :: Int32
_KEY_Shift_R = 65506
-- constant _KEY_Shop

_KEY_Shop :: Int32
_KEY_Shop = 269025078
-- constant _KEY_SingleCandidate

_KEY_SingleCandidate :: Int32
_KEY_SingleCandidate = 65340
-- constant _KEY_Sinh_a

_KEY_Sinh_a :: Int32
_KEY_Sinh_a = 16780677
-- constant _KEY_Sinh_aa

_KEY_Sinh_aa :: Int32
_KEY_Sinh_aa = 16780678
-- constant _KEY_Sinh_aa2

_KEY_Sinh_aa2 :: Int32
_KEY_Sinh_aa2 = 16780751
-- constant _KEY_Sinh_ae

_KEY_Sinh_ae :: Int32
_KEY_Sinh_ae = 16780679
-- constant _KEY_Sinh_ae2

_KEY_Sinh_ae2 :: Int32
_KEY_Sinh_ae2 = 16780752
-- constant _KEY_Sinh_aee

_KEY_Sinh_aee :: Int32
_KEY_Sinh_aee = 16780680
-- constant _KEY_Sinh_aee2

_KEY_Sinh_aee2 :: Int32
_KEY_Sinh_aee2 = 16780753
-- constant _KEY_Sinh_ai

_KEY_Sinh_ai :: Int32
_KEY_Sinh_ai = 16780691
-- constant _KEY_Sinh_ai2

_KEY_Sinh_ai2 :: Int32
_KEY_Sinh_ai2 = 16780763
-- constant _KEY_Sinh_al

_KEY_Sinh_al :: Int32
_KEY_Sinh_al = 16780746
-- constant _KEY_Sinh_au

_KEY_Sinh_au :: Int32
_KEY_Sinh_au = 16780694
-- constant _KEY_Sinh_au2

_KEY_Sinh_au2 :: Int32
_KEY_Sinh_au2 = 16780766
-- constant _KEY_Sinh_ba

_KEY_Sinh_ba :: Int32
_KEY_Sinh_ba = 16780726
-- constant _KEY_Sinh_bha

_KEY_Sinh_bha :: Int32
_KEY_Sinh_bha = 16780727
-- constant _KEY_Sinh_ca

_KEY_Sinh_ca :: Int32
_KEY_Sinh_ca = 16780704
-- constant _KEY_Sinh_cha

_KEY_Sinh_cha :: Int32
_KEY_Sinh_cha = 16780705
-- constant _KEY_Sinh_dda

_KEY_Sinh_dda :: Int32
_KEY_Sinh_dda = 16780713
-- constant _KEY_Sinh_ddha

_KEY_Sinh_ddha :: Int32
_KEY_Sinh_ddha = 16780714
-- constant _KEY_Sinh_dha

_KEY_Sinh_dha :: Int32
_KEY_Sinh_dha = 16780719
-- constant _KEY_Sinh_dhha

_KEY_Sinh_dhha :: Int32
_KEY_Sinh_dhha = 16780720
-- constant _KEY_Sinh_e

_KEY_Sinh_e :: Int32
_KEY_Sinh_e = 16780689
-- constant _KEY_Sinh_e2

_KEY_Sinh_e2 :: Int32
_KEY_Sinh_e2 = 16780761
-- constant _KEY_Sinh_ee

_KEY_Sinh_ee :: Int32
_KEY_Sinh_ee = 16780690
-- constant _KEY_Sinh_ee2

_KEY_Sinh_ee2 :: Int32
_KEY_Sinh_ee2 = 16780762
-- constant _KEY_Sinh_fa

_KEY_Sinh_fa :: Int32
_KEY_Sinh_fa = 16780742
-- constant _KEY_Sinh_ga

_KEY_Sinh_ga :: Int32
_KEY_Sinh_ga = 16780700
-- constant _KEY_Sinh_gha

_KEY_Sinh_gha :: Int32
_KEY_Sinh_gha = 16780701
-- constant _KEY_Sinh_h2

_KEY_Sinh_h2 :: Int32
_KEY_Sinh_h2 = 16780675
-- constant _KEY_Sinh_ha

_KEY_Sinh_ha :: Int32
_KEY_Sinh_ha = 16780740
-- constant _KEY_Sinh_i

_KEY_Sinh_i :: Int32
_KEY_Sinh_i = 16780681
-- constant _KEY_Sinh_i2

_KEY_Sinh_i2 :: Int32
_KEY_Sinh_i2 = 16780754
-- constant _KEY_Sinh_ii

_KEY_Sinh_ii :: Int32
_KEY_Sinh_ii = 16780682
-- constant _KEY_Sinh_ii2

_KEY_Sinh_ii2 :: Int32
_KEY_Sinh_ii2 = 16780755
-- constant _KEY_Sinh_ja

_KEY_Sinh_ja :: Int32
_KEY_Sinh_ja = 16780706
-- constant _KEY_Sinh_jha

_KEY_Sinh_jha :: Int32
_KEY_Sinh_jha = 16780707
-- constant _KEY_Sinh_jnya

_KEY_Sinh_jnya :: Int32
_KEY_Sinh_jnya = 16780709
-- constant _KEY_Sinh_ka

_KEY_Sinh_ka :: Int32
_KEY_Sinh_ka = 16780698
-- constant _KEY_Sinh_kha

_KEY_Sinh_kha :: Int32
_KEY_Sinh_kha = 16780699
-- constant _KEY_Sinh_kunddaliya

_KEY_Sinh_kunddaliya :: Int32
_KEY_Sinh_kunddaliya = 16780788
-- constant _KEY_Sinh_la

_KEY_Sinh_la :: Int32
_KEY_Sinh_la = 16780733
-- constant _KEY_Sinh_lla

_KEY_Sinh_lla :: Int32
_KEY_Sinh_lla = 16780741
-- constant _KEY_Sinh_lu

_KEY_Sinh_lu :: Int32
_KEY_Sinh_lu = 16780687
-- constant _KEY_Sinh_lu2

_KEY_Sinh_lu2 :: Int32
_KEY_Sinh_lu2 = 16780767
-- constant _KEY_Sinh_luu

_KEY_Sinh_luu :: Int32
_KEY_Sinh_luu = 16780688
-- constant _KEY_Sinh_luu2

_KEY_Sinh_luu2 :: Int32
_KEY_Sinh_luu2 = 16780787
-- constant _KEY_Sinh_ma

_KEY_Sinh_ma :: Int32
_KEY_Sinh_ma = 16780728
-- constant _KEY_Sinh_mba

_KEY_Sinh_mba :: Int32
_KEY_Sinh_mba = 16780729
-- constant _KEY_Sinh_na

_KEY_Sinh_na :: Int32
_KEY_Sinh_na = 16780721
-- constant _KEY_Sinh_ndda

_KEY_Sinh_ndda :: Int32
_KEY_Sinh_ndda = 16780716
-- constant _KEY_Sinh_ndha

_KEY_Sinh_ndha :: Int32
_KEY_Sinh_ndha = 16780723
-- constant _KEY_Sinh_ng

_KEY_Sinh_ng :: Int32
_KEY_Sinh_ng = 16780674
-- constant _KEY_Sinh_ng2

_KEY_Sinh_ng2 :: Int32
_KEY_Sinh_ng2 = 16780702
-- constant _KEY_Sinh_nga

_KEY_Sinh_nga :: Int32
_KEY_Sinh_nga = 16780703
-- constant _KEY_Sinh_nja

_KEY_Sinh_nja :: Int32
_KEY_Sinh_nja = 16780710
-- constant _KEY_Sinh_nna

_KEY_Sinh_nna :: Int32
_KEY_Sinh_nna = 16780715
-- constant _KEY_Sinh_nya

_KEY_Sinh_nya :: Int32
_KEY_Sinh_nya = 16780708
-- constant _KEY_Sinh_o

_KEY_Sinh_o :: Int32
_KEY_Sinh_o = 16780692
-- constant _KEY_Sinh_o2

_KEY_Sinh_o2 :: Int32
_KEY_Sinh_o2 = 16780764
-- constant _KEY_Sinh_oo

_KEY_Sinh_oo :: Int32
_KEY_Sinh_oo = 16780693
-- constant _KEY_Sinh_oo2

_KEY_Sinh_oo2 :: Int32
_KEY_Sinh_oo2 = 16780765
-- constant _KEY_Sinh_pa

_KEY_Sinh_pa :: Int32
_KEY_Sinh_pa = 16780724
-- constant _KEY_Sinh_pha

_KEY_Sinh_pha :: Int32
_KEY_Sinh_pha = 16780725
-- constant _KEY_Sinh_ra

_KEY_Sinh_ra :: Int32
_KEY_Sinh_ra = 16780731
-- constant _KEY_Sinh_ri

_KEY_Sinh_ri :: Int32
_KEY_Sinh_ri = 16780685
-- constant _KEY_Sinh_rii

_KEY_Sinh_rii :: Int32
_KEY_Sinh_rii = 16780686
-- constant _KEY_Sinh_ru2

_KEY_Sinh_ru2 :: Int32
_KEY_Sinh_ru2 = 16780760
-- constant _KEY_Sinh_ruu2

_KEY_Sinh_ruu2 :: Int32
_KEY_Sinh_ruu2 = 16780786
-- constant _KEY_Sinh_sa

_KEY_Sinh_sa :: Int32
_KEY_Sinh_sa = 16780739
-- constant _KEY_Sinh_sha

_KEY_Sinh_sha :: Int32
_KEY_Sinh_sha = 16780737
-- constant _KEY_Sinh_ssha

_KEY_Sinh_ssha :: Int32
_KEY_Sinh_ssha = 16780738
-- constant _KEY_Sinh_tha

_KEY_Sinh_tha :: Int32
_KEY_Sinh_tha = 16780717
-- constant _KEY_Sinh_thha

_KEY_Sinh_thha :: Int32
_KEY_Sinh_thha = 16780718
-- constant _KEY_Sinh_tta

_KEY_Sinh_tta :: Int32
_KEY_Sinh_tta = 16780711
-- constant _KEY_Sinh_ttha

_KEY_Sinh_ttha :: Int32
_KEY_Sinh_ttha = 16780712
-- constant _KEY_Sinh_u

_KEY_Sinh_u :: Int32
_KEY_Sinh_u = 16780683
-- constant _KEY_Sinh_u2

_KEY_Sinh_u2 :: Int32
_KEY_Sinh_u2 = 16780756
-- constant _KEY_Sinh_uu

_KEY_Sinh_uu :: Int32
_KEY_Sinh_uu = 16780684
-- constant _KEY_Sinh_uu2

_KEY_Sinh_uu2 :: Int32
_KEY_Sinh_uu2 = 16780758
-- constant _KEY_Sinh_va

_KEY_Sinh_va :: Int32
_KEY_Sinh_va = 16780736
-- constant _KEY_Sinh_ya

_KEY_Sinh_ya :: Int32
_KEY_Sinh_ya = 16780730
-- constant _KEY_Sleep

_KEY_Sleep :: Int32
_KEY_Sleep = 269025071
-- constant _KEY_SlowKeys_Enable

_KEY_SlowKeys_Enable :: Int32
_KEY_SlowKeys_Enable = 65139
-- constant _KEY_Spell

_KEY_Spell :: Int32
_KEY_Spell = 269025148
-- constant _KEY_SplitScreen

_KEY_SplitScreen :: Int32
_KEY_SplitScreen = 269025149
-- constant _KEY_Standby

_KEY_Standby :: Int32
_KEY_Standby = 269025040
-- constant _KEY_Start

_KEY_Start :: Int32
_KEY_Start = 269025050
-- constant _KEY_StickyKeys_Enable

_KEY_StickyKeys_Enable :: Int32
_KEY_StickyKeys_Enable = 65141
-- constant _KEY_Stop

_KEY_Stop :: Int32
_KEY_Stop = 269025064
-- constant _KEY_Subtitle

_KEY_Subtitle :: Int32
_KEY_Subtitle = 269025178
-- constant _KEY_Super_L

_KEY_Super_L :: Int32
_KEY_Super_L = 65515
-- constant _KEY_Super_R

_KEY_Super_R :: Int32
_KEY_Super_R = 65516
-- constant _KEY_Support

_KEY_Support :: Int32
_KEY_Support = 269025150
-- constant _KEY_Suspend

_KEY_Suspend :: Int32
_KEY_Suspend = 269025191
-- constant _KEY_Switch_VT_1

_KEY_Switch_VT_1 :: Int32
_KEY_Switch_VT_1 = 269024769
-- constant _KEY_Switch_VT_10

_KEY_Switch_VT_10 :: Int32
_KEY_Switch_VT_10 = 269024778
-- constant _KEY_Switch_VT_11

_KEY_Switch_VT_11 :: Int32
_KEY_Switch_VT_11 = 269024779
-- constant _KEY_Switch_VT_12

_KEY_Switch_VT_12 :: Int32
_KEY_Switch_VT_12 = 269024780
-- constant _KEY_Switch_VT_2

_KEY_Switch_VT_2 :: Int32
_KEY_Switch_VT_2 = 269024770
-- constant _KEY_Switch_VT_3

_KEY_Switch_VT_3 :: Int32
_KEY_Switch_VT_3 = 269024771
-- constant _KEY_Switch_VT_4

_KEY_Switch_VT_4 :: Int32
_KEY_Switch_VT_4 = 269024772
-- constant _KEY_Switch_VT_5

_KEY_Switch_VT_5 :: Int32
_KEY_Switch_VT_5 = 269024773
-- constant _KEY_Switch_VT_6

_KEY_Switch_VT_6 :: Int32
_KEY_Switch_VT_6 = 269024774
-- constant _KEY_Switch_VT_7

_KEY_Switch_VT_7 :: Int32
_KEY_Switch_VT_7 = 269024775
-- constant _KEY_Switch_VT_8

_KEY_Switch_VT_8 :: Int32
_KEY_Switch_VT_8 = 269024776
-- constant _KEY_Switch_VT_9

_KEY_Switch_VT_9 :: Int32
_KEY_Switch_VT_9 = 269024777
-- constant _KEY_Sys_Req

_KEY_Sys_Req :: Int32
_KEY_Sys_Req = 65301
-- constant _KEY_T

_KEY_T :: Int32
_KEY_T = 84
-- constant _KEY_THORN

_KEY_THORN :: Int32
_KEY_THORN = 222
-- constant _KEY_Tab

_KEY_Tab :: Int32
_KEY_Tab = 65289
-- constant _KEY_Tabovedot

_KEY_Tabovedot :: Int32
_KEY_Tabovedot = 16785002
-- constant _KEY_TaskPane

_KEY_TaskPane :: Int32
_KEY_TaskPane = 269025151
-- constant _KEY_Tcaron

_KEY_Tcaron :: Int32
_KEY_Tcaron = 427
-- constant _KEY_Tcedilla

_KEY_Tcedilla :: Int32
_KEY_Tcedilla = 478
-- constant _KEY_Terminal

_KEY_Terminal :: Int32
_KEY_Terminal = 269025152
-- constant _KEY_Terminate_Server

_KEY_Terminate_Server :: Int32
_KEY_Terminate_Server = 65237
-- constant _KEY_Thai_baht

_KEY_Thai_baht :: Int32
_KEY_Thai_baht = 3551
-- constant _KEY_Thai_bobaimai

_KEY_Thai_bobaimai :: Int32
_KEY_Thai_bobaimai = 3514
-- constant _KEY_Thai_chochan

_KEY_Thai_chochan :: Int32
_KEY_Thai_chochan = 3496
-- constant _KEY_Thai_chochang

_KEY_Thai_chochang :: Int32
_KEY_Thai_chochang = 3498
-- constant _KEY_Thai_choching

_KEY_Thai_choching :: Int32
_KEY_Thai_choching = 3497
-- constant _KEY_Thai_chochoe

_KEY_Thai_chochoe :: Int32
_KEY_Thai_chochoe = 3500
-- constant _KEY_Thai_dochada

_KEY_Thai_dochada :: Int32
_KEY_Thai_dochada = 3502
-- constant _KEY_Thai_dodek

_KEY_Thai_dodek :: Int32
_KEY_Thai_dodek = 3508
-- constant _KEY_Thai_fofa

_KEY_Thai_fofa :: Int32
_KEY_Thai_fofa = 3517
-- constant _KEY_Thai_fofan

_KEY_Thai_fofan :: Int32
_KEY_Thai_fofan = 3519
-- constant _KEY_Thai_hohip

_KEY_Thai_hohip :: Int32
_KEY_Thai_hohip = 3531
-- constant _KEY_Thai_honokhuk

_KEY_Thai_honokhuk :: Int32
_KEY_Thai_honokhuk = 3534
-- constant _KEY_Thai_khokhai

_KEY_Thai_khokhai :: Int32
_KEY_Thai_khokhai = 3490
-- constant _KEY_Thai_khokhon

_KEY_Thai_khokhon :: Int32
_KEY_Thai_khokhon = 3493
-- constant _KEY_Thai_khokhuat

_KEY_Thai_khokhuat :: Int32
_KEY_Thai_khokhuat = 3491
-- constant _KEY_Thai_khokhwai

_KEY_Thai_khokhwai :: Int32
_KEY_Thai_khokhwai = 3492
-- constant _KEY_Thai_khorakhang

_KEY_Thai_khorakhang :: Int32
_KEY_Thai_khorakhang = 3494
-- constant _KEY_Thai_kokai

_KEY_Thai_kokai :: Int32
_KEY_Thai_kokai = 3489
-- constant _KEY_Thai_lakkhangyao

_KEY_Thai_lakkhangyao :: Int32
_KEY_Thai_lakkhangyao = 3557
-- constant _KEY_Thai_lekchet

_KEY_Thai_lekchet :: Int32
_KEY_Thai_lekchet = 3575
-- constant _KEY_Thai_lekha

_KEY_Thai_lekha :: Int32
_KEY_Thai_lekha = 3573
-- constant _KEY_Thai_lekhok

_KEY_Thai_lekhok :: Int32
_KEY_Thai_lekhok = 3574
-- constant _KEY_Thai_lekkao

_KEY_Thai_lekkao :: Int32
_KEY_Thai_lekkao = 3577
-- constant _KEY_Thai_leknung

_KEY_Thai_leknung :: Int32
_KEY_Thai_leknung = 3569
-- constant _KEY_Thai_lekpaet

_KEY_Thai_lekpaet :: Int32
_KEY_Thai_lekpaet = 3576
-- constant _KEY_Thai_leksam

_KEY_Thai_leksam :: Int32
_KEY_Thai_leksam = 3571
-- constant _KEY_Thai_leksi

_KEY_Thai_leksi :: Int32
_KEY_Thai_leksi = 3572
-- constant _KEY_Thai_leksong

_KEY_Thai_leksong :: Int32
_KEY_Thai_leksong = 3570
-- constant _KEY_Thai_leksun

_KEY_Thai_leksun :: Int32
_KEY_Thai_leksun = 3568
-- constant _KEY_Thai_lochula

_KEY_Thai_lochula :: Int32
_KEY_Thai_lochula = 3532
-- constant _KEY_Thai_loling

_KEY_Thai_loling :: Int32
_KEY_Thai_loling = 3525
-- constant _KEY_Thai_lu

_KEY_Thai_lu :: Int32
_KEY_Thai_lu = 3526
-- constant _KEY_Thai_maichattawa

_KEY_Thai_maichattawa :: Int32
_KEY_Thai_maichattawa = 3563
-- constant _KEY_Thai_maiek

_KEY_Thai_maiek :: Int32
_KEY_Thai_maiek = 3560
-- constant _KEY_Thai_maihanakat

_KEY_Thai_maihanakat :: Int32
_KEY_Thai_maihanakat = 3537
-- constant _KEY_Thai_maihanakat_maitho

_KEY_Thai_maihanakat_maitho :: Int32
_KEY_Thai_maihanakat_maitho = 3550
-- constant _KEY_Thai_maitaikhu

_KEY_Thai_maitaikhu :: Int32
_KEY_Thai_maitaikhu = 3559
-- constant _KEY_Thai_maitho

_KEY_Thai_maitho :: Int32
_KEY_Thai_maitho = 3561
-- constant _KEY_Thai_maitri

_KEY_Thai_maitri :: Int32
_KEY_Thai_maitri = 3562
-- constant _KEY_Thai_maiyamok

_KEY_Thai_maiyamok :: Int32
_KEY_Thai_maiyamok = 3558
-- constant _KEY_Thai_moma

_KEY_Thai_moma :: Int32
_KEY_Thai_moma = 3521
-- constant _KEY_Thai_ngongu

_KEY_Thai_ngongu :: Int32
_KEY_Thai_ngongu = 3495
-- constant _KEY_Thai_nikhahit

_KEY_Thai_nikhahit :: Int32
_KEY_Thai_nikhahit = 3565
-- constant _KEY_Thai_nonen

_KEY_Thai_nonen :: Int32
_KEY_Thai_nonen = 3507
-- constant _KEY_Thai_nonu

_KEY_Thai_nonu :: Int32
_KEY_Thai_nonu = 3513
-- constant _KEY_Thai_oang

_KEY_Thai_oang :: Int32
_KEY_Thai_oang = 3533
-- constant _KEY_Thai_paiyannoi

_KEY_Thai_paiyannoi :: Int32
_KEY_Thai_paiyannoi = 3535
-- constant _KEY_Thai_phinthu

_KEY_Thai_phinthu :: Int32
_KEY_Thai_phinthu = 3546
-- constant _KEY_Thai_phophan

_KEY_Thai_phophan :: Int32
_KEY_Thai_phophan = 3518
-- constant _KEY_Thai_phophung

_KEY_Thai_phophung :: Int32
_KEY_Thai_phophung = 3516
-- constant _KEY_Thai_phosamphao

_KEY_Thai_phosamphao :: Int32
_KEY_Thai_phosamphao = 3520
-- constant _KEY_Thai_popla

_KEY_Thai_popla :: Int32
_KEY_Thai_popla = 3515
-- constant _KEY_Thai_rorua

_KEY_Thai_rorua :: Int32
_KEY_Thai_rorua = 3523
-- constant _KEY_Thai_ru

_KEY_Thai_ru :: Int32
_KEY_Thai_ru = 3524
-- constant _KEY_Thai_saraa

_KEY_Thai_saraa :: Int32
_KEY_Thai_saraa = 3536
-- constant _KEY_Thai_saraaa

_KEY_Thai_saraaa :: Int32
_KEY_Thai_saraaa = 3538
-- constant _KEY_Thai_saraae

_KEY_Thai_saraae :: Int32
_KEY_Thai_saraae = 3553
-- constant _KEY_Thai_saraaimaimalai

_KEY_Thai_saraaimaimalai :: Int32
_KEY_Thai_saraaimaimalai = 3556
-- constant _KEY_Thai_saraaimaimuan

_KEY_Thai_saraaimaimuan :: Int32
_KEY_Thai_saraaimaimuan = 3555
-- constant _KEY_Thai_saraam

_KEY_Thai_saraam :: Int32
_KEY_Thai_saraam = 3539
-- constant _KEY_Thai_sarae

_KEY_Thai_sarae :: Int32
_KEY_Thai_sarae = 3552
-- constant _KEY_Thai_sarai

_KEY_Thai_sarai :: Int32
_KEY_Thai_sarai = 3540
-- constant _KEY_Thai_saraii

_KEY_Thai_saraii :: Int32
_KEY_Thai_saraii = 3541
-- constant _KEY_Thai_sarao

_KEY_Thai_sarao :: Int32
_KEY_Thai_sarao = 3554
-- constant _KEY_Thai_sarau

_KEY_Thai_sarau :: Int32
_KEY_Thai_sarau = 3544
-- constant _KEY_Thai_saraue

_KEY_Thai_saraue :: Int32
_KEY_Thai_saraue = 3542
-- constant _KEY_Thai_sarauee

_KEY_Thai_sarauee :: Int32
_KEY_Thai_sarauee = 3543
-- constant _KEY_Thai_sarauu

_KEY_Thai_sarauu :: Int32
_KEY_Thai_sarauu = 3545
-- constant _KEY_Thai_sorusi

_KEY_Thai_sorusi :: Int32
_KEY_Thai_sorusi = 3529
-- constant _KEY_Thai_sosala

_KEY_Thai_sosala :: Int32
_KEY_Thai_sosala = 3528
-- constant _KEY_Thai_soso

_KEY_Thai_soso :: Int32
_KEY_Thai_soso = 3499
-- constant _KEY_Thai_sosua

_KEY_Thai_sosua :: Int32
_KEY_Thai_sosua = 3530
-- constant _KEY_Thai_thanthakhat

_KEY_Thai_thanthakhat :: Int32
_KEY_Thai_thanthakhat = 3564
-- constant _KEY_Thai_thonangmontho

_KEY_Thai_thonangmontho :: Int32
_KEY_Thai_thonangmontho = 3505
-- constant _KEY_Thai_thophuthao

_KEY_Thai_thophuthao :: Int32
_KEY_Thai_thophuthao = 3506
-- constant _KEY_Thai_thothahan

_KEY_Thai_thothahan :: Int32
_KEY_Thai_thothahan = 3511
-- constant _KEY_Thai_thothan

_KEY_Thai_thothan :: Int32
_KEY_Thai_thothan = 3504
-- constant _KEY_Thai_thothong

_KEY_Thai_thothong :: Int32
_KEY_Thai_thothong = 3512
-- constant _KEY_Thai_thothung

_KEY_Thai_thothung :: Int32
_KEY_Thai_thothung = 3510
-- constant _KEY_Thai_topatak

_KEY_Thai_topatak :: Int32
_KEY_Thai_topatak = 3503
-- constant _KEY_Thai_totao

_KEY_Thai_totao :: Int32
_KEY_Thai_totao = 3509
-- constant _KEY_Thai_wowaen

_KEY_Thai_wowaen :: Int32
_KEY_Thai_wowaen = 3527
-- constant _KEY_Thai_yoyak

_KEY_Thai_yoyak :: Int32
_KEY_Thai_yoyak = 3522
-- constant _KEY_Thai_yoying

_KEY_Thai_yoying :: Int32
_KEY_Thai_yoying = 3501
-- constant _KEY_Thorn

_KEY_Thorn :: Int32
_KEY_Thorn = 222
-- constant _KEY_Time

_KEY_Time :: Int32
_KEY_Time = 269025183
-- constant _KEY_ToDoList

_KEY_ToDoList :: Int32
_KEY_ToDoList = 269025055
-- constant _KEY_Tools

_KEY_Tools :: Int32
_KEY_Tools = 269025153
-- constant _KEY_TopMenu

_KEY_TopMenu :: Int32
_KEY_TopMenu = 269025186
-- constant _KEY_TouchpadOff

_KEY_TouchpadOff :: Int32
_KEY_TouchpadOff = 269025201
-- constant _KEY_TouchpadOn

_KEY_TouchpadOn :: Int32
_KEY_TouchpadOn = 269025200
-- constant _KEY_TouchpadToggle

_KEY_TouchpadToggle :: Int32
_KEY_TouchpadToggle = 269025193
-- constant _KEY_Touroku

_KEY_Touroku :: Int32
_KEY_Touroku = 65323
-- constant _KEY_Travel

_KEY_Travel :: Int32
_KEY_Travel = 269025154
-- constant _KEY_Tslash

_KEY_Tslash :: Int32
_KEY_Tslash = 940
-- constant _KEY_U

_KEY_U :: Int32
_KEY_U = 85
-- constant _KEY_UWB

_KEY_UWB :: Int32
_KEY_UWB = 269025174
-- constant _KEY_Uacute

_KEY_Uacute :: Int32
_KEY_Uacute = 218
-- constant _KEY_Ubelowdot

_KEY_Ubelowdot :: Int32
_KEY_Ubelowdot = 16785124
-- constant _KEY_Ubreve

_KEY_Ubreve :: Int32
_KEY_Ubreve = 733
-- constant _KEY_Ucircumflex

_KEY_Ucircumflex :: Int32
_KEY_Ucircumflex = 219
-- constant _KEY_Udiaeresis

_KEY_Udiaeresis :: Int32
_KEY_Udiaeresis = 220
-- constant _KEY_Udoubleacute

_KEY_Udoubleacute :: Int32
_KEY_Udoubleacute = 475
-- constant _KEY_Ugrave

_KEY_Ugrave :: Int32
_KEY_Ugrave = 217
-- constant _KEY_Uhook

_KEY_Uhook :: Int32
_KEY_Uhook = 16785126
-- constant _KEY_Uhorn

_KEY_Uhorn :: Int32
_KEY_Uhorn = 16777647
-- constant _KEY_Uhornacute

_KEY_Uhornacute :: Int32
_KEY_Uhornacute = 16785128
-- constant _KEY_Uhornbelowdot

_KEY_Uhornbelowdot :: Int32
_KEY_Uhornbelowdot = 16785136
-- constant _KEY_Uhorngrave

_KEY_Uhorngrave :: Int32
_KEY_Uhorngrave = 16785130
-- constant _KEY_Uhornhook

_KEY_Uhornhook :: Int32
_KEY_Uhornhook = 16785132
-- constant _KEY_Uhorntilde

_KEY_Uhorntilde :: Int32
_KEY_Uhorntilde = 16785134
-- constant _KEY_Ukrainian_GHE_WITH_UPTURN

_KEY_Ukrainian_GHE_WITH_UPTURN :: Int32
_KEY_Ukrainian_GHE_WITH_UPTURN = 1725
-- constant _KEY_Ukrainian_I

_KEY_Ukrainian_I :: Int32
_KEY_Ukrainian_I = 1718
-- constant _KEY_Ukrainian_IE

_KEY_Ukrainian_IE :: Int32
_KEY_Ukrainian_IE = 1716
-- constant _KEY_Ukrainian_YI

_KEY_Ukrainian_YI :: Int32
_KEY_Ukrainian_YI = 1719
-- constant _KEY_Ukrainian_ghe_with_upturn

_KEY_Ukrainian_ghe_with_upturn :: Int32
_KEY_Ukrainian_ghe_with_upturn = 1709
-- constant _KEY_Ukrainian_i

_KEY_Ukrainian_i :: Int32
_KEY_Ukrainian_i = 1702
-- constant _KEY_Ukrainian_ie

_KEY_Ukrainian_ie :: Int32
_KEY_Ukrainian_ie = 1700
-- constant _KEY_Ukrainian_yi

_KEY_Ukrainian_yi :: Int32
_KEY_Ukrainian_yi = 1703
-- constant _KEY_Ukranian_I

_KEY_Ukranian_I :: Int32
_KEY_Ukranian_I = 1718
-- constant _KEY_Ukranian_JE

_KEY_Ukranian_JE :: Int32
_KEY_Ukranian_JE = 1716
-- constant _KEY_Ukranian_YI

_KEY_Ukranian_YI :: Int32
_KEY_Ukranian_YI = 1719
-- constant _KEY_Ukranian_i

_KEY_Ukranian_i :: Int32
_KEY_Ukranian_i = 1702
-- constant _KEY_Ukranian_je

_KEY_Ukranian_je :: Int32
_KEY_Ukranian_je = 1700
-- constant _KEY_Ukranian_yi

_KEY_Ukranian_yi :: Int32
_KEY_Ukranian_yi = 1703
-- constant _KEY_Umacron

_KEY_Umacron :: Int32
_KEY_Umacron = 990
-- constant _KEY_Undo

_KEY_Undo :: Int32
_KEY_Undo = 65381
-- constant _KEY_Ungrab

_KEY_Ungrab :: Int32
_KEY_Ungrab = 269024800
-- constant _KEY_Uogonek

_KEY_Uogonek :: Int32
_KEY_Uogonek = 985
-- constant _KEY_Up

_KEY_Up :: Int32
_KEY_Up = 65362
-- constant _KEY_Uring

_KEY_Uring :: Int32
_KEY_Uring = 473
-- constant _KEY_User1KB

_KEY_User1KB :: Int32
_KEY_User1KB = 269025157
-- constant _KEY_User2KB

_KEY_User2KB :: Int32
_KEY_User2KB = 269025158
-- constant _KEY_UserPB

_KEY_UserPB :: Int32
_KEY_UserPB = 269025156
-- constant _KEY_Utilde

_KEY_Utilde :: Int32
_KEY_Utilde = 989
-- constant _KEY_V

_KEY_V :: Int32
_KEY_V = 86
-- constant _KEY_VendorHome

_KEY_VendorHome :: Int32
_KEY_VendorHome = 269025076
-- constant _KEY_Video

_KEY_Video :: Int32
_KEY_Video = 269025159
-- constant _KEY_View

_KEY_View :: Int32
_KEY_View = 269025185
-- constant _KEY_VoidSymbol

_KEY_VoidSymbol :: Int32
_KEY_VoidSymbol = 16777215
-- constant _KEY_W

_KEY_W :: Int32
_KEY_W = 87
-- constant _KEY_WLAN

_KEY_WLAN :: Int32
_KEY_WLAN = 269025173
-- constant _KEY_WWW

_KEY_WWW :: Int32
_KEY_WWW = 269025070
-- constant _KEY_Wacute

_KEY_Wacute :: Int32
_KEY_Wacute = 16785026
-- constant _KEY_WakeUp

_KEY_WakeUp :: Int32
_KEY_WakeUp = 269025067
-- constant _KEY_Wcircumflex

_KEY_Wcircumflex :: Int32
_KEY_Wcircumflex = 16777588
-- constant _KEY_Wdiaeresis

_KEY_Wdiaeresis :: Int32
_KEY_Wdiaeresis = 16785028
-- constant _KEY_WebCam

_KEY_WebCam :: Int32
_KEY_WebCam = 269025167
-- constant _KEY_Wgrave

_KEY_Wgrave :: Int32
_KEY_Wgrave = 16785024
-- constant _KEY_WheelButton

_KEY_WheelButton :: Int32
_KEY_WheelButton = 269025160
-- constant _KEY_WindowClear

_KEY_WindowClear :: Int32
_KEY_WindowClear = 269025109
-- constant _KEY_WonSign

_KEY_WonSign :: Int32
_KEY_WonSign = 16785577
-- constant _KEY_Word

_KEY_Word :: Int32
_KEY_Word = 269025161
-- constant _KEY_X

_KEY_X :: Int32
_KEY_X = 88
-- constant _KEY_Xabovedot

_KEY_Xabovedot :: Int32
_KEY_Xabovedot = 16785034
-- constant _KEY_Xfer

_KEY_Xfer :: Int32
_KEY_Xfer = 269025162
-- constant _KEY_Y

_KEY_Y :: Int32
_KEY_Y = 89
-- constant _KEY_Yacute

_KEY_Yacute :: Int32
_KEY_Yacute = 221
-- constant _KEY_Ybelowdot

_KEY_Ybelowdot :: Int32
_KEY_Ybelowdot = 16785140
-- constant _KEY_Ycircumflex

_KEY_Ycircumflex :: Int32
_KEY_Ycircumflex = 16777590
-- constant _KEY_Ydiaeresis

_KEY_Ydiaeresis :: Int32
_KEY_Ydiaeresis = 5054
-- constant _KEY_Yellow

_KEY_Yellow :: Int32
_KEY_Yellow = 269025189
-- constant _KEY_Ygrave

_KEY_Ygrave :: Int32
_KEY_Ygrave = 16785138
-- constant _KEY_Yhook

_KEY_Yhook :: Int32
_KEY_Yhook = 16785142
-- constant _KEY_Ytilde

_KEY_Ytilde :: Int32
_KEY_Ytilde = 16785144
-- constant _KEY_Z

_KEY_Z :: Int32
_KEY_Z = 90
-- constant _KEY_Zabovedot

_KEY_Zabovedot :: Int32
_KEY_Zabovedot = 431
-- constant _KEY_Zacute

_KEY_Zacute :: Int32
_KEY_Zacute = 428
-- constant _KEY_Zcaron

_KEY_Zcaron :: Int32
_KEY_Zcaron = 430
-- constant _KEY_Zen_Koho

_KEY_Zen_Koho :: Int32
_KEY_Zen_Koho = 65341
-- constant _KEY_Zenkaku

_KEY_Zenkaku :: Int32
_KEY_Zenkaku = 65320
-- constant _KEY_Zenkaku_Hankaku

_KEY_Zenkaku_Hankaku :: Int32
_KEY_Zenkaku_Hankaku = 65322
-- constant _KEY_ZoomIn

_KEY_ZoomIn :: Int32
_KEY_ZoomIn = 269025163
-- constant _KEY_ZoomOut

_KEY_ZoomOut :: Int32
_KEY_ZoomOut = 269025164
-- constant _KEY_Zstroke

_KEY_Zstroke :: Int32
_KEY_Zstroke = 16777653
-- constant _KEY_a

_KEY_a :: Int32
_KEY_a = 97
-- constant _KEY_aacute

_KEY_aacute :: Int32
_KEY_aacute = 225
-- constant _KEY_abelowdot

_KEY_abelowdot :: Int32
_KEY_abelowdot = 16785057
-- constant _KEY_abovedot

_KEY_abovedot :: Int32
_KEY_abovedot = 511
-- constant _KEY_abreve

_KEY_abreve :: Int32
_KEY_abreve = 483
-- constant _KEY_abreveacute

_KEY_abreveacute :: Int32
_KEY_abreveacute = 16785071
-- constant _KEY_abrevebelowdot

_KEY_abrevebelowdot :: Int32
_KEY_abrevebelowdot = 16785079
-- constant _KEY_abrevegrave

_KEY_abrevegrave :: Int32
_KEY_abrevegrave = 16785073
-- constant _KEY_abrevehook

_KEY_abrevehook :: Int32
_KEY_abrevehook = 16785075
-- constant _KEY_abrevetilde

_KEY_abrevetilde :: Int32
_KEY_abrevetilde = 16785077
-- constant _KEY_acircumflex

_KEY_acircumflex :: Int32
_KEY_acircumflex = 226
-- constant _KEY_acircumflexacute

_KEY_acircumflexacute :: Int32
_KEY_acircumflexacute = 16785061
-- constant _KEY_acircumflexbelowdot

_KEY_acircumflexbelowdot :: Int32
_KEY_acircumflexbelowdot = 16785069
-- constant _KEY_acircumflexgrave

_KEY_acircumflexgrave :: Int32
_KEY_acircumflexgrave = 16785063
-- constant _KEY_acircumflexhook

_KEY_acircumflexhook :: Int32
_KEY_acircumflexhook = 16785065
-- constant _KEY_acircumflextilde

_KEY_acircumflextilde :: Int32
_KEY_acircumflextilde = 16785067
-- constant _KEY_acute

_KEY_acute :: Int32
_KEY_acute = 180
-- constant _KEY_adiaeresis

_KEY_adiaeresis :: Int32
_KEY_adiaeresis = 228
-- constant _KEY_ae

_KEY_ae :: Int32
_KEY_ae = 230
-- constant _KEY_agrave

_KEY_agrave :: Int32
_KEY_agrave = 224
-- constant _KEY_ahook

_KEY_ahook :: Int32
_KEY_ahook = 16785059
-- constant _KEY_amacron

_KEY_amacron :: Int32
_KEY_amacron = 992
-- constant _KEY_ampersand

_KEY_ampersand :: Int32
_KEY_ampersand = 38
-- constant _KEY_aogonek

_KEY_aogonek :: Int32
_KEY_aogonek = 433
-- constant _KEY_apostrophe

_KEY_apostrophe :: Int32
_KEY_apostrophe = 39
-- constant _KEY_approxeq

_KEY_approxeq :: Int32
_KEY_approxeq = 16785992
-- constant _KEY_approximate

_KEY_approximate :: Int32
_KEY_approximate = 2248
-- constant _KEY_aring

_KEY_aring :: Int32
_KEY_aring = 229
-- constant _KEY_asciicircum

_KEY_asciicircum :: Int32
_KEY_asciicircum = 94
-- constant _KEY_asciitilde

_KEY_asciitilde :: Int32
_KEY_asciitilde = 126
-- constant _KEY_asterisk

_KEY_asterisk :: Int32
_KEY_asterisk = 42
-- constant _KEY_at

_KEY_at :: Int32
_KEY_at = 64
-- constant _KEY_atilde

_KEY_atilde :: Int32
_KEY_atilde = 227
-- constant _KEY_b

_KEY_b :: Int32
_KEY_b = 98
-- constant _KEY_babovedot

_KEY_babovedot :: Int32
_KEY_babovedot = 16784899
-- constant _KEY_backslash

_KEY_backslash :: Int32
_KEY_backslash = 92
-- constant _KEY_ballotcross

_KEY_ballotcross :: Int32
_KEY_ballotcross = 2804
-- constant _KEY_bar

_KEY_bar :: Int32
_KEY_bar = 124
-- constant _KEY_because

_KEY_because :: Int32
_KEY_because = 16785973
-- constant _KEY_blank

_KEY_blank :: Int32
_KEY_blank = 2527
-- constant _KEY_botintegral

_KEY_botintegral :: Int32
_KEY_botintegral = 2213
-- constant _KEY_botleftparens

_KEY_botleftparens :: Int32
_KEY_botleftparens = 2220
-- constant _KEY_botleftsqbracket

_KEY_botleftsqbracket :: Int32
_KEY_botleftsqbracket = 2216
-- constant _KEY_botleftsummation

_KEY_botleftsummation :: Int32
_KEY_botleftsummation = 2226
-- constant _KEY_botrightparens

_KEY_botrightparens :: Int32
_KEY_botrightparens = 2222
-- constant _KEY_botrightsqbracket

_KEY_botrightsqbracket :: Int32
_KEY_botrightsqbracket = 2218
-- constant _KEY_botrightsummation

_KEY_botrightsummation :: Int32
_KEY_botrightsummation = 2230
-- constant _KEY_bott

_KEY_bott :: Int32
_KEY_bott = 2550
-- constant _KEY_botvertsummationconnector

_KEY_botvertsummationconnector :: Int32
_KEY_botvertsummationconnector = 2228
-- constant _KEY_braceleft

_KEY_braceleft :: Int32
_KEY_braceleft = 123
-- constant _KEY_braceright

_KEY_braceright :: Int32
_KEY_braceright = 125
-- constant _KEY_bracketleft

_KEY_bracketleft :: Int32
_KEY_bracketleft = 91
-- constant _KEY_bracketright

_KEY_bracketright :: Int32
_KEY_bracketright = 93
-- constant _KEY_braille_blank

_KEY_braille_blank :: Int32
_KEY_braille_blank = 16787456
-- constant _KEY_braille_dot_1

_KEY_braille_dot_1 :: Int32
_KEY_braille_dot_1 = 65521
-- constant _KEY_braille_dot_10

_KEY_braille_dot_10 :: Int32
_KEY_braille_dot_10 = 65530
-- constant _KEY_braille_dot_2

_KEY_braille_dot_2 :: Int32
_KEY_braille_dot_2 = 65522
-- constant _KEY_braille_dot_3

_KEY_braille_dot_3 :: Int32
_KEY_braille_dot_3 = 65523
-- constant _KEY_braille_dot_4

_KEY_braille_dot_4 :: Int32
_KEY_braille_dot_4 = 65524
-- constant _KEY_braille_dot_5

_KEY_braille_dot_5 :: Int32
_KEY_braille_dot_5 = 65525
-- constant _KEY_braille_dot_6

_KEY_braille_dot_6 :: Int32
_KEY_braille_dot_6 = 65526
-- constant _KEY_braille_dot_7

_KEY_braille_dot_7 :: Int32
_KEY_braille_dot_7 = 65527
-- constant _KEY_braille_dot_8

_KEY_braille_dot_8 :: Int32
_KEY_braille_dot_8 = 65528
-- constant _KEY_braille_dot_9

_KEY_braille_dot_9 :: Int32
_KEY_braille_dot_9 = 65529
-- constant _KEY_braille_dots_1

_KEY_braille_dots_1 :: Int32
_KEY_braille_dots_1 = 16787457
-- constant _KEY_braille_dots_12

_KEY_braille_dots_12 :: Int32
_KEY_braille_dots_12 = 16787459
-- constant _KEY_braille_dots_123

_KEY_braille_dots_123 :: Int32
_KEY_braille_dots_123 = 16787463
-- constant _KEY_braille_dots_1234

_KEY_braille_dots_1234 :: Int32
_KEY_braille_dots_1234 = 16787471
-- constant _KEY_braille_dots_12345

_KEY_braille_dots_12345 :: Int32
_KEY_braille_dots_12345 = 16787487
-- constant _KEY_braille_dots_123456

_KEY_braille_dots_123456 :: Int32
_KEY_braille_dots_123456 = 16787519
-- constant _KEY_braille_dots_1234567

_KEY_braille_dots_1234567 :: Int32
_KEY_braille_dots_1234567 = 16787583
-- constant _KEY_braille_dots_12345678

_KEY_braille_dots_12345678 :: Int32
_KEY_braille_dots_12345678 = 16787711
-- constant _KEY_braille_dots_1234568

_KEY_braille_dots_1234568 :: Int32
_KEY_braille_dots_1234568 = 16787647
-- constant _KEY_braille_dots_123457

_KEY_braille_dots_123457 :: Int32
_KEY_braille_dots_123457 = 16787551
-- constant _KEY_braille_dots_1234578

_KEY_braille_dots_1234578 :: Int32
_KEY_braille_dots_1234578 = 16787679
-- constant _KEY_braille_dots_123458

_KEY_braille_dots_123458 :: Int32
_KEY_braille_dots_123458 = 16787615
-- constant _KEY_braille_dots_12346

_KEY_braille_dots_12346 :: Int32
_KEY_braille_dots_12346 = 16787503
-- constant _KEY_braille_dots_123467

_KEY_braille_dots_123467 :: Int32
_KEY_braille_dots_123467 = 16787567
-- constant _KEY_braille_dots_1234678

_KEY_braille_dots_1234678 :: Int32
_KEY_braille_dots_1234678 = 16787695
-- constant _KEY_braille_dots_123468

_KEY_braille_dots_123468 :: Int32
_KEY_braille_dots_123468 = 16787631
-- constant _KEY_braille_dots_12347

_KEY_braille_dots_12347 :: Int32
_KEY_braille_dots_12347 = 16787535
-- constant _KEY_braille_dots_123478

_KEY_braille_dots_123478 :: Int32
_KEY_braille_dots_123478 = 16787663
-- constant _KEY_braille_dots_12348

_KEY_braille_dots_12348 :: Int32
_KEY_braille_dots_12348 = 16787599
-- constant _KEY_braille_dots_1235

_KEY_braille_dots_1235 :: Int32
_KEY_braille_dots_1235 = 16787479
-- constant _KEY_braille_dots_12356

_KEY_braille_dots_12356 :: Int32
_KEY_braille_dots_12356 = 16787511
-- constant _KEY_braille_dots_123567

_KEY_braille_dots_123567 :: Int32
_KEY_braille_dots_123567 = 16787575
-- constant _KEY_braille_dots_1235678

_KEY_braille_dots_1235678 :: Int32
_KEY_braille_dots_1235678 = 16787703
-- constant _KEY_braille_dots_123568

_KEY_braille_dots_123568 :: Int32
_KEY_braille_dots_123568 = 16787639
-- constant _KEY_braille_dots_12357

_KEY_braille_dots_12357 :: Int32
_KEY_braille_dots_12357 = 16787543
-- constant _KEY_braille_dots_123578

_KEY_braille_dots_123578 :: Int32
_KEY_braille_dots_123578 = 16787671
-- constant _KEY_braille_dots_12358

_KEY_braille_dots_12358 :: Int32
_KEY_braille_dots_12358 = 16787607
-- constant _KEY_braille_dots_1236

_KEY_braille_dots_1236 :: Int32
_KEY_braille_dots_1236 = 16787495
-- constant _KEY_braille_dots_12367

_KEY_braille_dots_12367 :: Int32
_KEY_braille_dots_12367 = 16787559
-- constant _KEY_braille_dots_123678

_KEY_braille_dots_123678 :: Int32
_KEY_braille_dots_123678 = 16787687
-- constant _KEY_braille_dots_12368

_KEY_braille_dots_12368 :: Int32
_KEY_braille_dots_12368 = 16787623
-- constant _KEY_braille_dots_1237

_KEY_braille_dots_1237 :: Int32
_KEY_braille_dots_1237 = 16787527
-- constant _KEY_braille_dots_12378

_KEY_braille_dots_12378 :: Int32
_KEY_braille_dots_12378 = 16787655
-- constant _KEY_braille_dots_1238

_KEY_braille_dots_1238 :: Int32
_KEY_braille_dots_1238 = 16787591
-- constant _KEY_braille_dots_124

_KEY_braille_dots_124 :: Int32
_KEY_braille_dots_124 = 16787467
-- constant _KEY_braille_dots_1245

_KEY_braille_dots_1245 :: Int32
_KEY_braille_dots_1245 = 16787483
-- constant _KEY_braille_dots_12456

_KEY_braille_dots_12456 :: Int32
_KEY_braille_dots_12456 = 16787515
-- constant _KEY_braille_dots_124567

_KEY_braille_dots_124567 :: Int32
_KEY_braille_dots_124567 = 16787579
-- constant _KEY_braille_dots_1245678

_KEY_braille_dots_1245678 :: Int32
_KEY_braille_dots_1245678 = 16787707
-- constant _KEY_braille_dots_124568

_KEY_braille_dots_124568 :: Int32
_KEY_braille_dots_124568 = 16787643
-- constant _KEY_braille_dots_12457

_KEY_braille_dots_12457 :: Int32
_KEY_braille_dots_12457 = 16787547
-- constant _KEY_braille_dots_124578

_KEY_braille_dots_124578 :: Int32
_KEY_braille_dots_124578 = 16787675
-- constant _KEY_braille_dots_12458

_KEY_braille_dots_12458 :: Int32
_KEY_braille_dots_12458 = 16787611
-- constant _KEY_braille_dots_1246

_KEY_braille_dots_1246 :: Int32
_KEY_braille_dots_1246 = 16787499
-- constant _KEY_braille_dots_12467

_KEY_braille_dots_12467 :: Int32
_KEY_braille_dots_12467 = 16787563
-- constant _KEY_braille_dots_124678

_KEY_braille_dots_124678 :: Int32
_KEY_braille_dots_124678 = 16787691
-- constant _KEY_braille_dots_12468

_KEY_braille_dots_12468 :: Int32
_KEY_braille_dots_12468 = 16787627
-- constant _KEY_braille_dots_1247

_KEY_braille_dots_1247 :: Int32
_KEY_braille_dots_1247 = 16787531
-- constant _KEY_braille_dots_12478

_KEY_braille_dots_12478 :: Int32
_KEY_braille_dots_12478 = 16787659
-- constant _KEY_braille_dots_1248

_KEY_braille_dots_1248 :: Int32
_KEY_braille_dots_1248 = 16787595
-- constant _KEY_braille_dots_125

_KEY_braille_dots_125 :: Int32
_KEY_braille_dots_125 = 16787475
-- constant _KEY_braille_dots_1256

_KEY_braille_dots_1256 :: Int32
_KEY_braille_dots_1256 = 16787507
-- constant _KEY_braille_dots_12567

_KEY_braille_dots_12567 :: Int32
_KEY_braille_dots_12567 = 16787571
-- constant _KEY_braille_dots_125678

_KEY_braille_dots_125678 :: Int32
_KEY_braille_dots_125678 = 16787699
-- constant _KEY_braille_dots_12568

_KEY_braille_dots_12568 :: Int32
_KEY_braille_dots_12568 = 16787635
-- constant _KEY_braille_dots_1257

_KEY_braille_dots_1257 :: Int32
_KEY_braille_dots_1257 = 16787539
-- constant _KEY_braille_dots_12578

_KEY_braille_dots_12578 :: Int32
_KEY_braille_dots_12578 = 16787667
-- constant _KEY_braille_dots_1258

_KEY_braille_dots_1258 :: Int32
_KEY_braille_dots_1258 = 16787603
-- constant _KEY_braille_dots_126

_KEY_braille_dots_126 :: Int32
_KEY_braille_dots_126 = 16787491
-- constant _KEY_braille_dots_1267

_KEY_braille_dots_1267 :: Int32
_KEY_braille_dots_1267 = 16787555
-- constant _KEY_braille_dots_12678

_KEY_braille_dots_12678 :: Int32
_KEY_braille_dots_12678 = 16787683
-- constant _KEY_braille_dots_1268

_KEY_braille_dots_1268 :: Int32
_KEY_braille_dots_1268 = 16787619
-- constant _KEY_braille_dots_127

_KEY_braille_dots_127 :: Int32
_KEY_braille_dots_127 = 16787523
-- constant _KEY_braille_dots_1278

_KEY_braille_dots_1278 :: Int32
_KEY_braille_dots_1278 = 16787651
-- constant _KEY_braille_dots_128

_KEY_braille_dots_128 :: Int32
_KEY_braille_dots_128 = 16787587
-- constant _KEY_braille_dots_13

_KEY_braille_dots_13 :: Int32
_KEY_braille_dots_13 = 16787461
-- constant _KEY_braille_dots_134

_KEY_braille_dots_134 :: Int32
_KEY_braille_dots_134 = 16787469
-- constant _KEY_braille_dots_1345

_KEY_braille_dots_1345 :: Int32
_KEY_braille_dots_1345 = 16787485
-- constant _KEY_braille_dots_13456

_KEY_braille_dots_13456 :: Int32
_KEY_braille_dots_13456 = 16787517
-- constant _KEY_braille_dots_134567

_KEY_braille_dots_134567 :: Int32
_KEY_braille_dots_134567 = 16787581
-- constant _KEY_braille_dots_1345678

_KEY_braille_dots_1345678 :: Int32
_KEY_braille_dots_1345678 = 16787709
-- constant _KEY_braille_dots_134568

_KEY_braille_dots_134568 :: Int32
_KEY_braille_dots_134568 = 16787645
-- constant _KEY_braille_dots_13457

_KEY_braille_dots_13457 :: Int32
_KEY_braille_dots_13457 = 16787549
-- constant _KEY_braille_dots_134578

_KEY_braille_dots_134578 :: Int32
_KEY_braille_dots_134578 = 16787677
-- constant _KEY_braille_dots_13458

_KEY_braille_dots_13458 :: Int32
_KEY_braille_dots_13458 = 16787613
-- constant _KEY_braille_dots_1346

_KEY_braille_dots_1346 :: Int32
_KEY_braille_dots_1346 = 16787501
-- constant _KEY_braille_dots_13467

_KEY_braille_dots_13467 :: Int32
_KEY_braille_dots_13467 = 16787565
-- constant _KEY_braille_dots_134678

_KEY_braille_dots_134678 :: Int32
_KEY_braille_dots_134678 = 16787693
-- constant _KEY_braille_dots_13468

_KEY_braille_dots_13468 :: Int32
_KEY_braille_dots_13468 = 16787629
-- constant _KEY_braille_dots_1347

_KEY_braille_dots_1347 :: Int32
_KEY_braille_dots_1347 = 16787533
-- constant _KEY_braille_dots_13478

_KEY_braille_dots_13478 :: Int32
_KEY_braille_dots_13478 = 16787661
-- constant _KEY_braille_dots_1348

_KEY_braille_dots_1348 :: Int32
_KEY_braille_dots_1348 = 16787597
-- constant _KEY_braille_dots_135

_KEY_braille_dots_135 :: Int32
_KEY_braille_dots_135 = 16787477
-- constant _KEY_braille_dots_1356

_KEY_braille_dots_1356 :: Int32
_KEY_braille_dots_1356 = 16787509
-- constant _KEY_braille_dots_13567

_KEY_braille_dots_13567 :: Int32
_KEY_braille_dots_13567 = 16787573
-- constant _KEY_braille_dots_135678

_KEY_braille_dots_135678 :: Int32
_KEY_braille_dots_135678 = 16787701
-- constant _KEY_braille_dots_13568

_KEY_braille_dots_13568 :: Int32
_KEY_braille_dots_13568 = 16787637
-- constant _KEY_braille_dots_1357

_KEY_braille_dots_1357 :: Int32
_KEY_braille_dots_1357 = 16787541
-- constant _KEY_braille_dots_13578

_KEY_braille_dots_13578 :: Int32
_KEY_braille_dots_13578 = 16787669
-- constant _KEY_braille_dots_1358

_KEY_braille_dots_1358 :: Int32
_KEY_braille_dots_1358 = 16787605
-- constant _KEY_braille_dots_136

_KEY_braille_dots_136 :: Int32
_KEY_braille_dots_136 = 16787493
-- constant _KEY_braille_dots_1367

_KEY_braille_dots_1367 :: Int32
_KEY_braille_dots_1367 = 16787557
-- constant _KEY_braille_dots_13678

_KEY_braille_dots_13678 :: Int32
_KEY_braille_dots_13678 = 16787685
-- constant _KEY_braille_dots_1368

_KEY_braille_dots_1368 :: Int32
_KEY_braille_dots_1368 = 16787621
-- constant _KEY_braille_dots_137

_KEY_braille_dots_137 :: Int32
_KEY_braille_dots_137 = 16787525
-- constant _KEY_braille_dots_1378

_KEY_braille_dots_1378 :: Int32
_KEY_braille_dots_1378 = 16787653
-- constant _KEY_braille_dots_138

_KEY_braille_dots_138 :: Int32
_KEY_braille_dots_138 = 16787589
-- constant _KEY_braille_dots_14

_KEY_braille_dots_14 :: Int32
_KEY_braille_dots_14 = 16787465
-- constant _KEY_braille_dots_145

_KEY_braille_dots_145 :: Int32
_KEY_braille_dots_145 = 16787481
-- constant _KEY_braille_dots_1456

_KEY_braille_dots_1456 :: Int32
_KEY_braille_dots_1456 = 16787513
-- constant _KEY_braille_dots_14567

_KEY_braille_dots_14567 :: Int32
_KEY_braille_dots_14567 = 16787577
-- constant _KEY_braille_dots_145678

_KEY_braille_dots_145678 :: Int32
_KEY_braille_dots_145678 = 16787705
-- constant _KEY_braille_dots_14568

_KEY_braille_dots_14568 :: Int32
_KEY_braille_dots_14568 = 16787641
-- constant _KEY_braille_dots_1457

_KEY_braille_dots_1457 :: Int32
_KEY_braille_dots_1457 = 16787545
-- constant _KEY_braille_dots_14578

_KEY_braille_dots_14578 :: Int32
_KEY_braille_dots_14578 = 16787673
-- constant _KEY_braille_dots_1458

_KEY_braille_dots_1458 :: Int32
_KEY_braille_dots_1458 = 16787609
-- constant _KEY_braille_dots_146

_KEY_braille_dots_146 :: Int32
_KEY_braille_dots_146 = 16787497
-- constant _KEY_braille_dots_1467

_KEY_braille_dots_1467 :: Int32
_KEY_braille_dots_1467 = 16787561
-- constant _KEY_braille_dots_14678

_KEY_braille_dots_14678 :: Int32
_KEY_braille_dots_14678 = 16787689
-- constant _KEY_braille_dots_1468

_KEY_braille_dots_1468 :: Int32
_KEY_braille_dots_1468 = 16787625
-- constant _KEY_braille_dots_147

_KEY_braille_dots_147 :: Int32
_KEY_braille_dots_147 = 16787529
-- constant _KEY_braille_dots_1478

_KEY_braille_dots_1478 :: Int32
_KEY_braille_dots_1478 = 16787657
-- constant _KEY_braille_dots_148

_KEY_braille_dots_148 :: Int32
_KEY_braille_dots_148 = 16787593
-- constant _KEY_braille_dots_15

_KEY_braille_dots_15 :: Int32
_KEY_braille_dots_15 = 16787473
-- constant _KEY_braille_dots_156

_KEY_braille_dots_156 :: Int32
_KEY_braille_dots_156 = 16787505
-- constant _KEY_braille_dots_1567

_KEY_braille_dots_1567 :: Int32
_KEY_braille_dots_1567 = 16787569
-- constant _KEY_braille_dots_15678

_KEY_braille_dots_15678 :: Int32
_KEY_braille_dots_15678 = 16787697
-- constant _KEY_braille_dots_1568

_KEY_braille_dots_1568 :: Int32
_KEY_braille_dots_1568 = 16787633
-- constant _KEY_braille_dots_157

_KEY_braille_dots_157 :: Int32
_KEY_braille_dots_157 = 16787537
-- constant _KEY_braille_dots_1578

_KEY_braille_dots_1578 :: Int32
_KEY_braille_dots_1578 = 16787665
-- constant _KEY_braille_dots_158

_KEY_braille_dots_158 :: Int32
_KEY_braille_dots_158 = 16787601
-- constant _KEY_braille_dots_16

_KEY_braille_dots_16 :: Int32
_KEY_braille_dots_16 = 16787489
-- constant _KEY_braille_dots_167

_KEY_braille_dots_167 :: Int32
_KEY_braille_dots_167 = 16787553
-- constant _KEY_braille_dots_1678

_KEY_braille_dots_1678 :: Int32
_KEY_braille_dots_1678 = 16787681
-- constant _KEY_braille_dots_168

_KEY_braille_dots_168 :: Int32
_KEY_braille_dots_168 = 16787617
-- constant _KEY_braille_dots_17

_KEY_braille_dots_17 :: Int32
_KEY_braille_dots_17 = 16787521
-- constant _KEY_braille_dots_178

_KEY_braille_dots_178 :: Int32
_KEY_braille_dots_178 = 16787649
-- constant _KEY_braille_dots_18

_KEY_braille_dots_18 :: Int32
_KEY_braille_dots_18 = 16787585
-- constant _KEY_braille_dots_2

_KEY_braille_dots_2 :: Int32
_KEY_braille_dots_2 = 16787458
-- constant _KEY_braille_dots_23

_KEY_braille_dots_23 :: Int32
_KEY_braille_dots_23 = 16787462
-- constant _KEY_braille_dots_234

_KEY_braille_dots_234 :: Int32
_KEY_braille_dots_234 = 16787470
-- constant _KEY_braille_dots_2345

_KEY_braille_dots_2345 :: Int32
_KEY_braille_dots_2345 = 16787486
-- constant _KEY_braille_dots_23456

_KEY_braille_dots_23456 :: Int32
_KEY_braille_dots_23456 = 16787518
-- constant _KEY_braille_dots_234567

_KEY_braille_dots_234567 :: Int32
_KEY_braille_dots_234567 = 16787582
-- constant _KEY_braille_dots_2345678

_KEY_braille_dots_2345678 :: Int32
_KEY_braille_dots_2345678 = 16787710
-- constant _KEY_braille_dots_234568

_KEY_braille_dots_234568 :: Int32
_KEY_braille_dots_234568 = 16787646
-- constant _KEY_braille_dots_23457

_KEY_braille_dots_23457 :: Int32
_KEY_braille_dots_23457 = 16787550
-- constant _KEY_braille_dots_234578

_KEY_braille_dots_234578 :: Int32
_KEY_braille_dots_234578 = 16787678
-- constant _KEY_braille_dots_23458

_KEY_braille_dots_23458 :: Int32
_KEY_braille_dots_23458 = 16787614
-- constant _KEY_braille_dots_2346

_KEY_braille_dots_2346 :: Int32
_KEY_braille_dots_2346 = 16787502
-- constant _KEY_braille_dots_23467

_KEY_braille_dots_23467 :: Int32
_KEY_braille_dots_23467 = 16787566
-- constant _KEY_braille_dots_234678

_KEY_braille_dots_234678 :: Int32
_KEY_braille_dots_234678 = 16787694
-- constant _KEY_braille_dots_23468

_KEY_braille_dots_23468 :: Int32
_KEY_braille_dots_23468 = 16787630
-- constant _KEY_braille_dots_2347

_KEY_braille_dots_2347 :: Int32
_KEY_braille_dots_2347 = 16787534
-- constant _KEY_braille_dots_23478

_KEY_braille_dots_23478 :: Int32
_KEY_braille_dots_23478 = 16787662
-- constant _KEY_braille_dots_2348

_KEY_braille_dots_2348 :: Int32
_KEY_braille_dots_2348 = 16787598
-- constant _KEY_braille_dots_235

_KEY_braille_dots_235 :: Int32
_KEY_braille_dots_235 = 16787478
-- constant _KEY_braille_dots_2356

_KEY_braille_dots_2356 :: Int32
_KEY_braille_dots_2356 = 16787510
-- constant _KEY_braille_dots_23567

_KEY_braille_dots_23567 :: Int32
_KEY_braille_dots_23567 = 16787574
-- constant _KEY_braille_dots_235678

_KEY_braille_dots_235678 :: Int32
_KEY_braille_dots_235678 = 16787702
-- constant _KEY_braille_dots_23568

_KEY_braille_dots_23568 :: Int32
_KEY_braille_dots_23568 = 16787638
-- constant _KEY_braille_dots_2357

_KEY_braille_dots_2357 :: Int32
_KEY_braille_dots_2357 = 16787542
-- constant _KEY_braille_dots_23578

_KEY_braille_dots_23578 :: Int32
_KEY_braille_dots_23578 = 16787670
-- constant _KEY_braille_dots_2358

_KEY_braille_dots_2358 :: Int32
_KEY_braille_dots_2358 = 16787606
-- constant _KEY_braille_dots_236

_KEY_braille_dots_236 :: Int32
_KEY_braille_dots_236 = 16787494
-- constant _KEY_braille_dots_2367

_KEY_braille_dots_2367 :: Int32
_KEY_braille_dots_2367 = 16787558
-- constant _KEY_braille_dots_23678

_KEY_braille_dots_23678 :: Int32
_KEY_braille_dots_23678 = 16787686
-- constant _KEY_braille_dots_2368

_KEY_braille_dots_2368 :: Int32
_KEY_braille_dots_2368 = 16787622
-- constant _KEY_braille_dots_237

_KEY_braille_dots_237 :: Int32
_KEY_braille_dots_237 = 16787526
-- constant _KEY_braille_dots_2378

_KEY_braille_dots_2378 :: Int32
_KEY_braille_dots_2378 = 16787654
-- constant _KEY_braille_dots_238

_KEY_braille_dots_238 :: Int32
_KEY_braille_dots_238 = 16787590
-- constant _KEY_braille_dots_24

_KEY_braille_dots_24 :: Int32
_KEY_braille_dots_24 = 16787466
-- constant _KEY_braille_dots_245

_KEY_braille_dots_245 :: Int32
_KEY_braille_dots_245 = 16787482
-- constant _KEY_braille_dots_2456

_KEY_braille_dots_2456 :: Int32
_KEY_braille_dots_2456 = 16787514
-- constant _KEY_braille_dots_24567

_KEY_braille_dots_24567 :: Int32
_KEY_braille_dots_24567 = 16787578
-- constant _KEY_braille_dots_245678

_KEY_braille_dots_245678 :: Int32
_KEY_braille_dots_245678 = 16787706
-- constant _KEY_braille_dots_24568

_KEY_braille_dots_24568 :: Int32
_KEY_braille_dots_24568 = 16787642
-- constant _KEY_braille_dots_2457

_KEY_braille_dots_2457 :: Int32
_KEY_braille_dots_2457 = 16787546
-- constant _KEY_braille_dots_24578

_KEY_braille_dots_24578 :: Int32
_KEY_braille_dots_24578 = 16787674
-- constant _KEY_braille_dots_2458

_KEY_braille_dots_2458 :: Int32
_KEY_braille_dots_2458 = 16787610
-- constant _KEY_braille_dots_246

_KEY_braille_dots_246 :: Int32
_KEY_braille_dots_246 = 16787498
-- constant _KEY_braille_dots_2467

_KEY_braille_dots_2467 :: Int32
_KEY_braille_dots_2467 = 16787562
-- constant _KEY_braille_dots_24678

_KEY_braille_dots_24678 :: Int32
_KEY_braille_dots_24678 = 16787690
-- constant _KEY_braille_dots_2468

_KEY_braille_dots_2468 :: Int32
_KEY_braille_dots_2468 = 16787626
-- constant _KEY_braille_dots_247

_KEY_braille_dots_247 :: Int32
_KEY_braille_dots_247 = 16787530
-- constant _KEY_braille_dots_2478

_KEY_braille_dots_2478 :: Int32
_KEY_braille_dots_2478 = 16787658
-- constant _KEY_braille_dots_248

_KEY_braille_dots_248 :: Int32
_KEY_braille_dots_248 = 16787594
-- constant _KEY_braille_dots_25

_KEY_braille_dots_25 :: Int32
_KEY_braille_dots_25 = 16787474
-- constant _KEY_braille_dots_256

_KEY_braille_dots_256 :: Int32
_KEY_braille_dots_256 = 16787506
-- constant _KEY_braille_dots_2567

_KEY_braille_dots_2567 :: Int32
_KEY_braille_dots_2567 = 16787570
-- constant _KEY_braille_dots_25678

_KEY_braille_dots_25678 :: Int32
_KEY_braille_dots_25678 = 16787698
-- constant _KEY_braille_dots_2568

_KEY_braille_dots_2568 :: Int32
_KEY_braille_dots_2568 = 16787634
-- constant _KEY_braille_dots_257

_KEY_braille_dots_257 :: Int32
_KEY_braille_dots_257 = 16787538
-- constant _KEY_braille_dots_2578

_KEY_braille_dots_2578 :: Int32
_KEY_braille_dots_2578 = 16787666
-- constant _KEY_braille_dots_258

_KEY_braille_dots_258 :: Int32
_KEY_braille_dots_258 = 16787602
-- constant _KEY_braille_dots_26

_KEY_braille_dots_26 :: Int32
_KEY_braille_dots_26 = 16787490
-- constant _KEY_braille_dots_267

_KEY_braille_dots_267 :: Int32
_KEY_braille_dots_267 = 16787554
-- constant _KEY_braille_dots_2678

_KEY_braille_dots_2678 :: Int32
_KEY_braille_dots_2678 = 16787682
-- constant _KEY_braille_dots_268

_KEY_braille_dots_268 :: Int32
_KEY_braille_dots_268 = 16787618
-- constant _KEY_braille_dots_27

_KEY_braille_dots_27 :: Int32
_KEY_braille_dots_27 = 16787522
-- constant _KEY_braille_dots_278

_KEY_braille_dots_278 :: Int32
_KEY_braille_dots_278 = 16787650
-- constant _KEY_braille_dots_28

_KEY_braille_dots_28 :: Int32
_KEY_braille_dots_28 = 16787586
-- constant _KEY_braille_dots_3

_KEY_braille_dots_3 :: Int32
_KEY_braille_dots_3 = 16787460
-- constant _KEY_braille_dots_34

_KEY_braille_dots_34 :: Int32
_KEY_braille_dots_34 = 16787468
-- constant _KEY_braille_dots_345

_KEY_braille_dots_345 :: Int32
_KEY_braille_dots_345 = 16787484
-- constant _KEY_braille_dots_3456

_KEY_braille_dots_3456 :: Int32
_KEY_braille_dots_3456 = 16787516
-- constant _KEY_braille_dots_34567

_KEY_braille_dots_34567 :: Int32
_KEY_braille_dots_34567 = 16787580
-- constant _KEY_braille_dots_345678

_KEY_braille_dots_345678 :: Int32
_KEY_braille_dots_345678 = 16787708
-- constant _KEY_braille_dots_34568

_KEY_braille_dots_34568 :: Int32
_KEY_braille_dots_34568 = 16787644
-- constant _KEY_braille_dots_3457

_KEY_braille_dots_3457 :: Int32
_KEY_braille_dots_3457 = 16787548
-- constant _KEY_braille_dots_34578

_KEY_braille_dots_34578 :: Int32
_KEY_braille_dots_34578 = 16787676
-- constant _KEY_braille_dots_3458

_KEY_braille_dots_3458 :: Int32
_KEY_braille_dots_3458 = 16787612
-- constant _KEY_braille_dots_346

_KEY_braille_dots_346 :: Int32
_KEY_braille_dots_346 = 16787500
-- constant _KEY_braille_dots_3467

_KEY_braille_dots_3467 :: Int32
_KEY_braille_dots_3467 = 16787564
-- constant _KEY_braille_dots_34678

_KEY_braille_dots_34678 :: Int32
_KEY_braille_dots_34678 = 16787692
-- constant _KEY_braille_dots_3468

_KEY_braille_dots_3468 :: Int32
_KEY_braille_dots_3468 = 16787628
-- constant _KEY_braille_dots_347

_KEY_braille_dots_347 :: Int32
_KEY_braille_dots_347 = 16787532
-- constant _KEY_braille_dots_3478

_KEY_braille_dots_3478 :: Int32
_KEY_braille_dots_3478 = 16787660
-- constant _KEY_braille_dots_348

_KEY_braille_dots_348 :: Int32
_KEY_braille_dots_348 = 16787596
-- constant _KEY_braille_dots_35

_KEY_braille_dots_35 :: Int32
_KEY_braille_dots_35 = 16787476
-- constant _KEY_braille_dots_356

_KEY_braille_dots_356 :: Int32
_KEY_braille_dots_356 = 16787508
-- constant _KEY_braille_dots_3567

_KEY_braille_dots_3567 :: Int32
_KEY_braille_dots_3567 = 16787572
-- constant _KEY_braille_dots_35678

_KEY_braille_dots_35678 :: Int32
_KEY_braille_dots_35678 = 16787700
-- constant _KEY_braille_dots_3568

_KEY_braille_dots_3568 :: Int32
_KEY_braille_dots_3568 = 16787636
-- constant _KEY_braille_dots_357

_KEY_braille_dots_357 :: Int32
_KEY_braille_dots_357 = 16787540
-- constant _KEY_braille_dots_3578

_KEY_braille_dots_3578 :: Int32
_KEY_braille_dots_3578 = 16787668
-- constant _KEY_braille_dots_358

_KEY_braille_dots_358 :: Int32
_KEY_braille_dots_358 = 16787604
-- constant _KEY_braille_dots_36

_KEY_braille_dots_36 :: Int32
_KEY_braille_dots_36 = 16787492
-- constant _KEY_braille_dots_367

_KEY_braille_dots_367 :: Int32
_KEY_braille_dots_367 = 16787556
-- constant _KEY_braille_dots_3678

_KEY_braille_dots_3678 :: Int32
_KEY_braille_dots_3678 = 16787684
-- constant _KEY_braille_dots_368

_KEY_braille_dots_368 :: Int32
_KEY_braille_dots_368 = 16787620
-- constant _KEY_braille_dots_37

_KEY_braille_dots_37 :: Int32
_KEY_braille_dots_37 = 16787524
-- constant _KEY_braille_dots_378

_KEY_braille_dots_378 :: Int32
_KEY_braille_dots_378 = 16787652
-- constant _KEY_braille_dots_38

_KEY_braille_dots_38 :: Int32
_KEY_braille_dots_38 = 16787588
-- constant _KEY_braille_dots_4

_KEY_braille_dots_4 :: Int32
_KEY_braille_dots_4 = 16787464
-- constant _KEY_braille_dots_45

_KEY_braille_dots_45 :: Int32
_KEY_braille_dots_45 = 16787480
-- constant _KEY_braille_dots_456

_KEY_braille_dots_456 :: Int32
_KEY_braille_dots_456 = 16787512
-- constant _KEY_braille_dots_4567

_KEY_braille_dots_4567 :: Int32
_KEY_braille_dots_4567 = 16787576
-- constant _KEY_braille_dots_45678

_KEY_braille_dots_45678 :: Int32
_KEY_braille_dots_45678 = 16787704
-- constant _KEY_braille_dots_4568

_KEY_braille_dots_4568 :: Int32
_KEY_braille_dots_4568 = 16787640
-- constant _KEY_braille_dots_457

_KEY_braille_dots_457 :: Int32
_KEY_braille_dots_457 = 16787544
-- constant _KEY_braille_dots_4578

_KEY_braille_dots_4578 :: Int32
_KEY_braille_dots_4578 = 16787672
-- constant _KEY_braille_dots_458

_KEY_braille_dots_458 :: Int32
_KEY_braille_dots_458 = 16787608
-- constant _KEY_braille_dots_46

_KEY_braille_dots_46 :: Int32
_KEY_braille_dots_46 = 16787496
-- constant _KEY_braille_dots_467

_KEY_braille_dots_467 :: Int32
_KEY_braille_dots_467 = 16787560
-- constant _KEY_braille_dots_4678

_KEY_braille_dots_4678 :: Int32
_KEY_braille_dots_4678 = 16787688
-- constant _KEY_braille_dots_468

_KEY_braille_dots_468 :: Int32
_KEY_braille_dots_468 = 16787624
-- constant _KEY_braille_dots_47

_KEY_braille_dots_47 :: Int32
_KEY_braille_dots_47 = 16787528
-- constant _KEY_braille_dots_478

_KEY_braille_dots_478 :: Int32
_KEY_braille_dots_478 = 16787656
-- constant _KEY_braille_dots_48

_KEY_braille_dots_48 :: Int32
_KEY_braille_dots_48 = 16787592
-- constant _KEY_braille_dots_5

_KEY_braille_dots_5 :: Int32
_KEY_braille_dots_5 = 16787472
-- constant _KEY_braille_dots_56

_KEY_braille_dots_56 :: Int32
_KEY_braille_dots_56 = 16787504
-- constant _KEY_braille_dots_567

_KEY_braille_dots_567 :: Int32
_KEY_braille_dots_567 = 16787568
-- constant _KEY_braille_dots_5678

_KEY_braille_dots_5678 :: Int32
_KEY_braille_dots_5678 = 16787696
-- constant _KEY_braille_dots_568

_KEY_braille_dots_568 :: Int32
_KEY_braille_dots_568 = 16787632
-- constant _KEY_braille_dots_57

_KEY_braille_dots_57 :: Int32
_KEY_braille_dots_57 = 16787536
-- constant _KEY_braille_dots_578

_KEY_braille_dots_578 :: Int32
_KEY_braille_dots_578 = 16787664
-- constant _KEY_braille_dots_58

_KEY_braille_dots_58 :: Int32
_KEY_braille_dots_58 = 16787600
-- constant _KEY_braille_dots_6

_KEY_braille_dots_6 :: Int32
_KEY_braille_dots_6 = 16787488
-- constant _KEY_braille_dots_67

_KEY_braille_dots_67 :: Int32
_KEY_braille_dots_67 = 16787552
-- constant _KEY_braille_dots_678

_KEY_braille_dots_678 :: Int32
_KEY_braille_dots_678 = 16787680
-- constant _KEY_braille_dots_68

_KEY_braille_dots_68 :: Int32
_KEY_braille_dots_68 = 16787616
-- constant _KEY_braille_dots_7

_KEY_braille_dots_7 :: Int32
_KEY_braille_dots_7 = 16787520
-- constant _KEY_braille_dots_78

_KEY_braille_dots_78 :: Int32
_KEY_braille_dots_78 = 16787648
-- constant _KEY_braille_dots_8

_KEY_braille_dots_8 :: Int32
_KEY_braille_dots_8 = 16787584
-- constant _KEY_breve

_KEY_breve :: Int32
_KEY_breve = 418
-- constant _KEY_brokenbar

_KEY_brokenbar :: Int32
_KEY_brokenbar = 166
-- constant _KEY_c

_KEY_c :: Int32
_KEY_c = 99
-- constant _KEY_c_h

_KEY_c_h :: Int32
_KEY_c_h = 65187
-- constant _KEY_cabovedot

_KEY_cabovedot :: Int32
_KEY_cabovedot = 741
-- constant _KEY_cacute

_KEY_cacute :: Int32
_KEY_cacute = 486
-- constant _KEY_careof

_KEY_careof :: Int32
_KEY_careof = 2744
-- constant _KEY_caret

_KEY_caret :: Int32
_KEY_caret = 2812
-- constant _KEY_caron

_KEY_caron :: Int32
_KEY_caron = 439
-- constant _KEY_ccaron

_KEY_ccaron :: Int32
_KEY_ccaron = 488
-- constant _KEY_ccedilla

_KEY_ccedilla :: Int32
_KEY_ccedilla = 231
-- constant _KEY_ccircumflex

_KEY_ccircumflex :: Int32
_KEY_ccircumflex = 742
-- constant _KEY_cedilla

_KEY_cedilla :: Int32
_KEY_cedilla = 184
-- constant _KEY_cent

_KEY_cent :: Int32
_KEY_cent = 162
-- constant _KEY_ch

_KEY_ch :: Int32
_KEY_ch = 65184
-- constant _KEY_checkerboard

_KEY_checkerboard :: Int32
_KEY_checkerboard = 2529
-- constant _KEY_checkmark

_KEY_checkmark :: Int32
_KEY_checkmark = 2803
-- constant _KEY_circle

_KEY_circle :: Int32
_KEY_circle = 3023
-- constant _KEY_club

_KEY_club :: Int32
_KEY_club = 2796
-- constant _KEY_colon

_KEY_colon :: Int32
_KEY_colon = 58
-- constant _KEY_comma

_KEY_comma :: Int32
_KEY_comma = 44
-- constant _KEY_containsas

_KEY_containsas :: Int32
_KEY_containsas = 16785931
-- constant _KEY_copyright

_KEY_copyright :: Int32
_KEY_copyright = 169
-- constant _KEY_cr

_KEY_cr :: Int32
_KEY_cr = 2532
-- constant _KEY_crossinglines

_KEY_crossinglines :: Int32
_KEY_crossinglines = 2542
-- constant _KEY_cuberoot

_KEY_cuberoot :: Int32
_KEY_cuberoot = 16785947
-- constant _KEY_currency

_KEY_currency :: Int32
_KEY_currency = 164
-- constant _KEY_cursor

_KEY_cursor :: Int32
_KEY_cursor = 2815
-- constant _KEY_d

_KEY_d :: Int32
_KEY_d = 100
-- constant _KEY_dabovedot

_KEY_dabovedot :: Int32
_KEY_dabovedot = 16784907
-- constant _KEY_dagger

_KEY_dagger :: Int32
_KEY_dagger = 2801
-- constant _KEY_dcaron

_KEY_dcaron :: Int32
_KEY_dcaron = 495
-- constant _KEY_dead_A

_KEY_dead_A :: Int32
_KEY_dead_A = 65153
-- constant _KEY_dead_E

_KEY_dead_E :: Int32
_KEY_dead_E = 65155
-- constant _KEY_dead_I

_KEY_dead_I :: Int32
_KEY_dead_I = 65157
-- constant _KEY_dead_O

_KEY_dead_O :: Int32
_KEY_dead_O = 65159
-- constant _KEY_dead_U

_KEY_dead_U :: Int32
_KEY_dead_U = 65161
-- constant _KEY_dead_a

_KEY_dead_a :: Int32
_KEY_dead_a = 65152
-- constant _KEY_dead_abovecomma

_KEY_dead_abovecomma :: Int32
_KEY_dead_abovecomma = 65124
-- constant _KEY_dead_abovedot

_KEY_dead_abovedot :: Int32
_KEY_dead_abovedot = 65110
-- constant _KEY_dead_abovereversedcomma

_KEY_dead_abovereversedcomma :: Int32
_KEY_dead_abovereversedcomma = 65125
-- constant _KEY_dead_abovering

_KEY_dead_abovering :: Int32
_KEY_dead_abovering = 65112
-- constant _KEY_dead_acute

_KEY_dead_acute :: Int32
_KEY_dead_acute = 65105
-- constant _KEY_dead_belowbreve

_KEY_dead_belowbreve :: Int32
_KEY_dead_belowbreve = 65131
-- constant _KEY_dead_belowcircumflex

_KEY_dead_belowcircumflex :: Int32
_KEY_dead_belowcircumflex = 65129
-- constant _KEY_dead_belowcomma

_KEY_dead_belowcomma :: Int32
_KEY_dead_belowcomma = 65134
-- constant _KEY_dead_belowdiaeresis

_KEY_dead_belowdiaeresis :: Int32
_KEY_dead_belowdiaeresis = 65132
-- constant _KEY_dead_belowdot

_KEY_dead_belowdot :: Int32
_KEY_dead_belowdot = 65120
-- constant _KEY_dead_belowmacron

_KEY_dead_belowmacron :: Int32
_KEY_dead_belowmacron = 65128
-- constant _KEY_dead_belowring

_KEY_dead_belowring :: Int32
_KEY_dead_belowring = 65127
-- constant _KEY_dead_belowtilde

_KEY_dead_belowtilde :: Int32
_KEY_dead_belowtilde = 65130
-- constant _KEY_dead_breve

_KEY_dead_breve :: Int32
_KEY_dead_breve = 65109
-- constant _KEY_dead_capital_schwa

_KEY_dead_capital_schwa :: Int32
_KEY_dead_capital_schwa = 65163
-- constant _KEY_dead_caron

_KEY_dead_caron :: Int32
_KEY_dead_caron = 65114
-- constant _KEY_dead_cedilla

_KEY_dead_cedilla :: Int32
_KEY_dead_cedilla = 65115
-- constant _KEY_dead_circumflex

_KEY_dead_circumflex :: Int32
_KEY_dead_circumflex = 65106
-- constant _KEY_dead_currency

_KEY_dead_currency :: Int32
_KEY_dead_currency = 65135
-- constant _KEY_dead_dasia

_KEY_dead_dasia :: Int32
_KEY_dead_dasia = 65125
-- constant _KEY_dead_diaeresis

_KEY_dead_diaeresis :: Int32
_KEY_dead_diaeresis = 65111
-- constant _KEY_dead_doubleacute

_KEY_dead_doubleacute :: Int32
_KEY_dead_doubleacute = 65113
-- constant _KEY_dead_doublegrave

_KEY_dead_doublegrave :: Int32
_KEY_dead_doublegrave = 65126
-- constant _KEY_dead_e

_KEY_dead_e :: Int32
_KEY_dead_e = 65154
-- constant _KEY_dead_grave

_KEY_dead_grave :: Int32
_KEY_dead_grave = 65104
-- constant _KEY_dead_greek

_KEY_dead_greek :: Int32
_KEY_dead_greek = 65164
-- constant _KEY_dead_hook

_KEY_dead_hook :: Int32
_KEY_dead_hook = 65121
-- constant _KEY_dead_horn

_KEY_dead_horn :: Int32
_KEY_dead_horn = 65122
-- constant _KEY_dead_i

_KEY_dead_i :: Int32
_KEY_dead_i = 65156
-- constant _KEY_dead_invertedbreve

_KEY_dead_invertedbreve :: Int32
_KEY_dead_invertedbreve = 65133
-- constant _KEY_dead_iota

_KEY_dead_iota :: Int32
_KEY_dead_iota = 65117
-- constant _KEY_dead_macron

_KEY_dead_macron :: Int32
_KEY_dead_macron = 65108
-- constant _KEY_dead_o

_KEY_dead_o :: Int32
_KEY_dead_o = 65158
-- constant _KEY_dead_ogonek

_KEY_dead_ogonek :: Int32
_KEY_dead_ogonek = 65116
-- constant _KEY_dead_perispomeni

_KEY_dead_perispomeni :: Int32
_KEY_dead_perispomeni = 65107
-- constant _KEY_dead_psili

_KEY_dead_psili :: Int32
_KEY_dead_psili = 65124
-- constant _KEY_dead_semivoiced_sound

_KEY_dead_semivoiced_sound :: Int32
_KEY_dead_semivoiced_sound = 65119
-- constant _KEY_dead_small_schwa

_KEY_dead_small_schwa :: Int32
_KEY_dead_small_schwa = 65162
-- constant _KEY_dead_stroke

_KEY_dead_stroke :: Int32
_KEY_dead_stroke = 65123
-- constant _KEY_dead_tilde

_KEY_dead_tilde :: Int32
_KEY_dead_tilde = 65107
-- constant _KEY_dead_u

_KEY_dead_u :: Int32
_KEY_dead_u = 65160
-- constant _KEY_dead_voiced_sound

_KEY_dead_voiced_sound :: Int32
_KEY_dead_voiced_sound = 65118
-- constant _KEY_decimalpoint

_KEY_decimalpoint :: Int32
_KEY_decimalpoint = 2749
-- constant _KEY_degree

_KEY_degree :: Int32
_KEY_degree = 176
-- constant _KEY_diaeresis

_KEY_diaeresis :: Int32
_KEY_diaeresis = 168
-- constant _KEY_diamond

_KEY_diamond :: Int32
_KEY_diamond = 2797
-- constant _KEY_digitspace

_KEY_digitspace :: Int32
_KEY_digitspace = 2725
-- constant _KEY_dintegral

_KEY_dintegral :: Int32
_KEY_dintegral = 16785964
-- constant _KEY_division

_KEY_division :: Int32
_KEY_division = 247
-- constant _KEY_dollar

_KEY_dollar :: Int32
_KEY_dollar = 36
-- constant _KEY_doubbaselinedot

_KEY_doubbaselinedot :: Int32
_KEY_doubbaselinedot = 2735
-- constant _KEY_doubleacute

_KEY_doubleacute :: Int32
_KEY_doubleacute = 445
-- constant _KEY_doubledagger

_KEY_doubledagger :: Int32
_KEY_doubledagger = 2802
-- constant _KEY_doublelowquotemark

_KEY_doublelowquotemark :: Int32
_KEY_doublelowquotemark = 2814
-- constant _KEY_downarrow

_KEY_downarrow :: Int32
_KEY_downarrow = 2302
-- constant _KEY_downcaret

_KEY_downcaret :: Int32
_KEY_downcaret = 2984
-- constant _KEY_downshoe

_KEY_downshoe :: Int32
_KEY_downshoe = 3030
-- constant _KEY_downstile

_KEY_downstile :: Int32
_KEY_downstile = 3012
-- constant _KEY_downtack

_KEY_downtack :: Int32
_KEY_downtack = 3010
-- constant _KEY_dstroke

_KEY_dstroke :: Int32
_KEY_dstroke = 496
-- constant _KEY_e

_KEY_e :: Int32
_KEY_e = 101
-- constant _KEY_eabovedot

_KEY_eabovedot :: Int32
_KEY_eabovedot = 1004
-- constant _KEY_eacute

_KEY_eacute :: Int32
_KEY_eacute = 233
-- constant _KEY_ebelowdot

_KEY_ebelowdot :: Int32
_KEY_ebelowdot = 16785081
-- constant _KEY_ecaron

_KEY_ecaron :: Int32
_KEY_ecaron = 492
-- constant _KEY_ecircumflex

_KEY_ecircumflex :: Int32
_KEY_ecircumflex = 234
-- constant _KEY_ecircumflexacute

_KEY_ecircumflexacute :: Int32
_KEY_ecircumflexacute = 16785087
-- constant _KEY_ecircumflexbelowdot

_KEY_ecircumflexbelowdot :: Int32
_KEY_ecircumflexbelowdot = 16785095
-- constant _KEY_ecircumflexgrave

_KEY_ecircumflexgrave :: Int32
_KEY_ecircumflexgrave = 16785089
-- constant _KEY_ecircumflexhook

_KEY_ecircumflexhook :: Int32
_KEY_ecircumflexhook = 16785091
-- constant _KEY_ecircumflextilde

_KEY_ecircumflextilde :: Int32
_KEY_ecircumflextilde = 16785093
-- constant _KEY_ediaeresis

_KEY_ediaeresis :: Int32
_KEY_ediaeresis = 235
-- constant _KEY_egrave

_KEY_egrave :: Int32
_KEY_egrave = 232
-- constant _KEY_ehook

_KEY_ehook :: Int32
_KEY_ehook = 16785083
-- constant _KEY_eightsubscript

_KEY_eightsubscript :: Int32
_KEY_eightsubscript = 16785544
-- constant _KEY_eightsuperior

_KEY_eightsuperior :: Int32
_KEY_eightsuperior = 16785528
-- constant _KEY_elementof

_KEY_elementof :: Int32
_KEY_elementof = 16785928
-- constant _KEY_ellipsis

_KEY_ellipsis :: Int32
_KEY_ellipsis = 2734
-- constant _KEY_em3space

_KEY_em3space :: Int32
_KEY_em3space = 2723
-- constant _KEY_em4space

_KEY_em4space :: Int32
_KEY_em4space = 2724
-- constant _KEY_emacron

_KEY_emacron :: Int32
_KEY_emacron = 954
-- constant _KEY_emdash

_KEY_emdash :: Int32
_KEY_emdash = 2729
-- constant _KEY_emfilledcircle

_KEY_emfilledcircle :: Int32
_KEY_emfilledcircle = 2782
-- constant _KEY_emfilledrect

_KEY_emfilledrect :: Int32
_KEY_emfilledrect = 2783
-- constant _KEY_emopencircle

_KEY_emopencircle :: Int32
_KEY_emopencircle = 2766
-- constant _KEY_emopenrectangle

_KEY_emopenrectangle :: Int32
_KEY_emopenrectangle = 2767
-- constant _KEY_emptyset

_KEY_emptyset :: Int32
_KEY_emptyset = 16785925
-- constant _KEY_emspace

_KEY_emspace :: Int32
_KEY_emspace = 2721
-- constant _KEY_endash

_KEY_endash :: Int32
_KEY_endash = 2730
-- constant _KEY_enfilledcircbullet

_KEY_enfilledcircbullet :: Int32
_KEY_enfilledcircbullet = 2790
-- constant _KEY_enfilledsqbullet

_KEY_enfilledsqbullet :: Int32
_KEY_enfilledsqbullet = 2791
-- constant _KEY_eng

_KEY_eng :: Int32
_KEY_eng = 959
-- constant _KEY_enopencircbullet

_KEY_enopencircbullet :: Int32
_KEY_enopencircbullet = 2784
-- constant _KEY_enopensquarebullet

_KEY_enopensquarebullet :: Int32
_KEY_enopensquarebullet = 2785
-- constant _KEY_enspace

_KEY_enspace :: Int32
_KEY_enspace = 2722
-- constant _KEY_eogonek

_KEY_eogonek :: Int32
_KEY_eogonek = 490
-- constant _KEY_equal

_KEY_equal :: Int32
_KEY_equal = 61
-- constant _KEY_eth

_KEY_eth :: Int32
_KEY_eth = 240
-- constant _KEY_etilde

_KEY_etilde :: Int32
_KEY_etilde = 16785085
-- constant _KEY_exclam

_KEY_exclam :: Int32
_KEY_exclam = 33
-- constant _KEY_exclamdown

_KEY_exclamdown :: Int32
_KEY_exclamdown = 161
-- constant _KEY_ezh

_KEY_ezh :: Int32
_KEY_ezh = 16777874
-- constant _KEY_f

_KEY_f :: Int32
_KEY_f = 102
-- constant _KEY_fabovedot

_KEY_fabovedot :: Int32
_KEY_fabovedot = 16784927
-- constant _KEY_femalesymbol

_KEY_femalesymbol :: Int32
_KEY_femalesymbol = 2808
-- constant _KEY_ff

_KEY_ff :: Int32
_KEY_ff = 2531
-- constant _KEY_figdash

_KEY_figdash :: Int32
_KEY_figdash = 2747
-- constant _KEY_filledlefttribullet

_KEY_filledlefttribullet :: Int32
_KEY_filledlefttribullet = 2780
-- constant _KEY_filledrectbullet

_KEY_filledrectbullet :: Int32
_KEY_filledrectbullet = 2779
-- constant _KEY_filledrighttribullet

_KEY_filledrighttribullet :: Int32
_KEY_filledrighttribullet = 2781
-- constant _KEY_filledtribulletdown

_KEY_filledtribulletdown :: Int32
_KEY_filledtribulletdown = 2793
-- constant _KEY_filledtribulletup

_KEY_filledtribulletup :: Int32
_KEY_filledtribulletup = 2792
-- constant _KEY_fiveeighths

_KEY_fiveeighths :: Int32
_KEY_fiveeighths = 2757
-- constant _KEY_fivesixths

_KEY_fivesixths :: Int32
_KEY_fivesixths = 2743
-- constant _KEY_fivesubscript

_KEY_fivesubscript :: Int32
_KEY_fivesubscript = 16785541
-- constant _KEY_fivesuperior

_KEY_fivesuperior :: Int32
_KEY_fivesuperior = 16785525
-- constant _KEY_fourfifths

_KEY_fourfifths :: Int32
_KEY_fourfifths = 2741
-- constant _KEY_foursubscript

_KEY_foursubscript :: Int32
_KEY_foursubscript = 16785540
-- constant _KEY_foursuperior

_KEY_foursuperior :: Int32
_KEY_foursuperior = 16785524
-- constant _KEY_fourthroot

_KEY_fourthroot :: Int32
_KEY_fourthroot = 16785948
-- constant _KEY_function

_KEY_function :: Int32
_KEY_function = 2294
-- constant _KEY_g

_KEY_g :: Int32
_KEY_g = 103
-- constant _KEY_gabovedot

_KEY_gabovedot :: Int32
_KEY_gabovedot = 757
-- constant _KEY_gbreve

_KEY_gbreve :: Int32
_KEY_gbreve = 699
-- constant _KEY_gcaron

_KEY_gcaron :: Int32
_KEY_gcaron = 16777703
-- constant _KEY_gcedilla

_KEY_gcedilla :: Int32
_KEY_gcedilla = 955
-- constant _KEY_gcircumflex

_KEY_gcircumflex :: Int32
_KEY_gcircumflex = 760
-- constant _KEY_grave

_KEY_grave :: Int32
_KEY_grave = 96
-- constant _KEY_greater

_KEY_greater :: Int32
_KEY_greater = 62
-- constant _KEY_greaterthanequal

_KEY_greaterthanequal :: Int32
_KEY_greaterthanequal = 2238
-- constant _KEY_guillemotleft

_KEY_guillemotleft :: Int32
_KEY_guillemotleft = 171
-- constant _KEY_guillemotright

_KEY_guillemotright :: Int32
_KEY_guillemotright = 187
-- constant _KEY_h

_KEY_h :: Int32
_KEY_h = 104
-- constant _KEY_hairspace

_KEY_hairspace :: Int32
_KEY_hairspace = 2728
-- constant _KEY_hcircumflex

_KEY_hcircumflex :: Int32
_KEY_hcircumflex = 694
-- constant _KEY_heart

_KEY_heart :: Int32
_KEY_heart = 2798
-- constant _KEY_hebrew_aleph

_KEY_hebrew_aleph :: Int32
_KEY_hebrew_aleph = 3296
-- constant _KEY_hebrew_ayin

_KEY_hebrew_ayin :: Int32
_KEY_hebrew_ayin = 3314
-- constant _KEY_hebrew_bet

_KEY_hebrew_bet :: Int32
_KEY_hebrew_bet = 3297
-- constant _KEY_hebrew_beth

_KEY_hebrew_beth :: Int32
_KEY_hebrew_beth = 3297
-- constant _KEY_hebrew_chet

_KEY_hebrew_chet :: Int32
_KEY_hebrew_chet = 3303
-- constant _KEY_hebrew_dalet

_KEY_hebrew_dalet :: Int32
_KEY_hebrew_dalet = 3299
-- constant _KEY_hebrew_daleth

_KEY_hebrew_daleth :: Int32
_KEY_hebrew_daleth = 3299
-- constant _KEY_hebrew_doublelowline

_KEY_hebrew_doublelowline :: Int32
_KEY_hebrew_doublelowline = 3295
-- constant _KEY_hebrew_finalkaph

_KEY_hebrew_finalkaph :: Int32
_KEY_hebrew_finalkaph = 3306
-- constant _KEY_hebrew_finalmem

_KEY_hebrew_finalmem :: Int32
_KEY_hebrew_finalmem = 3309
-- constant _KEY_hebrew_finalnun

_KEY_hebrew_finalnun :: Int32
_KEY_hebrew_finalnun = 3311
-- constant _KEY_hebrew_finalpe

_KEY_hebrew_finalpe :: Int32
_KEY_hebrew_finalpe = 3315
-- constant _KEY_hebrew_finalzade

_KEY_hebrew_finalzade :: Int32
_KEY_hebrew_finalzade = 3317
-- constant _KEY_hebrew_finalzadi

_KEY_hebrew_finalzadi :: Int32
_KEY_hebrew_finalzadi = 3317
-- constant _KEY_hebrew_gimel

_KEY_hebrew_gimel :: Int32
_KEY_hebrew_gimel = 3298
-- constant _KEY_hebrew_gimmel

_KEY_hebrew_gimmel :: Int32
_KEY_hebrew_gimmel = 3298
-- constant _KEY_hebrew_he

_KEY_hebrew_he :: Int32
_KEY_hebrew_he = 3300
-- constant _KEY_hebrew_het

_KEY_hebrew_het :: Int32
_KEY_hebrew_het = 3303
-- constant _KEY_hebrew_kaph

_KEY_hebrew_kaph :: Int32
_KEY_hebrew_kaph = 3307
-- constant _KEY_hebrew_kuf

_KEY_hebrew_kuf :: Int32
_KEY_hebrew_kuf = 3319
-- constant _KEY_hebrew_lamed

_KEY_hebrew_lamed :: Int32
_KEY_hebrew_lamed = 3308
-- constant _KEY_hebrew_mem

_KEY_hebrew_mem :: Int32
_KEY_hebrew_mem = 3310
-- constant _KEY_hebrew_nun

_KEY_hebrew_nun :: Int32
_KEY_hebrew_nun = 3312
-- constant _KEY_hebrew_pe

_KEY_hebrew_pe :: Int32
_KEY_hebrew_pe = 3316
-- constant _KEY_hebrew_qoph

_KEY_hebrew_qoph :: Int32
_KEY_hebrew_qoph = 3319
-- constant _KEY_hebrew_resh

_KEY_hebrew_resh :: Int32
_KEY_hebrew_resh = 3320
-- constant _KEY_hebrew_samech

_KEY_hebrew_samech :: Int32
_KEY_hebrew_samech = 3313
-- constant _KEY_hebrew_samekh

_KEY_hebrew_samekh :: Int32
_KEY_hebrew_samekh = 3313
-- constant _KEY_hebrew_shin

_KEY_hebrew_shin :: Int32
_KEY_hebrew_shin = 3321
-- constant _KEY_hebrew_taf

_KEY_hebrew_taf :: Int32
_KEY_hebrew_taf = 3322
-- constant _KEY_hebrew_taw

_KEY_hebrew_taw :: Int32
_KEY_hebrew_taw = 3322
-- constant _KEY_hebrew_tet

_KEY_hebrew_tet :: Int32
_KEY_hebrew_tet = 3304
-- constant _KEY_hebrew_teth

_KEY_hebrew_teth :: Int32
_KEY_hebrew_teth = 3304
-- constant _KEY_hebrew_waw

_KEY_hebrew_waw :: Int32
_KEY_hebrew_waw = 3301
-- constant _KEY_hebrew_yod

_KEY_hebrew_yod :: Int32
_KEY_hebrew_yod = 3305
-- constant _KEY_hebrew_zade

_KEY_hebrew_zade :: Int32
_KEY_hebrew_zade = 3318
-- constant _KEY_hebrew_zadi

_KEY_hebrew_zadi :: Int32
_KEY_hebrew_zadi = 3318
-- constant _KEY_hebrew_zain

_KEY_hebrew_zain :: Int32
_KEY_hebrew_zain = 3302
-- constant _KEY_hebrew_zayin

_KEY_hebrew_zayin :: Int32
_KEY_hebrew_zayin = 3302
-- constant _KEY_hexagram

_KEY_hexagram :: Int32
_KEY_hexagram = 2778
-- constant _KEY_horizconnector

_KEY_horizconnector :: Int32
_KEY_horizconnector = 2211
-- constant _KEY_horizlinescan1

_KEY_horizlinescan1 :: Int32
_KEY_horizlinescan1 = 2543
-- constant _KEY_horizlinescan3

_KEY_horizlinescan3 :: Int32
_KEY_horizlinescan3 = 2544
-- constant _KEY_horizlinescan5

_KEY_horizlinescan5 :: Int32
_KEY_horizlinescan5 = 2545
-- constant _KEY_horizlinescan7

_KEY_horizlinescan7 :: Int32
_KEY_horizlinescan7 = 2546
-- constant _KEY_horizlinescan9

_KEY_horizlinescan9 :: Int32
_KEY_horizlinescan9 = 2547
-- constant _KEY_hstroke

_KEY_hstroke :: Int32
_KEY_hstroke = 689
-- constant _KEY_ht

_KEY_ht :: Int32
_KEY_ht = 2530
-- constant _KEY_hyphen

_KEY_hyphen :: Int32
_KEY_hyphen = 173
-- constant _KEY_i

_KEY_i :: Int32
_KEY_i = 105
-- constant _KEY_iTouch

_KEY_iTouch :: Int32
_KEY_iTouch = 269025120
-- constant _KEY_iacute

_KEY_iacute :: Int32
_KEY_iacute = 237
-- constant _KEY_ibelowdot

_KEY_ibelowdot :: Int32
_KEY_ibelowdot = 16785099
-- constant _KEY_ibreve

_KEY_ibreve :: Int32
_KEY_ibreve = 16777517
-- constant _KEY_icircumflex

_KEY_icircumflex :: Int32
_KEY_icircumflex = 238
-- constant _KEY_identical

_KEY_identical :: Int32
_KEY_identical = 2255
-- constant _KEY_idiaeresis

_KEY_idiaeresis :: Int32
_KEY_idiaeresis = 239
-- constant _KEY_idotless

_KEY_idotless :: Int32
_KEY_idotless = 697
-- constant _KEY_ifonlyif

_KEY_ifonlyif :: Int32
_KEY_ifonlyif = 2253
-- constant _KEY_igrave

_KEY_igrave :: Int32
_KEY_igrave = 236
-- constant _KEY_ihook

_KEY_ihook :: Int32
_KEY_ihook = 16785097
-- constant _KEY_imacron

_KEY_imacron :: Int32
_KEY_imacron = 1007
-- constant _KEY_implies

_KEY_implies :: Int32
_KEY_implies = 2254
-- constant _KEY_includedin

_KEY_includedin :: Int32
_KEY_includedin = 2266
-- constant _KEY_includes

_KEY_includes :: Int32
_KEY_includes = 2267
-- constant _KEY_infinity

_KEY_infinity :: Int32
_KEY_infinity = 2242
-- constant _KEY_integral

_KEY_integral :: Int32
_KEY_integral = 2239
-- constant _KEY_intersection

_KEY_intersection :: Int32
_KEY_intersection = 2268
-- constant _KEY_iogonek

_KEY_iogonek :: Int32
_KEY_iogonek = 999
-- constant _KEY_itilde

_KEY_itilde :: Int32
_KEY_itilde = 949
-- constant _KEY_j

_KEY_j :: Int32
_KEY_j = 106
-- constant _KEY_jcircumflex

_KEY_jcircumflex :: Int32
_KEY_jcircumflex = 700
-- constant _KEY_jot

_KEY_jot :: Int32
_KEY_jot = 3018
-- constant _KEY_k

_KEY_k :: Int32
_KEY_k = 107
-- constant _KEY_kana_A

_KEY_kana_A :: Int32
_KEY_kana_A = 1201
-- constant _KEY_kana_CHI

_KEY_kana_CHI :: Int32
_KEY_kana_CHI = 1217
-- constant _KEY_kana_E

_KEY_kana_E :: Int32
_KEY_kana_E = 1204
-- constant _KEY_kana_FU

_KEY_kana_FU :: Int32
_KEY_kana_FU = 1228
-- constant _KEY_kana_HA

_KEY_kana_HA :: Int32
_KEY_kana_HA = 1226
-- constant _KEY_kana_HE

_KEY_kana_HE :: Int32
_KEY_kana_HE = 1229
-- constant _KEY_kana_HI

_KEY_kana_HI :: Int32
_KEY_kana_HI = 1227
-- constant _KEY_kana_HO

_KEY_kana_HO :: Int32
_KEY_kana_HO = 1230
-- constant _KEY_kana_HU

_KEY_kana_HU :: Int32
_KEY_kana_HU = 1228
-- constant _KEY_kana_I

_KEY_kana_I :: Int32
_KEY_kana_I = 1202
-- constant _KEY_kana_KA

_KEY_kana_KA :: Int32
_KEY_kana_KA = 1206
-- constant _KEY_kana_KE

_KEY_kana_KE :: Int32
_KEY_kana_KE = 1209
-- constant _KEY_kana_KI

_KEY_kana_KI :: Int32
_KEY_kana_KI = 1207
-- constant _KEY_kana_KO

_KEY_kana_KO :: Int32
_KEY_kana_KO = 1210
-- constant _KEY_kana_KU

_KEY_kana_KU :: Int32
_KEY_kana_KU = 1208
-- constant _KEY_kana_MA

_KEY_kana_MA :: Int32
_KEY_kana_MA = 1231
-- constant _KEY_kana_ME

_KEY_kana_ME :: Int32
_KEY_kana_ME = 1234
-- constant _KEY_kana_MI

_KEY_kana_MI :: Int32
_KEY_kana_MI = 1232
-- constant _KEY_kana_MO

_KEY_kana_MO :: Int32
_KEY_kana_MO = 1235
-- constant _KEY_kana_MU

_KEY_kana_MU :: Int32
_KEY_kana_MU = 1233
-- constant _KEY_kana_N

_KEY_kana_N :: Int32
_KEY_kana_N = 1245
-- constant _KEY_kana_NA

_KEY_kana_NA :: Int32
_KEY_kana_NA = 1221
-- constant _KEY_kana_NE

_KEY_kana_NE :: Int32
_KEY_kana_NE = 1224
-- constant _KEY_kana_NI

_KEY_kana_NI :: Int32
_KEY_kana_NI = 1222
-- constant _KEY_kana_NO

_KEY_kana_NO :: Int32
_KEY_kana_NO = 1225
-- constant _KEY_kana_NU

_KEY_kana_NU :: Int32
_KEY_kana_NU = 1223
-- constant _KEY_kana_O

_KEY_kana_O :: Int32
_KEY_kana_O = 1205
-- constant _KEY_kana_RA

_KEY_kana_RA :: Int32
_KEY_kana_RA = 1239
-- constant _KEY_kana_RE

_KEY_kana_RE :: Int32
_KEY_kana_RE = 1242
-- constant _KEY_kana_RI

_KEY_kana_RI :: Int32
_KEY_kana_RI = 1240
-- constant _KEY_kana_RO

_KEY_kana_RO :: Int32
_KEY_kana_RO = 1243
-- constant _KEY_kana_RU

_KEY_kana_RU :: Int32
_KEY_kana_RU = 1241
-- constant _KEY_kana_SA

_KEY_kana_SA :: Int32
_KEY_kana_SA = 1211
-- constant _KEY_kana_SE

_KEY_kana_SE :: Int32
_KEY_kana_SE = 1214
-- constant _KEY_kana_SHI

_KEY_kana_SHI :: Int32
_KEY_kana_SHI = 1212
-- constant _KEY_kana_SO

_KEY_kana_SO :: Int32
_KEY_kana_SO = 1215
-- constant _KEY_kana_SU

_KEY_kana_SU :: Int32
_KEY_kana_SU = 1213
-- constant _KEY_kana_TA

_KEY_kana_TA :: Int32
_KEY_kana_TA = 1216
-- constant _KEY_kana_TE

_KEY_kana_TE :: Int32
_KEY_kana_TE = 1219
-- constant _KEY_kana_TI

_KEY_kana_TI :: Int32
_KEY_kana_TI = 1217
-- constant _KEY_kana_TO

_KEY_kana_TO :: Int32
_KEY_kana_TO = 1220
-- constant _KEY_kana_TSU

_KEY_kana_TSU :: Int32
_KEY_kana_TSU = 1218
-- constant _KEY_kana_TU

_KEY_kana_TU :: Int32
_KEY_kana_TU = 1218
-- constant _KEY_kana_U

_KEY_kana_U :: Int32
_KEY_kana_U = 1203
-- constant _KEY_kana_WA

_KEY_kana_WA :: Int32
_KEY_kana_WA = 1244
-- constant _KEY_kana_WO

_KEY_kana_WO :: Int32
_KEY_kana_WO = 1190
-- constant _KEY_kana_YA

_KEY_kana_YA :: Int32
_KEY_kana_YA = 1236
-- constant _KEY_kana_YO

_KEY_kana_YO :: Int32
_KEY_kana_YO = 1238
-- constant _KEY_kana_YU

_KEY_kana_YU :: Int32
_KEY_kana_YU = 1237
-- constant _KEY_kana_a

_KEY_kana_a :: Int32
_KEY_kana_a = 1191
-- constant _KEY_kana_closingbracket

_KEY_kana_closingbracket :: Int32
_KEY_kana_closingbracket = 1187
-- constant _KEY_kana_comma

_KEY_kana_comma :: Int32
_KEY_kana_comma = 1188
-- constant _KEY_kana_conjunctive

_KEY_kana_conjunctive :: Int32
_KEY_kana_conjunctive = 1189
-- constant _KEY_kana_e

_KEY_kana_e :: Int32
_KEY_kana_e = 1194
-- constant _KEY_kana_fullstop

_KEY_kana_fullstop :: Int32
_KEY_kana_fullstop = 1185
-- constant _KEY_kana_i

_KEY_kana_i :: Int32
_KEY_kana_i = 1192
-- constant _KEY_kana_middledot

_KEY_kana_middledot :: Int32
_KEY_kana_middledot = 1189
-- constant _KEY_kana_o

_KEY_kana_o :: Int32
_KEY_kana_o = 1195
-- constant _KEY_kana_openingbracket

_KEY_kana_openingbracket :: Int32
_KEY_kana_openingbracket = 1186
-- constant _KEY_kana_switch

_KEY_kana_switch :: Int32
_KEY_kana_switch = 65406
-- constant _KEY_kana_tsu

_KEY_kana_tsu :: Int32
_KEY_kana_tsu = 1199
-- constant _KEY_kana_tu

_KEY_kana_tu :: Int32
_KEY_kana_tu = 1199
-- constant _KEY_kana_u

_KEY_kana_u :: Int32
_KEY_kana_u = 1193
-- constant _KEY_kana_ya

_KEY_kana_ya :: Int32
_KEY_kana_ya = 1196
-- constant _KEY_kana_yo

_KEY_kana_yo :: Int32
_KEY_kana_yo = 1198
-- constant _KEY_kana_yu

_KEY_kana_yu :: Int32
_KEY_kana_yu = 1197
-- constant _KEY_kappa

_KEY_kappa :: Int32
_KEY_kappa = 930
-- constant _KEY_kcedilla

_KEY_kcedilla :: Int32
_KEY_kcedilla = 1011
-- constant _KEY_kra

_KEY_kra :: Int32
_KEY_kra = 930
-- constant _KEY_l

_KEY_l :: Int32
_KEY_l = 108
-- constant _KEY_lacute

_KEY_lacute :: Int32
_KEY_lacute = 485
-- constant _KEY_latincross

_KEY_latincross :: Int32
_KEY_latincross = 2777
-- constant _KEY_lbelowdot

_KEY_lbelowdot :: Int32
_KEY_lbelowdot = 16784951
-- constant _KEY_lcaron

_KEY_lcaron :: Int32
_KEY_lcaron = 437
-- constant _KEY_lcedilla

_KEY_lcedilla :: Int32
_KEY_lcedilla = 950
-- constant _KEY_leftanglebracket

_KEY_leftanglebracket :: Int32
_KEY_leftanglebracket = 2748
-- constant _KEY_leftarrow

_KEY_leftarrow :: Int32
_KEY_leftarrow = 2299
-- constant _KEY_leftcaret

_KEY_leftcaret :: Int32
_KEY_leftcaret = 2979
-- constant _KEY_leftdoublequotemark

_KEY_leftdoublequotemark :: Int32
_KEY_leftdoublequotemark = 2770
-- constant _KEY_leftmiddlecurlybrace

_KEY_leftmiddlecurlybrace :: Int32
_KEY_leftmiddlecurlybrace = 2223
-- constant _KEY_leftopentriangle

_KEY_leftopentriangle :: Int32
_KEY_leftopentriangle = 2764
-- constant _KEY_leftpointer

_KEY_leftpointer :: Int32
_KEY_leftpointer = 2794
-- constant _KEY_leftradical

_KEY_leftradical :: Int32
_KEY_leftradical = 2209
-- constant _KEY_leftshoe

_KEY_leftshoe :: Int32
_KEY_leftshoe = 3034
-- constant _KEY_leftsinglequotemark

_KEY_leftsinglequotemark :: Int32
_KEY_leftsinglequotemark = 2768
-- constant _KEY_leftt

_KEY_leftt :: Int32
_KEY_leftt = 2548
-- constant _KEY_lefttack

_KEY_lefttack :: Int32
_KEY_lefttack = 3036
-- constant _KEY_less

_KEY_less :: Int32
_KEY_less = 60
-- constant _KEY_lessthanequal

_KEY_lessthanequal :: Int32
_KEY_lessthanequal = 2236
-- constant _KEY_lf

_KEY_lf :: Int32
_KEY_lf = 2533
-- constant _KEY_logicaland

_KEY_logicaland :: Int32
_KEY_logicaland = 2270
-- constant _KEY_logicalor

_KEY_logicalor :: Int32
_KEY_logicalor = 2271
-- constant _KEY_lowleftcorner

_KEY_lowleftcorner :: Int32
_KEY_lowleftcorner = 2541
-- constant _KEY_lowrightcorner

_KEY_lowrightcorner :: Int32
_KEY_lowrightcorner = 2538
-- constant _KEY_lstroke

_KEY_lstroke :: Int32
_KEY_lstroke = 435
-- constant _KEY_m

_KEY_m :: Int32
_KEY_m = 109
-- constant _KEY_mabovedot

_KEY_mabovedot :: Int32
_KEY_mabovedot = 16784961
-- constant _KEY_macron

_KEY_macron :: Int32
_KEY_macron = 175
-- constant _KEY_malesymbol

_KEY_malesymbol :: Int32
_KEY_malesymbol = 2807
-- constant _KEY_maltesecross

_KEY_maltesecross :: Int32
_KEY_maltesecross = 2800
-- constant _KEY_marker

_KEY_marker :: Int32
_KEY_marker = 2751
-- constant _KEY_masculine

_KEY_masculine :: Int32
_KEY_masculine = 186
-- constant _KEY_minus

_KEY_minus :: Int32
_KEY_minus = 45
-- constant _KEY_minutes

_KEY_minutes :: Int32
_KEY_minutes = 2774
-- constant _KEY_mu

_KEY_mu :: Int32
_KEY_mu = 181
-- constant _KEY_multiply

_KEY_multiply :: Int32
_KEY_multiply = 215
-- constant _KEY_musicalflat

_KEY_musicalflat :: Int32
_KEY_musicalflat = 2806
-- constant _KEY_musicalsharp

_KEY_musicalsharp :: Int32
_KEY_musicalsharp = 2805
-- constant _KEY_n

_KEY_n :: Int32
_KEY_n = 110
-- constant _KEY_nabla

_KEY_nabla :: Int32
_KEY_nabla = 2245
-- constant _KEY_nacute

_KEY_nacute :: Int32
_KEY_nacute = 497
-- constant _KEY_ncaron

_KEY_ncaron :: Int32
_KEY_ncaron = 498
-- constant _KEY_ncedilla

_KEY_ncedilla :: Int32
_KEY_ncedilla = 1009
-- constant _KEY_ninesubscript

_KEY_ninesubscript :: Int32
_KEY_ninesubscript = 16785545
-- constant _KEY_ninesuperior

_KEY_ninesuperior :: Int32
_KEY_ninesuperior = 16785529
-- constant _KEY_nl

_KEY_nl :: Int32
_KEY_nl = 2536
-- constant _KEY_nobreakspace

_KEY_nobreakspace :: Int32
_KEY_nobreakspace = 160
-- constant _KEY_notapproxeq

_KEY_notapproxeq :: Int32
_KEY_notapproxeq = 16785991
-- constant _KEY_notelementof

_KEY_notelementof :: Int32
_KEY_notelementof = 16785929
-- constant _KEY_notequal

_KEY_notequal :: Int32
_KEY_notequal = 2237
-- constant _KEY_notidentical

_KEY_notidentical :: Int32
_KEY_notidentical = 16786018
-- constant _KEY_notsign

_KEY_notsign :: Int32
_KEY_notsign = 172
-- constant _KEY_ntilde

_KEY_ntilde :: Int32
_KEY_ntilde = 241
-- constant _KEY_numbersign

_KEY_numbersign :: Int32
_KEY_numbersign = 35
-- constant _KEY_numerosign

_KEY_numerosign :: Int32
_KEY_numerosign = 1712
-- constant _KEY_o

_KEY_o :: Int32
_KEY_o = 111
-- constant _KEY_oacute

_KEY_oacute :: Int32
_KEY_oacute = 243
-- constant _KEY_obarred

_KEY_obarred :: Int32
_KEY_obarred = 16777845
-- constant _KEY_obelowdot

_KEY_obelowdot :: Int32
_KEY_obelowdot = 16785101
-- constant _KEY_ocaron

_KEY_ocaron :: Int32
_KEY_ocaron = 16777682
-- constant _KEY_ocircumflex

_KEY_ocircumflex :: Int32
_KEY_ocircumflex = 244
-- constant _KEY_ocircumflexacute

_KEY_ocircumflexacute :: Int32
_KEY_ocircumflexacute = 16785105
-- constant _KEY_ocircumflexbelowdot

_KEY_ocircumflexbelowdot :: Int32
_KEY_ocircumflexbelowdot = 16785113
-- constant _KEY_ocircumflexgrave

_KEY_ocircumflexgrave :: Int32
_KEY_ocircumflexgrave = 16785107
-- constant _KEY_ocircumflexhook

_KEY_ocircumflexhook :: Int32
_KEY_ocircumflexhook = 16785109
-- constant _KEY_ocircumflextilde

_KEY_ocircumflextilde :: Int32
_KEY_ocircumflextilde = 16785111
-- constant _KEY_odiaeresis

_KEY_odiaeresis :: Int32
_KEY_odiaeresis = 246
-- constant _KEY_odoubleacute

_KEY_odoubleacute :: Int32
_KEY_odoubleacute = 501
-- constant _KEY_oe

_KEY_oe :: Int32
_KEY_oe = 5053
-- constant _KEY_ogonek

_KEY_ogonek :: Int32
_KEY_ogonek = 434
-- constant _KEY_ograve

_KEY_ograve :: Int32
_KEY_ograve = 242
-- constant _KEY_ohook

_KEY_ohook :: Int32
_KEY_ohook = 16785103
-- constant _KEY_ohorn

_KEY_ohorn :: Int32
_KEY_ohorn = 16777633
-- constant _KEY_ohornacute

_KEY_ohornacute :: Int32
_KEY_ohornacute = 16785115
-- constant _KEY_ohornbelowdot

_KEY_ohornbelowdot :: Int32
_KEY_ohornbelowdot = 16785123
-- constant _KEY_ohorngrave

_KEY_ohorngrave :: Int32
_KEY_ohorngrave = 16785117
-- constant _KEY_ohornhook

_KEY_ohornhook :: Int32
_KEY_ohornhook = 16785119
-- constant _KEY_ohorntilde

_KEY_ohorntilde :: Int32
_KEY_ohorntilde = 16785121
-- constant _KEY_omacron

_KEY_omacron :: Int32
_KEY_omacron = 1010
-- constant _KEY_oneeighth

_KEY_oneeighth :: Int32
_KEY_oneeighth = 2755
-- constant _KEY_onefifth

_KEY_onefifth :: Int32
_KEY_onefifth = 2738
-- constant _KEY_onehalf

_KEY_onehalf :: Int32
_KEY_onehalf = 189
-- constant _KEY_onequarter

_KEY_onequarter :: Int32
_KEY_onequarter = 188
-- constant _KEY_onesixth

_KEY_onesixth :: Int32
_KEY_onesixth = 2742
-- constant _KEY_onesubscript

_KEY_onesubscript :: Int32
_KEY_onesubscript = 16785537
-- constant _KEY_onesuperior

_KEY_onesuperior :: Int32
_KEY_onesuperior = 185
-- constant _KEY_onethird

_KEY_onethird :: Int32
_KEY_onethird = 2736
-- constant _KEY_ooblique

_KEY_ooblique :: Int32
_KEY_ooblique = 248
-- constant _KEY_openrectbullet

_KEY_openrectbullet :: Int32
_KEY_openrectbullet = 2786
-- constant _KEY_openstar

_KEY_openstar :: Int32
_KEY_openstar = 2789
-- constant _KEY_opentribulletdown

_KEY_opentribulletdown :: Int32
_KEY_opentribulletdown = 2788
-- constant _KEY_opentribulletup

_KEY_opentribulletup :: Int32
_KEY_opentribulletup = 2787
-- constant _KEY_ordfeminine

_KEY_ordfeminine :: Int32
_KEY_ordfeminine = 170
-- constant _KEY_oslash

_KEY_oslash :: Int32
_KEY_oslash = 248
-- constant _KEY_otilde

_KEY_otilde :: Int32
_KEY_otilde = 245
-- constant _KEY_overbar

_KEY_overbar :: Int32
_KEY_overbar = 3008
-- constant _KEY_overline

_KEY_overline :: Int32
_KEY_overline = 1150
-- constant _KEY_p

_KEY_p :: Int32
_KEY_p = 112
-- constant _KEY_pabovedot

_KEY_pabovedot :: Int32
_KEY_pabovedot = 16784983
-- constant _KEY_paragraph

_KEY_paragraph :: Int32
_KEY_paragraph = 182
-- constant _KEY_parenleft

_KEY_parenleft :: Int32
_KEY_parenleft = 40
-- constant _KEY_parenright

_KEY_parenright :: Int32
_KEY_parenright = 41
-- constant _KEY_partdifferential

_KEY_partdifferential :: Int32
_KEY_partdifferential = 16785922
-- constant _KEY_partialderivative

_KEY_partialderivative :: Int32
_KEY_partialderivative = 2287
-- constant _KEY_percent

_KEY_percent :: Int32
_KEY_percent = 37
-- constant _KEY_period

_KEY_period :: Int32
_KEY_period = 46
-- constant _KEY_periodcentered

_KEY_periodcentered :: Int32
_KEY_periodcentered = 183
-- constant _KEY_permille

_KEY_permille :: Int32
_KEY_permille = 2773
-- constant _KEY_phonographcopyright

_KEY_phonographcopyright :: Int32
_KEY_phonographcopyright = 2811
-- constant _KEY_plus

_KEY_plus :: Int32
_KEY_plus = 43
-- constant _KEY_plusminus

_KEY_plusminus :: Int32
_KEY_plusminus = 177
-- constant _KEY_prescription

_KEY_prescription :: Int32
_KEY_prescription = 2772
-- constant _KEY_prolongedsound

_KEY_prolongedsound :: Int32
_KEY_prolongedsound = 1200
-- constant _KEY_punctspace

_KEY_punctspace :: Int32
_KEY_punctspace = 2726
-- constant _KEY_q

_KEY_q :: Int32
_KEY_q = 113
-- constant _KEY_quad

_KEY_quad :: Int32
_KEY_quad = 3020
-- constant _KEY_question

_KEY_question :: Int32
_KEY_question = 63
-- constant _KEY_questiondown

_KEY_questiondown :: Int32
_KEY_questiondown = 191
-- constant _KEY_quotedbl

_KEY_quotedbl :: Int32
_KEY_quotedbl = 34
-- constant _KEY_quoteleft

_KEY_quoteleft :: Int32
_KEY_quoteleft = 96
-- constant _KEY_quoteright

_KEY_quoteright :: Int32
_KEY_quoteright = 39
-- constant _KEY_r

_KEY_r :: Int32
_KEY_r = 114
-- constant _KEY_racute

_KEY_racute :: Int32
_KEY_racute = 480
-- constant _KEY_radical

_KEY_radical :: Int32
_KEY_radical = 2262
-- constant _KEY_rcaron

_KEY_rcaron :: Int32
_KEY_rcaron = 504
-- constant _KEY_rcedilla

_KEY_rcedilla :: Int32
_KEY_rcedilla = 947
-- constant _KEY_registered

_KEY_registered :: Int32
_KEY_registered = 174
-- constant _KEY_rightanglebracket

_KEY_rightanglebracket :: Int32
_KEY_rightanglebracket = 2750
-- constant _KEY_rightarrow

_KEY_rightarrow :: Int32
_KEY_rightarrow = 2301
-- constant _KEY_rightcaret

_KEY_rightcaret :: Int32
_KEY_rightcaret = 2982
-- constant _KEY_rightdoublequotemark

_KEY_rightdoublequotemark :: Int32
_KEY_rightdoublequotemark = 2771
-- constant _KEY_rightmiddlecurlybrace

_KEY_rightmiddlecurlybrace :: Int32
_KEY_rightmiddlecurlybrace = 2224
-- constant _KEY_rightmiddlesummation

_KEY_rightmiddlesummation :: Int32
_KEY_rightmiddlesummation = 2231
-- constant _KEY_rightopentriangle

_KEY_rightopentriangle :: Int32
_KEY_rightopentriangle = 2765
-- constant _KEY_rightpointer

_KEY_rightpointer :: Int32
_KEY_rightpointer = 2795
-- constant _KEY_rightshoe

_KEY_rightshoe :: Int32
_KEY_rightshoe = 3032
-- constant _KEY_rightsinglequotemark

_KEY_rightsinglequotemark :: Int32
_KEY_rightsinglequotemark = 2769
-- constant _KEY_rightt

_KEY_rightt :: Int32
_KEY_rightt = 2549
-- constant _KEY_righttack

_KEY_righttack :: Int32
_KEY_righttack = 3068
-- constant _KEY_s

_KEY_s :: Int32
_KEY_s = 115
-- constant _KEY_sabovedot

_KEY_sabovedot :: Int32
_KEY_sabovedot = 16784993
-- constant _KEY_sacute

_KEY_sacute :: Int32
_KEY_sacute = 438
-- constant _KEY_scaron

_KEY_scaron :: Int32
_KEY_scaron = 441
-- constant _KEY_scedilla

_KEY_scedilla :: Int32
_KEY_scedilla = 442
-- constant _KEY_schwa

_KEY_schwa :: Int32
_KEY_schwa = 16777817
-- constant _KEY_scircumflex

_KEY_scircumflex :: Int32
_KEY_scircumflex = 766
-- constant _KEY_script_switch

_KEY_script_switch :: Int32
_KEY_script_switch = 65406
-- constant _KEY_seconds

_KEY_seconds :: Int32
_KEY_seconds = 2775
-- constant _KEY_section

_KEY_section :: Int32
_KEY_section = 167
-- constant _KEY_semicolon

_KEY_semicolon :: Int32
_KEY_semicolon = 59
-- constant _KEY_semivoicedsound

_KEY_semivoicedsound :: Int32
_KEY_semivoicedsound = 1247
-- constant _KEY_seveneighths

_KEY_seveneighths :: Int32
_KEY_seveneighths = 2758
-- constant _KEY_sevensubscript

_KEY_sevensubscript :: Int32
_KEY_sevensubscript = 16785543
-- constant _KEY_sevensuperior

_KEY_sevensuperior :: Int32
_KEY_sevensuperior = 16785527
-- constant _KEY_signaturemark

_KEY_signaturemark :: Int32
_KEY_signaturemark = 2762
-- constant _KEY_signifblank

_KEY_signifblank :: Int32
_KEY_signifblank = 2732
-- constant _KEY_similarequal

_KEY_similarequal :: Int32
_KEY_similarequal = 2249
-- constant _KEY_singlelowquotemark

_KEY_singlelowquotemark :: Int32
_KEY_singlelowquotemark = 2813
-- constant _KEY_sixsubscript

_KEY_sixsubscript :: Int32
_KEY_sixsubscript = 16785542
-- constant _KEY_sixsuperior

_KEY_sixsuperior :: Int32
_KEY_sixsuperior = 16785526
-- constant _KEY_slash

_KEY_slash :: Int32
_KEY_slash = 47
-- constant _KEY_soliddiamond

_KEY_soliddiamond :: Int32
_KEY_soliddiamond = 2528
-- constant _KEY_space

_KEY_space :: Int32
_KEY_space = 32
-- constant _KEY_squareroot

_KEY_squareroot :: Int32
_KEY_squareroot = 16785946
-- constant _KEY_ssharp

_KEY_ssharp :: Int32
_KEY_ssharp = 223
-- constant _KEY_sterling

_KEY_sterling :: Int32
_KEY_sterling = 163
-- constant _KEY_stricteq

_KEY_stricteq :: Int32
_KEY_stricteq = 16786019
-- constant _KEY_t

_KEY_t :: Int32
_KEY_t = 116
-- constant _KEY_tabovedot

_KEY_tabovedot :: Int32
_KEY_tabovedot = 16785003
-- constant _KEY_tcaron

_KEY_tcaron :: Int32
_KEY_tcaron = 443
-- constant _KEY_tcedilla

_KEY_tcedilla :: Int32
_KEY_tcedilla = 510
-- constant _KEY_telephone

_KEY_telephone :: Int32
_KEY_telephone = 2809
-- constant _KEY_telephonerecorder

_KEY_telephonerecorder :: Int32
_KEY_telephonerecorder = 2810
-- constant _KEY_therefore

_KEY_therefore :: Int32
_KEY_therefore = 2240
-- constant _KEY_thinspace

_KEY_thinspace :: Int32
_KEY_thinspace = 2727
-- constant _KEY_thorn

_KEY_thorn :: Int32
_KEY_thorn = 254
-- constant _KEY_threeeighths

_KEY_threeeighths :: Int32
_KEY_threeeighths = 2756
-- constant _KEY_threefifths

_KEY_threefifths :: Int32
_KEY_threefifths = 2740
-- constant _KEY_threequarters

_KEY_threequarters :: Int32
_KEY_threequarters = 190
-- constant _KEY_threesubscript

_KEY_threesubscript :: Int32
_KEY_threesubscript = 16785539
-- constant _KEY_threesuperior

_KEY_threesuperior :: Int32
_KEY_threesuperior = 179
-- constant _KEY_tintegral

_KEY_tintegral :: Int32
_KEY_tintegral = 16785965
-- constant _KEY_topintegral

_KEY_topintegral :: Int32
_KEY_topintegral = 2212
-- constant _KEY_topleftparens

_KEY_topleftparens :: Int32
_KEY_topleftparens = 2219
-- constant _KEY_topleftradical

_KEY_topleftradical :: Int32
_KEY_topleftradical = 2210
-- constant _KEY_topleftsqbracket

_KEY_topleftsqbracket :: Int32
_KEY_topleftsqbracket = 2215
-- constant _KEY_topleftsummation

_KEY_topleftsummation :: Int32
_KEY_topleftsummation = 2225
-- constant _KEY_toprightparens

_KEY_toprightparens :: Int32
_KEY_toprightparens = 2221
-- constant _KEY_toprightsqbracket

_KEY_toprightsqbracket :: Int32
_KEY_toprightsqbracket = 2217
-- constant _KEY_toprightsummation

_KEY_toprightsummation :: Int32
_KEY_toprightsummation = 2229
-- constant _KEY_topt

_KEY_topt :: Int32
_KEY_topt = 2551
-- constant _KEY_topvertsummationconnector

_KEY_topvertsummationconnector :: Int32
_KEY_topvertsummationconnector = 2227
-- constant _KEY_trademark

_KEY_trademark :: Int32
_KEY_trademark = 2761
-- constant _KEY_trademarkincircle

_KEY_trademarkincircle :: Int32
_KEY_trademarkincircle = 2763
-- constant _KEY_tslash

_KEY_tslash :: Int32
_KEY_tslash = 956
-- constant _KEY_twofifths

_KEY_twofifths :: Int32
_KEY_twofifths = 2739
-- constant _KEY_twosubscript

_KEY_twosubscript :: Int32
_KEY_twosubscript = 16785538
-- constant _KEY_twosuperior

_KEY_twosuperior :: Int32
_KEY_twosuperior = 178
-- constant _KEY_twothirds

_KEY_twothirds :: Int32
_KEY_twothirds = 2737
-- constant _KEY_u

_KEY_u :: Int32
_KEY_u = 117
-- constant _KEY_uacute

_KEY_uacute :: Int32
_KEY_uacute = 250
-- constant _KEY_ubelowdot

_KEY_ubelowdot :: Int32
_KEY_ubelowdot = 16785125
-- constant _KEY_ubreve

_KEY_ubreve :: Int32
_KEY_ubreve = 765
-- constant _KEY_ucircumflex

_KEY_ucircumflex :: Int32
_KEY_ucircumflex = 251
-- constant _KEY_udiaeresis

_KEY_udiaeresis :: Int32
_KEY_udiaeresis = 252
-- constant _KEY_udoubleacute

_KEY_udoubleacute :: Int32
_KEY_udoubleacute = 507
-- constant _KEY_ugrave

_KEY_ugrave :: Int32
_KEY_ugrave = 249
-- constant _KEY_uhook

_KEY_uhook :: Int32
_KEY_uhook = 16785127
-- constant _KEY_uhorn

_KEY_uhorn :: Int32
_KEY_uhorn = 16777648
-- constant _KEY_uhornacute

_KEY_uhornacute :: Int32
_KEY_uhornacute = 16785129
-- constant _KEY_uhornbelowdot

_KEY_uhornbelowdot :: Int32
_KEY_uhornbelowdot = 16785137
-- constant _KEY_uhorngrave

_KEY_uhorngrave :: Int32
_KEY_uhorngrave = 16785131
-- constant _KEY_uhornhook

_KEY_uhornhook :: Int32
_KEY_uhornhook = 16785133
-- constant _KEY_uhorntilde

_KEY_uhorntilde :: Int32
_KEY_uhorntilde = 16785135
-- constant _KEY_umacron

_KEY_umacron :: Int32
_KEY_umacron = 1022
-- constant _KEY_underbar

_KEY_underbar :: Int32
_KEY_underbar = 3014
-- constant _KEY_underscore

_KEY_underscore :: Int32
_KEY_underscore = 95
-- constant _KEY_union

_KEY_union :: Int32
_KEY_union = 2269
-- constant _KEY_uogonek

_KEY_uogonek :: Int32
_KEY_uogonek = 1017
-- constant _KEY_uparrow

_KEY_uparrow :: Int32
_KEY_uparrow = 2300
-- constant _KEY_upcaret

_KEY_upcaret :: Int32
_KEY_upcaret = 2985
-- constant _KEY_upleftcorner

_KEY_upleftcorner :: Int32
_KEY_upleftcorner = 2540
-- constant _KEY_uprightcorner

_KEY_uprightcorner :: Int32
_KEY_uprightcorner = 2539
-- constant _KEY_upshoe

_KEY_upshoe :: Int32
_KEY_upshoe = 3011
-- constant _KEY_upstile

_KEY_upstile :: Int32
_KEY_upstile = 3027
-- constant _KEY_uptack

_KEY_uptack :: Int32
_KEY_uptack = 3022
-- constant _KEY_uring

_KEY_uring :: Int32
_KEY_uring = 505
-- constant _KEY_utilde

_KEY_utilde :: Int32
_KEY_utilde = 1021
-- constant _KEY_v

_KEY_v :: Int32
_KEY_v = 118
-- constant _KEY_variation

_KEY_variation :: Int32
_KEY_variation = 2241
-- constant _KEY_vertbar

_KEY_vertbar :: Int32
_KEY_vertbar = 2552
-- constant _KEY_vertconnector

_KEY_vertconnector :: Int32
_KEY_vertconnector = 2214
-- constant _KEY_voicedsound

_KEY_voicedsound :: Int32
_KEY_voicedsound = 1246
-- constant _KEY_vt

_KEY_vt :: Int32
_KEY_vt = 2537
-- constant _KEY_w

_KEY_w :: Int32
_KEY_w = 119
-- constant _KEY_wacute

_KEY_wacute :: Int32
_KEY_wacute = 16785027
-- constant _KEY_wcircumflex

_KEY_wcircumflex :: Int32
_KEY_wcircumflex = 16777589
-- constant _KEY_wdiaeresis

_KEY_wdiaeresis :: Int32
_KEY_wdiaeresis = 16785029
-- constant _KEY_wgrave

_KEY_wgrave :: Int32
_KEY_wgrave = 16785025
-- constant _KEY_x

_KEY_x :: Int32
_KEY_x = 120
-- constant _KEY_xabovedot

_KEY_xabovedot :: Int32
_KEY_xabovedot = 16785035
-- constant _KEY_y

_KEY_y :: Int32
_KEY_y = 121
-- constant _KEY_yacute

_KEY_yacute :: Int32
_KEY_yacute = 253
-- constant _KEY_ybelowdot

_KEY_ybelowdot :: Int32
_KEY_ybelowdot = 16785141
-- constant _KEY_ycircumflex

_KEY_ycircumflex :: Int32
_KEY_ycircumflex = 16777591
-- constant _KEY_ydiaeresis

_KEY_ydiaeresis :: Int32
_KEY_ydiaeresis = 255
-- constant _KEY_yen

_KEY_yen :: Int32
_KEY_yen = 165
-- constant _KEY_ygrave

_KEY_ygrave :: Int32
_KEY_ygrave = 16785139
-- constant _KEY_yhook

_KEY_yhook :: Int32
_KEY_yhook = 16785143
-- constant _KEY_ytilde

_KEY_ytilde :: Int32
_KEY_ytilde = 16785145
-- constant _KEY_z

_KEY_z :: Int32
_KEY_z = 122
-- constant _KEY_zabovedot

_KEY_zabovedot :: Int32
_KEY_zabovedot = 447
-- constant _KEY_zacute

_KEY_zacute :: Int32
_KEY_zacute = 444
-- constant _KEY_zcaron

_KEY_zcaron :: Int32
_KEY_zcaron = 446
-- constant _KEY_zerosubscript

_KEY_zerosubscript :: Int32
_KEY_zerosubscript = 16785536
-- constant _KEY_zerosuperior

_KEY_zerosuperior :: Int32
_KEY_zerosuperior = 16785520
-- constant _KEY_zstroke

_KEY_zstroke :: Int32
_KEY_zstroke = 16777654
-- constant _MAX_TIMECOORD_AXES

_MAX_TIMECOORD_AXES :: Int32
_MAX_TIMECOORD_AXES = 128
-- constant _PARENT_RELATIVE

_PARENT_RELATIVE :: Int32
_PARENT_RELATIVE = 1
-- constant _PRIORITY_REDRAW

_PRIORITY_REDRAW :: Int32
_PRIORITY_REDRAW = 20
-- function gdk_add_option_entries_libgtk_only
-- Args : [Arg {argName = "group", argType = TInterface "GLib" "OptionGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "group", argType = TInterface "GLib" "OptionGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_add_option_entries_libgtk_only" gdk_add_option_entries_libgtk_only :: 
    Ptr GLib.OptionGroup ->                 -- group : TInterface "GLib" "OptionGroup"
    IO ()

{-# DEPRECATED addOptionEntriesLibgtkOnly ["(Since version 3.16)","This symbol was never meant to be used outside","  of GTK+"]#-}
addOptionEntriesLibgtkOnly ::
    (MonadIO m) =>
    GLib.OptionGroup ->                     -- group
    m ()
addOptionEntriesLibgtkOnly group = liftIO $ do
    let group' = unsafeManagedPtrGetPtr group
    gdk_add_option_entries_libgtk_only group'
    touchManagedPtr group
    return ()

-- function gdk_atom_intern
-- Args : [Arg {argName = "atom_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "only_if_exists", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "atom_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "only_if_exists", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Atom"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_atom_intern" gdk_atom_intern :: 
    CString ->                              -- atom_name : TBasicType TUTF8
    CInt ->                                 -- only_if_exists : TBasicType TBoolean
    IO (Ptr Atom)


atomIntern ::
    (MonadIO m) =>
    T.Text ->                               -- atom_name
    Bool ->                                 -- only_if_exists
    m Atom
atomIntern atom_name only_if_exists = liftIO $ do
    atom_name' <- textToCString atom_name
    let only_if_exists' = (fromIntegral . fromEnum) only_if_exists
    result <- gdk_atom_intern atom_name' only_if_exists'
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- (\x -> Atom <$> newForeignPtr_ x) result
    freeMem atom_name'
    return result'

-- function gdk_atom_intern_static_string
-- Args : [Arg {argName = "atom_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "atom_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Atom"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_atom_intern_static_string" gdk_atom_intern_static_string :: 
    CString ->                              -- atom_name : TBasicType TUTF8
    IO (Ptr Atom)


atomInternStaticString ::
    (MonadIO m) =>
    T.Text ->                               -- atom_name
    m Atom
atomInternStaticString atom_name = liftIO $ do
    atom_name' <- textToCString atom_name
    result <- gdk_atom_intern_static_string atom_name'
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- (\x -> Atom <$> newForeignPtr_ x) result
    freeMem atom_name'
    return result'

-- function gdk_beep
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_beep" gdk_beep :: 
    IO ()


beep ::
    (MonadIO m) =>
    m ()
beep  = liftIO $ do
    gdk_beep
    return ()

-- function gdk_cairo_create
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Context"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_create" gdk_cairo_create :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Context)


cairoCreate ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    m Cairo.Context
cairoCreate window = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    result <- gdk_cairo_create window'
    result' <- (wrapBoxed Cairo.Context) result
    touchManagedPtr window
    return result'

-- function gdk_cairo_draw_from_gl
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source_type", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "buffer_scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "source_type", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "buffer_scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_draw_from_gl" gdk_cairo_draw_from_gl :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Int32 ->                                -- source : TBasicType TInt32
    Int32 ->                                -- source_type : TBasicType TInt32
    Int32 ->                                -- buffer_scale : TBasicType TInt32
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


cairoDrawFromGl ::
    (MonadIO m, WindowK a) =>
    Cairo.Context ->                        -- cr
    a ->                                    -- window
    Int32 ->                                -- source
    Int32 ->                                -- source_type
    Int32 ->                                -- buffer_scale
    Int32 ->                                -- x
    Int32 ->                                -- y
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
cairoDrawFromGl cr window source source_type buffer_scale x y width height = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let window' = unsafeManagedPtrCastPtr window
    gdk_cairo_draw_from_gl cr' window' source source_type buffer_scale x y width height
    touchManagedPtr cr
    touchManagedPtr window
    return ()

-- function gdk_cairo_get_clip_rectangle
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rect", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_get_clip_rectangle" gdk_cairo_get_clip_rectangle :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Cairo.RectangleInt ->               -- rect : TInterface "cairo" "RectangleInt"
    IO CInt


cairoGetClipRectangle ::
    (MonadIO m) =>
    Cairo.Context ->                        -- cr
    m (Bool,Cairo.RectangleInt)
cairoGetClipRectangle cr = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    rect <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    result <- gdk_cairo_get_clip_rectangle cr' rect
    let result' = (/= 0) result
    rect' <- (wrapBoxed Cairo.RectangleInt) rect
    touchManagedPtr cr
    return (result', rect')

-- function gdk_cairo_rectangle
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rectangle", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rectangle", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_rectangle" gdk_cairo_rectangle :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Cairo.RectangleInt ->               -- rectangle : TInterface "cairo" "RectangleInt"
    IO ()


cairoRectangle ::
    (MonadIO m) =>
    Cairo.Context ->                        -- cr
    Cairo.RectangleInt ->                   -- rectangle
    m ()
cairoRectangle cr rectangle = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let rectangle' = unsafeManagedPtrGetPtr rectangle
    gdk_cairo_rectangle cr' rectangle'
    touchManagedPtr cr
    touchManagedPtr rectangle
    return ()

-- function gdk_cairo_region
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_region" gdk_cairo_region :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO ()


cairoRegion ::
    (MonadIO m) =>
    Cairo.Context ->                        -- cr
    Cairo.Region ->                         -- region
    m ()
cairoRegion cr region = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let region' = unsafeManagedPtrGetPtr region
    gdk_cairo_region cr' region'
    touchManagedPtr cr
    touchManagedPtr region
    return ()

-- function gdk_cairo_region_create_from_surface
-- Args : [Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Region"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_region_create_from_surface" gdk_cairo_region_create_from_surface :: 
    Ptr Cairo.Surface ->                    -- surface : TInterface "cairo" "Surface"
    IO (Ptr Cairo.Region)


cairoRegionCreateFromSurface ::
    (MonadIO m) =>
    Cairo.Surface ->                        -- surface
    m Cairo.Region
cairoRegionCreateFromSurface surface = liftIO $ do
    let surface' = unsafeManagedPtrGetPtr surface
    result <- gdk_cairo_region_create_from_surface surface'
    result' <- (wrapBoxed Cairo.Region) result
    touchManagedPtr surface
    return result'

-- function gdk_cairo_set_source_color
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_set_source_color" gdk_cairo_set_source_color :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Color ->                            -- color : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED cairoSetSourceColor ["(Since version 3.4)","Use gdk_cairo_set_source_rgba() instead"]#-}
cairoSetSourceColor ::
    (MonadIO m) =>
    Cairo.Context ->                        -- cr
    Color ->                                -- color
    m ()
cairoSetSourceColor cr color = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let color' = unsafeManagedPtrGetPtr color
    gdk_cairo_set_source_color cr' color'
    touchManagedPtr cr
    touchManagedPtr color
    return ()

-- function gdk_cairo_set_source_pixbuf
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_set_source_pixbuf" gdk_cairo_set_source_pixbuf :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    CDouble ->                              -- pixbuf_x : TBasicType TDouble
    CDouble ->                              -- pixbuf_y : TBasicType TDouble
    IO ()


cairoSetSourcePixbuf ::
    (MonadIO m, GdkPixbuf.PixbufK a) =>
    Cairo.Context ->                        -- cr
    a ->                                    -- pixbuf
    Double ->                               -- pixbuf_x
    Double ->                               -- pixbuf_y
    m ()
cairoSetSourcePixbuf cr pixbuf pixbuf_x pixbuf_y = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
    let pixbuf_x' = realToFrac pixbuf_x
    let pixbuf_y' = realToFrac pixbuf_y
    gdk_cairo_set_source_pixbuf cr' pixbuf' pixbuf_x' pixbuf_y'
    touchManagedPtr cr
    touchManagedPtr pixbuf
    return ()

-- function gdk_cairo_set_source_rgba
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rgba", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rgba", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_set_source_rgba" gdk_cairo_set_source_rgba :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr RGBA ->                             -- rgba : TInterface "Gdk" "RGBA"
    IO ()


cairoSetSourceRgba ::
    (MonadIO m) =>
    Cairo.Context ->                        -- cr
    RGBA ->                                 -- rgba
    m ()
cairoSetSourceRgba cr rgba = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let rgba' = unsafeManagedPtrGetPtr rgba
    gdk_cairo_set_source_rgba cr' rgba'
    touchManagedPtr cr
    touchManagedPtr rgba
    return ()

-- function gdk_cairo_set_source_window
-- Args : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_set_source_window" gdk_cairo_set_source_window :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    CDouble ->                              -- x : TBasicType TDouble
    CDouble ->                              -- y : TBasicType TDouble
    IO ()


cairoSetSourceWindow ::
    (MonadIO m, WindowK a) =>
    Cairo.Context ->                        -- cr
    a ->                                    -- window
    Double ->                               -- x
    Double ->                               -- y
    m ()
cairoSetSourceWindow cr window x y = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let window' = unsafeManagedPtrCastPtr window
    let x' = realToFrac x
    let y' = realToFrac y
    gdk_cairo_set_source_window cr' window' x' y'
    touchManagedPtr cr
    touchManagedPtr window
    return ()

-- function gdk_cairo_surface_create_from_pixbuf
-- Args : [Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "for_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "for_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Surface"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_cairo_surface_create_from_pixbuf" gdk_cairo_surface_create_from_pixbuf :: 
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    Int32 ->                                -- scale : TBasicType TInt32
    Ptr Window ->                           -- for_window : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Surface)


cairoSurfaceCreateFromPixbuf ::
    (MonadIO m, GdkPixbuf.PixbufK a, WindowK b) =>
    a ->                                    -- pixbuf
    Int32 ->                                -- scale
    Maybe (b) ->                            -- for_window
    m Cairo.Surface
cairoSurfaceCreateFromPixbuf pixbuf scale for_window = liftIO $ do
    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
    maybeFor_window <- case for_window of
        Nothing -> return nullPtr
        Just jFor_window -> do
            let jFor_window' = unsafeManagedPtrCastPtr jFor_window
            return jFor_window'
    result <- gdk_cairo_surface_create_from_pixbuf pixbuf' scale maybeFor_window
    result' <- (wrapBoxed Cairo.Surface) result
    touchManagedPtr pixbuf
    whenJust for_window touchManagedPtr
    return result'

-- function gdk_color_parse
-- Args : [Arg {argName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_color_parse" gdk_color_parse :: 
    CString ->                              -- spec : TBasicType TUTF8
    Ptr Color ->                            -- color : TInterface "Gdk" "Color"
    IO CInt

{-# DEPRECATED colorParse ["(Since version 3.14)","Use #GdkRGBA"]#-}
colorParse ::
    (MonadIO m) =>
    T.Text ->                               -- spec
    m (Bool,Color)
colorParse spec = liftIO $ do
    spec' <- textToCString spec
    color <- callocBoxedBytes 12 :: IO (Ptr Color)
    result <- gdk_color_parse spec' color
    let result' = (/= 0) result
    color' <- (wrapBoxed Color) color
    freeMem spec'
    return (result', color')

-- function gdk_disable_multidevice
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_disable_multidevice" gdk_disable_multidevice :: 
    IO ()


disableMultidevice ::
    (MonadIO m) =>
    m ()
disableMultidevice  = liftIO $ do
    gdk_disable_multidevice
    return ()

-- function gdk_drag_abort
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_abort" gdk_drag_abort :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


dragAbort ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    Word32 ->                               -- time_
    m ()
dragAbort context time_ = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    gdk_drag_abort context' time_
    touchManagedPtr context
    return ()

-- function gdk_drag_begin
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TGList (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TGList (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragContext"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_begin" gdk_drag_begin :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Ptr (GList (Ptr Atom)) ->               -- targets : TGList (TInterface "Gdk" "Atom")
    IO (Ptr DragContext)


dragBegin ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    [Atom] ->                               -- targets
    m DragContext
dragBegin window targets = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let targets' = map unsafeManagedPtrGetPtr targets
    targets'' <- packGList targets'
    result <- gdk_drag_begin window' targets''
    result' <- (wrapObject DragContext) result
    touchManagedPtr window
    mapM_ touchManagedPtr targets
    g_list_free targets''
    return result'

-- function gdk_drag_begin_for_device
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TGList (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TGList (TInterface "Gdk" "Atom"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragContext"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_begin_for_device" gdk_drag_begin_for_device :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Ptr Device ->                           -- device : TInterface "Gdk" "Device"
    Ptr (GList (Ptr Atom)) ->               -- targets : TGList (TInterface "Gdk" "Atom")
    IO (Ptr DragContext)


dragBeginForDevice ::
    (MonadIO m, WindowK a, DeviceK b) =>
    a ->                                    -- window
    b ->                                    -- device
    [Atom] ->                               -- targets
    m DragContext
dragBeginForDevice window device targets = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let device' = unsafeManagedPtrCastPtr device
    let targets' = map unsafeManagedPtrGetPtr targets
    targets'' <- packGList targets'
    result <- gdk_drag_begin_for_device window' device' targets''
    result' <- (wrapObject DragContext) result
    touchManagedPtr window
    touchManagedPtr device
    mapM_ touchManagedPtr targets
    g_list_free targets''
    return result'

-- function gdk_drag_drop
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_drop" gdk_drag_drop :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


dragDrop ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    Word32 ->                               -- time_
    m ()
dragDrop context time_ = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    gdk_drag_drop context' time_
    touchManagedPtr context
    return ()

-- function gdk_drag_drop_succeeded
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_drop_succeeded" gdk_drag_drop_succeeded :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    IO CInt


dragDropSucceeded ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    m Bool
dragDropSucceeded context = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    result <- gdk_drag_drop_succeeded context'
    let result' = (/= 0) result
    touchManagedPtr context
    return result'

-- function gdk_drag_find_window_for_screen
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "drag_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "drag_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_find_window_for_screen" gdk_drag_find_window_for_screen :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    Ptr Window ->                           -- drag_window : TInterface "Gdk" "Window"
    Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
    Int32 ->                                -- x_root : TBasicType TInt32
    Int32 ->                                -- y_root : TBasicType TInt32
    Ptr (Ptr Window) ->                     -- dest_window : TInterface "Gdk" "Window"
    Ptr CUInt ->                            -- protocol : TInterface "Gdk" "DragProtocol"
    IO ()


dragFindWindowForScreen ::
    (MonadIO m, DragContextK a, WindowK b, ScreenK c) =>
    a ->                                    -- context
    b ->                                    -- drag_window
    c ->                                    -- screen
    Int32 ->                                -- x_root
    Int32 ->                                -- y_root
    m (Window,DragProtocol)
dragFindWindowForScreen context drag_window screen x_root y_root = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    let drag_window' = unsafeManagedPtrCastPtr drag_window
    let screen' = unsafeManagedPtrCastPtr screen
    dest_window <- allocMem :: IO (Ptr (Ptr Window))
    protocol <- allocMem :: IO (Ptr CUInt)
    gdk_drag_find_window_for_screen context' drag_window' screen' x_root y_root dest_window protocol
    dest_window' <- peek dest_window
    dest_window'' <- (wrapObject Window) dest_window'
    protocol' <- peek protocol
    let protocol'' = (toEnum . fromIntegral) protocol'
    touchManagedPtr context
    touchManagedPtr drag_window
    touchManagedPtr screen
    freeMem dest_window
    freeMem protocol
    return (dest_window'', protocol'')

-- function gdk_drag_get_selection
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Atom"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_get_selection" gdk_drag_get_selection :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    IO (Ptr Atom)


dragGetSelection ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    m Atom
dragGetSelection context = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    result <- gdk_drag_get_selection context'
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- (\x -> Atom <$> newForeignPtr_ x) result
    touchManagedPtr context
    return result'

-- function gdk_drag_motion
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "suggested_action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "possible_actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y_root", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "suggested_action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "possible_actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_motion" gdk_drag_motion :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    Ptr Window ->                           -- dest_window : TInterface "Gdk" "Window"
    CUInt ->                                -- protocol : TInterface "Gdk" "DragProtocol"
    Int32 ->                                -- x_root : TBasicType TInt32
    Int32 ->                                -- y_root : TBasicType TInt32
    CUInt ->                                -- suggested_action : TInterface "Gdk" "DragAction"
    CUInt ->                                -- possible_actions : TInterface "Gdk" "DragAction"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO CInt


dragMotion ::
    (MonadIO m, DragContextK a, WindowK b) =>
    a ->                                    -- context
    b ->                                    -- dest_window
    DragProtocol ->                         -- protocol
    Int32 ->                                -- x_root
    Int32 ->                                -- y_root
    [DragAction] ->                         -- suggested_action
    [DragAction] ->                         -- possible_actions
    Word32 ->                               -- time_
    m Bool
dragMotion context dest_window protocol x_root y_root suggested_action possible_actions time_ = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    let dest_window' = unsafeManagedPtrCastPtr dest_window
    let protocol' = (fromIntegral . fromEnum) protocol
    let suggested_action' = gflagsToWord suggested_action
    let possible_actions' = gflagsToWord possible_actions
    result <- gdk_drag_motion context' dest_window' protocol' x_root y_root suggested_action' possible_actions' time_
    let result' = (/= 0) result
    touchManagedPtr context
    touchManagedPtr dest_window
    return result'

-- function gdk_drag_status
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drag_status" gdk_drag_status :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    CUInt ->                                -- action : TInterface "Gdk" "DragAction"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


dragStatus ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    [DragAction] ->                         -- action
    Word32 ->                               -- time_
    m ()
dragStatus context action time_ = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    let action' = gflagsToWord action
    gdk_drag_status context' action' time_
    touchManagedPtr context
    return ()

-- function gdk_drop_finish
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "success", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "success", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drop_finish" gdk_drop_finish :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    CInt ->                                 -- success : TBasicType TBoolean
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


dropFinish ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    Bool ->                                 -- success
    Word32 ->                               -- time_
    m ()
dropFinish context success time_ = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    let success' = (fromIntegral . fromEnum) success
    gdk_drop_finish context' success' time_
    touchManagedPtr context
    return ()

-- function gdk_drop_reply
-- Args : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accepted", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accepted", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_drop_reply" gdk_drop_reply :: 
    Ptr DragContext ->                      -- context : TInterface "Gdk" "DragContext"
    CInt ->                                 -- accepted : TBasicType TBoolean
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


dropReply ::
    (MonadIO m, DragContextK a) =>
    a ->                                    -- context
    Bool ->                                 -- accepted
    Word32 ->                               -- time_
    m ()
dropReply context accepted time_ = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    let accepted' = (fromIntegral . fromEnum) accepted
    gdk_drop_reply context' accepted' time_
    touchManagedPtr context
    return ()

-- function gdk_error_trap_pop
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_error_trap_pop" gdk_error_trap_pop :: 
    IO Int32


errorTrapPop ::
    (MonadIO m) =>
    m Int32
errorTrapPop  = liftIO $ do
    result <- gdk_error_trap_pop
    return result

-- function gdk_error_trap_pop_ignored
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_error_trap_pop_ignored" gdk_error_trap_pop_ignored :: 
    IO ()


errorTrapPopIgnored ::
    (MonadIO m) =>
    m ()
errorTrapPopIgnored  = liftIO $ do
    gdk_error_trap_pop_ignored
    return ()

-- function gdk_error_trap_push
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_error_trap_push" gdk_error_trap_push :: 
    IO ()


errorTrapPush ::
    (MonadIO m) =>
    m ()
errorTrapPush  = liftIO $ do
    gdk_error_trap_push
    return ()

-- function gdk_event_get
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_get" gdk_event_get :: 
    IO (Ptr Event)


eventGet ::
    (MonadIO m) =>
    m Event
eventGet  = liftIO $ do
    result <- gdk_event_get
    result' <- (wrapBoxed Event) result
    return result'

-- function gdk_event_handler_set
-- Args : [Arg {argName = "func", argType = TInterface "Gdk" "EventFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 1, argDestroy = 2, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "func", argType = TInterface "Gdk" "EventFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 1, argDestroy = 2, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_handler_set" gdk_event_handler_set :: 
    FunPtr EventFuncC ->                    -- func : TInterface "Gdk" "EventFunc"
    Ptr () ->                               -- data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
    IO ()


eventHandlerSet ::
    (MonadIO m) =>
    EventFunc ->                            -- func
    m ()
eventHandlerSet func = liftIO $ do
    func' <- mkEventFunc (eventFuncWrapper Nothing func)
    let data_ = castFunPtrToPtr func'
    let notify = safeFreeFunPtrPtr
    gdk_event_handler_set func' data_ notify
    return ()

-- function gdk_event_peek
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_peek" gdk_event_peek :: 
    IO (Ptr Event)


eventPeek ::
    (MonadIO m) =>
    m Event
eventPeek  = liftIO $ do
    result <- gdk_event_peek
    result' <- (wrapBoxed Event) result
    return result'

-- function gdk_event_request_motions
-- Args : [Arg {argName = "event", argType = TInterface "Gdk" "EventMotion", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "event", argType = TInterface "Gdk" "EventMotion", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_event_request_motions" gdk_event_request_motions :: 
    Ptr EventMotion ->                      -- event : TInterface "Gdk" "EventMotion"
    IO ()


eventRequestMotions ::
    (MonadIO m) =>
    EventMotion ->                          -- event
    m ()
eventRequestMotions event = liftIO $ do
    let event' = unsafeManagedPtrGetPtr event
    gdk_event_request_motions event'
    touchManagedPtr event
    return ()

-- function gdk_events_get_angle
-- Args : [Arg {argName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "angle", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_events_get_angle" gdk_events_get_angle :: 
    Ptr Event ->                            -- event1 : TInterface "Gdk" "Event"
    Ptr Event ->                            -- event2 : TInterface "Gdk" "Event"
    Ptr CDouble ->                          -- angle : TBasicType TDouble
    IO CInt


eventsGetAngle ::
    (MonadIO m) =>
    Event ->                                -- event1
    Event ->                                -- event2
    m (Bool,Double)
eventsGetAngle event1 event2 = liftIO $ do
    let event1' = unsafeManagedPtrGetPtr event1
    let event2' = unsafeManagedPtrGetPtr event2
    angle <- allocMem :: IO (Ptr CDouble)
    result <- gdk_events_get_angle event1' event2' angle
    let result' = (/= 0) result
    angle' <- peek angle
    let angle'' = realToFrac angle'
    touchManagedPtr event1
    touchManagedPtr event2
    freeMem angle
    return (result', angle'')

-- function gdk_events_get_center
-- Args : [Arg {argName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_events_get_center" gdk_events_get_center :: 
    Ptr Event ->                            -- event1 : TInterface "Gdk" "Event"
    Ptr Event ->                            -- event2 : TInterface "Gdk" "Event"
    Ptr CDouble ->                          -- x : TBasicType TDouble
    Ptr CDouble ->                          -- y : TBasicType TDouble
    IO CInt


eventsGetCenter ::
    (MonadIO m) =>
    Event ->                                -- event1
    Event ->                                -- event2
    m (Bool,Double,Double)
eventsGetCenter event1 event2 = liftIO $ do
    let event1' = unsafeManagedPtrGetPtr event1
    let event2' = unsafeManagedPtrGetPtr event2
    x <- allocMem :: IO (Ptr CDouble)
    y <- allocMem :: IO (Ptr CDouble)
    result <- gdk_events_get_center event1' event2' x y
    let result' = (/= 0) result
    x' <- peek x
    let x'' = realToFrac x'
    y' <- peek y
    let y'' = realToFrac y'
    touchManagedPtr event1
    touchManagedPtr event2
    freeMem x
    freeMem y
    return (result', x'', y'')

-- function gdk_events_get_distance
-- Args : [Arg {argName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "distance", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "event1", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event2", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_events_get_distance" gdk_events_get_distance :: 
    Ptr Event ->                            -- event1 : TInterface "Gdk" "Event"
    Ptr Event ->                            -- event2 : TInterface "Gdk" "Event"
    Ptr CDouble ->                          -- distance : TBasicType TDouble
    IO CInt


eventsGetDistance ::
    (MonadIO m) =>
    Event ->                                -- event1
    Event ->                                -- event2
    m (Bool,Double)
eventsGetDistance event1 event2 = liftIO $ do
    let event1' = unsafeManagedPtrGetPtr event1
    let event2' = unsafeManagedPtrGetPtr event2
    distance <- allocMem :: IO (Ptr CDouble)
    result <- gdk_events_get_distance event1' event2' distance
    let result' = (/= 0) result
    distance' <- peek distance
    let distance'' = realToFrac distance'
    touchManagedPtr event1
    touchManagedPtr event2
    freeMem distance
    return (result', distance'')

-- function gdk_events_pending
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_events_pending" gdk_events_pending :: 
    IO CInt


eventsPending ::
    (MonadIO m) =>
    m Bool
eventsPending  = liftIO $ do
    result <- gdk_events_pending
    let result' = (/= 0) result
    return result'

-- function gdk_flush
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_flush" gdk_flush :: 
    IO ()


flush ::
    (MonadIO m) =>
    m ()
flush  = liftIO $ do
    gdk_flush
    return ()

-- function gdk_get_default_root_window
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_get_default_root_window" gdk_get_default_root_window :: 
    IO (Ptr Window)


getDefaultRootWindow ::
    (MonadIO m) =>
    m Window
getDefaultRootWindow  = liftIO $ do
    result <- gdk_get_default_root_window
    result' <- (newObject Window) result
    return result'

-- function gdk_get_display
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_get_display" gdk_get_display :: 
    IO CString

{-# DEPRECATED getDisplay ["(Since version 3.8)","Call gdk_display_get_name (gdk_display_get_default ()))","   instead."]#-}
getDisplay ::
    (MonadIO m) =>
    m T.Text
getDisplay  = liftIO $ do
    result <- gdk_get_display
    result' <- cstringToText result
    freeMem result
    return result'

-- function gdk_get_display_arg_name
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_get_display_arg_name" gdk_get_display_arg_name :: 
    IO CString


getDisplayArgName ::
    (MonadIO m) =>
    m T.Text
getDisplayArgName  = liftIO $ do
    result <- gdk_get_display_arg_name
    result' <- cstringToText result
    return result'

-- function gdk_get_program_class
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_get_program_class" gdk_get_program_class :: 
    IO CString


getProgramClass ::
    (MonadIO m) =>
    m T.Text
getProgramClass  = liftIO $ do
    result <- gdk_get_program_class
    result' <- cstringToText result
    return result'

-- function gdk_get_show_events
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_get_show_events" gdk_get_show_events :: 
    IO CInt


getShowEvents ::
    (MonadIO m) =>
    m Bool
getShowEvents  = liftIO $ do
    result <- gdk_get_show_events
    let result' = (/= 0) result
    return result'

-- function gdk_gl_error_quark
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_gl_error_quark" gdk_gl_error_quark :: 
    IO Word32


glErrorQuark ::
    (MonadIO m) =>
    m Word32
glErrorQuark  = liftIO $ do
    result <- gdk_gl_error_quark
    return result

-- function gdk_init
-- Args : [Arg {argName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : [Arg {argName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_init" gdk_init :: 
    Ptr Int32 ->                            -- argc : TBasicType TInt32
    Ptr (Ptr CString) ->                    -- argv : TCArray False (-1) 0 (TBasicType TUTF8)
    IO ()


init ::
    (MonadIO m) =>
    [T.Text] ->                             -- argv
    m ([T.Text])
init argv = liftIO $ do
    let argc = fromIntegral $ length argv
    argc' <- allocMem :: IO (Ptr Int32)
    poke argc' argc
    argv' <- packUTF8CArray argv
    argv'' <- allocMem :: IO (Ptr (Ptr CString))
    poke argv'' argv'
    gdk_init argc' argv''
    argc'' <- peek argc'
    argv''' <- peek argv''
    argv'''' <- (unpackUTF8CArrayWithLength argc'') argv'''
    (mapCArrayWithLength argc'') freeMem argv'''
    freeMem argv'''
    freeMem argc'
    freeMem argv''
    return argv''''

-- function gdk_init_check
-- Args : [Arg {argName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : [Arg {argName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_init_check" gdk_init_check :: 
    Ptr Int32 ->                            -- argc : TBasicType TInt32
    Ptr (Ptr CString) ->                    -- argv : TCArray False (-1) 0 (TBasicType TUTF8)
    IO CInt


initCheck ::
    (MonadIO m) =>
    [T.Text] ->                             -- argv
    m (Bool,[T.Text])
initCheck argv = liftIO $ do
    let argc = fromIntegral $ length argv
    argc' <- allocMem :: IO (Ptr Int32)
    poke argc' argc
    argv' <- packUTF8CArray argv
    argv'' <- allocMem :: IO (Ptr (Ptr CString))
    poke argv'' argv'
    result <- gdk_init_check argc' argv''
    argc'' <- peek argc'
    let result' = (/= 0) result
    argv''' <- peek argv''
    argv'''' <- (unpackUTF8CArrayWithLength argc'') argv'''
    (mapCArrayWithLength argc'') freeMem argv'''
    freeMem argv'''
    freeMem argc'
    freeMem argv''
    return (result', argv'''')

-- function gdk_keyboard_grab
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "GrabStatus"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyboard_grab" gdk_keyboard_grab :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    CInt ->                                 -- owner_events : TBasicType TBoolean
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO CUInt

{-# DEPRECATED keyboardGrab ["(Since version 3.0)","Use gdk_device_grab() instead."]#-}
keyboardGrab ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    Bool ->                                 -- owner_events
    Word32 ->                               -- time_
    m GrabStatus
keyboardGrab window owner_events time_ = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let owner_events' = (fromIntegral . fromEnum) owner_events
    result <- gdk_keyboard_grab window' owner_events' time_
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr window
    return result'

-- function gdk_keyboard_ungrab
-- Args : [Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyboard_ungrab" gdk_keyboard_ungrab :: 
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()

{-# DEPRECATED keyboardUngrab ["(Since version 3.0)","Use gdk_device_ungrab(), together with gdk_device_grab()","            instead."]#-}
keyboardUngrab ::
    (MonadIO m) =>
    Word32 ->                               -- time_
    m ()
keyboardUngrab time_ = liftIO $ do
    gdk_keyboard_ungrab time_
    return ()

-- function gdk_keyval_convert_case
-- Args : [Arg {argName = "symbol", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "lower", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "upper", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "symbol", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_convert_case" gdk_keyval_convert_case :: 
    Word32 ->                               -- symbol : TBasicType TUInt32
    Ptr Word32 ->                           -- lower : TBasicType TUInt32
    Ptr Word32 ->                           -- upper : TBasicType TUInt32
    IO ()


keyvalConvertCase ::
    (MonadIO m) =>
    Word32 ->                               -- symbol
    m (Word32,Word32)
keyvalConvertCase symbol = liftIO $ do
    lower <- allocMem :: IO (Ptr Word32)
    upper <- allocMem :: IO (Ptr Word32)
    gdk_keyval_convert_case symbol lower upper
    lower' <- peek lower
    upper' <- peek upper
    freeMem lower
    freeMem upper
    return (lower', upper')

-- function gdk_keyval_from_name
-- Args : [Arg {argName = "keyval_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_from_name" gdk_keyval_from_name :: 
    CString ->                              -- keyval_name : TBasicType TUTF8
    IO Word32


keyvalFromName ::
    (MonadIO m) =>
    T.Text ->                               -- keyval_name
    m Word32
keyvalFromName keyval_name = liftIO $ do
    keyval_name' <- textToCString keyval_name
    result <- gdk_keyval_from_name keyval_name'
    freeMem keyval_name'
    return result

-- function gdk_keyval_is_lower
-- Args : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_is_lower" gdk_keyval_is_lower :: 
    Word32 ->                               -- keyval : TBasicType TUInt32
    IO CInt


keyvalIsLower ::
    (MonadIO m) =>
    Word32 ->                               -- keyval
    m Bool
keyvalIsLower keyval = liftIO $ do
    result <- gdk_keyval_is_lower keyval
    let result' = (/= 0) result
    return result'

-- function gdk_keyval_is_upper
-- Args : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_is_upper" gdk_keyval_is_upper :: 
    Word32 ->                               -- keyval : TBasicType TUInt32
    IO CInt


keyvalIsUpper ::
    (MonadIO m) =>
    Word32 ->                               -- keyval
    m Bool
keyvalIsUpper keyval = liftIO $ do
    result <- gdk_keyval_is_upper keyval
    let result' = (/= 0) result
    return result'

-- function gdk_keyval_name
-- Args : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_name" gdk_keyval_name :: 
    Word32 ->                               -- keyval : TBasicType TUInt32
    IO CString


keyvalName ::
    (MonadIO m) =>
    Word32 ->                               -- keyval
    m T.Text
keyvalName keyval = liftIO $ do
    result <- gdk_keyval_name keyval
    result' <- cstringToText result
    return result'

-- function gdk_keyval_to_lower
-- Args : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_to_lower" gdk_keyval_to_lower :: 
    Word32 ->                               -- keyval : TBasicType TUInt32
    IO Word32


keyvalToLower ::
    (MonadIO m) =>
    Word32 ->                               -- keyval
    m Word32
keyvalToLower keyval = liftIO $ do
    result <- gdk_keyval_to_lower keyval
    return result

-- function gdk_keyval_to_unicode
-- Args : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_to_unicode" gdk_keyval_to_unicode :: 
    Word32 ->                               -- keyval : TBasicType TUInt32
    IO Word32


keyvalToUnicode ::
    (MonadIO m) =>
    Word32 ->                               -- keyval
    m Word32
keyvalToUnicode keyval = liftIO $ do
    result <- gdk_keyval_to_unicode keyval
    return result

-- function gdk_keyval_to_upper
-- Args : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_keyval_to_upper" gdk_keyval_to_upper :: 
    Word32 ->                               -- keyval : TBasicType TUInt32
    IO Word32


keyvalToUpper ::
    (MonadIO m) =>
    Word32 ->                               -- keyval
    m Word32
keyvalToUpper keyval = liftIO $ do
    result <- gdk_keyval_to_upper keyval
    return result

-- function gdk_list_visuals
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TGList (TInterface "Gdk" "Visual")
-- throws : False
-- Skip return : False

foreign import ccall "gdk_list_visuals" gdk_list_visuals :: 
    IO (Ptr (GList (Ptr Visual)))


listVisuals ::
    (MonadIO m) =>
    m [Visual]
listVisuals  = liftIO $ do
    result <- gdk_list_visuals
    result' <- unpackGList result
    result'' <- mapM (newObject Visual) result'
    g_list_free result
    return result''

-- function gdk_notify_startup_complete
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_notify_startup_complete" gdk_notify_startup_complete :: 
    IO ()


notifyStartupComplete ::
    (MonadIO m) =>
    m ()
notifyStartupComplete  = liftIO $ do
    gdk_notify_startup_complete
    return ()

-- function gdk_notify_startup_complete_with_id
-- Args : [Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_notify_startup_complete_with_id" gdk_notify_startup_complete_with_id :: 
    CString ->                              -- startup_id : TBasicType TUTF8
    IO ()


notifyStartupCompleteWithId ::
    (MonadIO m) =>
    T.Text ->                               -- startup_id
    m ()
notifyStartupCompleteWithId startup_id = liftIO $ do
    startup_id' <- textToCString startup_id
    gdk_notify_startup_complete_with_id startup_id'
    freeMem startup_id'
    return ()

-- function gdk_offscreen_window_get_embedder
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_offscreen_window_get_embedder" gdk_offscreen_window_get_embedder :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    IO (Ptr Window)


offscreenWindowGetEmbedder ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    m Window
offscreenWindowGetEmbedder window = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    result <- gdk_offscreen_window_get_embedder window'
    result' <- (newObject Window) result
    touchManagedPtr window
    return result'

-- function gdk_offscreen_window_get_surface
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Surface"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_offscreen_window_get_surface" gdk_offscreen_window_get_surface :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    IO (Ptr Cairo.Surface)


offscreenWindowGetSurface ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    m Cairo.Surface
offscreenWindowGetSurface window = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    result <- gdk_offscreen_window_get_surface window'
    result' <- (newBoxed Cairo.Surface) result
    touchManagedPtr window
    return result'

-- function gdk_offscreen_window_set_embedder
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "embedder", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "embedder", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_offscreen_window_set_embedder" gdk_offscreen_window_set_embedder :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Ptr Window ->                           -- embedder : TInterface "Gdk" "Window"
    IO ()


offscreenWindowSetEmbedder ::
    (MonadIO m, WindowK a, WindowK b) =>
    a ->                                    -- window
    b ->                                    -- embedder
    m ()
offscreenWindowSetEmbedder window embedder = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let embedder' = unsafeManagedPtrCastPtr embedder
    gdk_offscreen_window_set_embedder window' embedder'
    touchManagedPtr window
    touchManagedPtr embedder
    return ()

-- function gdk_pango_context_get
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Pango" "Context"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pango_context_get" gdk_pango_context_get :: 
    IO (Ptr Pango.Context)


pangoContextGet ::
    (MonadIO m) =>
    m Pango.Context
pangoContextGet  = liftIO $ do
    result <- gdk_pango_context_get
    result' <- (wrapObject Pango.Context) result
    return result'

-- function gdk_pango_context_get_for_screen
-- Args : [Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Context"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pango_context_get_for_screen" gdk_pango_context_get_for_screen :: 
    Ptr Screen ->                           -- screen : TInterface "Gdk" "Screen"
    IO (Ptr Pango.Context)


pangoContextGetForScreen ::
    (MonadIO m, ScreenK a) =>
    a ->                                    -- screen
    m Pango.Context
pangoContextGetForScreen screen = liftIO $ do
    let screen' = unsafeManagedPtrCastPtr screen
    result <- gdk_pango_context_get_for_screen screen'
    result' <- (wrapObject Pango.Context) result
    touchManagedPtr screen
    return result'

-- function gdk_parse_args
-- Args : [Arg {argName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "argc", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- hInArgs : [Arg {argName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_parse_args" gdk_parse_args :: 
    Ptr Int32 ->                            -- argc : TBasicType TInt32
    Ptr (Ptr CString) ->                    -- argv : TCArray False (-1) 0 (TBasicType TUTF8)
    IO ()


parseArgs ::
    (MonadIO m) =>
    [T.Text] ->                             -- argv
    m ([T.Text])
parseArgs argv = liftIO $ do
    let argc = fromIntegral $ length argv
    argc' <- allocMem :: IO (Ptr Int32)
    poke argc' argc
    argv' <- packUTF8CArray argv
    argv'' <- allocMem :: IO (Ptr (Ptr CString))
    poke argv'' argv'
    gdk_parse_args argc' argv''
    argc'' <- peek argc'
    argv''' <- peek argv''
    argv'''' <- (unpackUTF8CArrayWithLength argc'') argv'''
    (mapCArrayWithLength argc'') freeMem argv'''
    freeMem argv'''
    freeMem argc'
    freeMem argv''
    return argv''''

-- function gdk_pixbuf_get_from_surface
-- Args : [Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pixbuf_get_from_surface" gdk_pixbuf_get_from_surface :: 
    Ptr Cairo.Surface ->                    -- surface : TInterface "cairo" "Surface"
    Int32 ->                                -- src_x : TBasicType TInt32
    Int32 ->                                -- src_y : TBasicType TInt32
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO (Ptr GdkPixbuf.Pixbuf)


pixbufGetFromSurface ::
    (MonadIO m) =>
    Cairo.Surface ->                        -- surface
    Int32 ->                                -- src_x
    Int32 ->                                -- src_y
    Int32 ->                                -- width
    Int32 ->                                -- height
    m GdkPixbuf.Pixbuf
pixbufGetFromSurface surface src_x src_y width height = liftIO $ do
    let surface' = unsafeManagedPtrGetPtr surface
    result <- gdk_pixbuf_get_from_surface surface' src_x src_y width height
    result' <- (wrapObject GdkPixbuf.Pixbuf) result
    touchManagedPtr surface
    return result'

-- function gdk_pixbuf_get_from_window
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pixbuf_get_from_window" gdk_pixbuf_get_from_window :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Int32 ->                                -- src_x : TBasicType TInt32
    Int32 ->                                -- src_y : TBasicType TInt32
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO (Ptr GdkPixbuf.Pixbuf)


pixbufGetFromWindow ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    Int32 ->                                -- src_x
    Int32 ->                                -- src_y
    Int32 ->                                -- width
    Int32 ->                                -- height
    m GdkPixbuf.Pixbuf
pixbufGetFromWindow window src_x src_y width height = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    result <- gdk_pixbuf_get_from_window window' src_x src_y width height
    result' <- (wrapObject GdkPixbuf.Pixbuf) result
    touchManagedPtr window
    return result'

-- function gdk_pointer_grab
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "confine_to", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event_mask", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "confine_to", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "GrabStatus"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pointer_grab" gdk_pointer_grab :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    CInt ->                                 -- owner_events : TBasicType TBoolean
    CUInt ->                                -- event_mask : TInterface "Gdk" "EventMask"
    Ptr Window ->                           -- confine_to : TInterface "Gdk" "Window"
    Ptr Cursor ->                           -- cursor : TInterface "Gdk" "Cursor"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO CUInt

{-# DEPRECATED pointerGrab ["(Since version 3.0)","Use gdk_device_grab() instead."]#-}
pointerGrab ::
    (MonadIO m, WindowK a, WindowK b, CursorK c) =>
    a ->                                    -- window
    Bool ->                                 -- owner_events
    [EventMask] ->                          -- event_mask
    Maybe (b) ->                            -- confine_to
    Maybe (c) ->                            -- cursor
    Word32 ->                               -- time_
    m GrabStatus
pointerGrab window owner_events event_mask confine_to cursor time_ = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let owner_events' = (fromIntegral . fromEnum) owner_events
    let event_mask' = gflagsToWord event_mask
    maybeConfine_to <- case confine_to of
        Nothing -> return nullPtr
        Just jConfine_to -> do
            let jConfine_to' = unsafeManagedPtrCastPtr jConfine_to
            return jConfine_to'
    maybeCursor <- case cursor of
        Nothing -> return nullPtr
        Just jCursor -> do
            let jCursor' = unsafeManagedPtrCastPtr jCursor
            return jCursor'
    result <- gdk_pointer_grab window' owner_events' event_mask' maybeConfine_to maybeCursor time_
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr window
    whenJust confine_to touchManagedPtr
    whenJust cursor touchManagedPtr
    return result'

-- function gdk_pointer_is_grabbed
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pointer_is_grabbed" gdk_pointer_is_grabbed :: 
    IO CInt

{-# DEPRECATED pointerIsGrabbed ["(Since version 3.0)","Use gdk_display_device_is_grabbed() instead."]#-}
pointerIsGrabbed ::
    (MonadIO m) =>
    m Bool
pointerIsGrabbed  = liftIO $ do
    result <- gdk_pointer_is_grabbed
    let result' = (/= 0) result
    return result'

-- function gdk_pointer_ungrab
-- Args : [Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pointer_ungrab" gdk_pointer_ungrab :: 
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()

{-# DEPRECATED pointerUngrab ["(Since version 3.0)","Use gdk_device_ungrab(), together with gdk_device_grab()","            instead."]#-}
pointerUngrab ::
    (MonadIO m) =>
    Word32 ->                               -- time_
    m ()
pointerUngrab time_ = liftIO $ do
    gdk_pointer_ungrab time_
    return ()

-- function gdk_pre_parse_libgtk_only
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_pre_parse_libgtk_only" gdk_pre_parse_libgtk_only :: 
    IO ()

{-# DEPRECATED preParseLibgtkOnly ["(Since version 3.16)","This symbol was never meant to be used outside","  of GTK+"]#-}
preParseLibgtkOnly ::
    (MonadIO m) =>
    m ()
preParseLibgtkOnly  = liftIO $ do
    gdk_pre_parse_libgtk_only
    return ()

-- function gdk_property_delete
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_property_delete" gdk_property_delete :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- property : TInterface "Gdk" "Atom"
    IO ()


propertyDelete ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    Atom ->                                 -- property
    m ()
propertyDelete window property = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let property' = unsafeManagedPtrGetPtr property
    gdk_property_delete window' property'
    touchManagedPtr window
    touchManagedPtr property
    return ()

-- function gdk_property_get
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pdelete", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actual_property_type", argType = TInterface "Gdk" "Atom", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actual_format", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "actual_length", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "data", argType = TCArray False (-1) 8 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "actual_length", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pdelete", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_property_get" gdk_property_get :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- property : TInterface "Gdk" "Atom"
    Ptr Atom ->                             -- type : TInterface "Gdk" "Atom"
    Word64 ->                               -- offset : TBasicType TUInt64
    Word64 ->                               -- length : TBasicType TUInt64
    Int32 ->                                -- pdelete : TBasicType TInt32
    Ptr (Ptr Atom) ->                       -- actual_property_type : TInterface "Gdk" "Atom"
    Ptr Int32 ->                            -- actual_format : TBasicType TInt32
    Ptr Int32 ->                            -- actual_length : TBasicType TInt32
    Ptr (Ptr Word8) ->                      -- data : TCArray False (-1) 8 (TBasicType TUInt8)
    IO CInt


propertyGet ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    Atom ->                                 -- property
    Atom ->                                 -- type
    Word64 ->                               -- offset
    Word64 ->                               -- length
    Int32 ->                                -- pdelete
    m (Bool,Atom,Int32,ByteString)
propertyGet window property type_ offset length_ pdelete = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let property' = unsafeManagedPtrGetPtr property
    let type_' = unsafeManagedPtrGetPtr type_
    actual_property_type <- allocMem :: IO (Ptr (Ptr Atom))
    actual_format <- allocMem :: IO (Ptr Int32)
    actual_length <- allocMem :: IO (Ptr Int32)
    data_ <- allocMem :: IO (Ptr (Ptr Word8))
    result <- gdk_property_get window' property' type_' offset length_ pdelete actual_property_type actual_format actual_length data_
    actual_length' <- peek actual_length
    let result' = (/= 0) result
    actual_property_type' <- peek actual_property_type
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    actual_property_type'' <- (\x -> Atom <$> newForeignPtr_ x) actual_property_type'
    actual_format' <- peek actual_format
    data_' <- peek data_
    data_'' <- (unpackByteStringWithLength actual_length') data_'
    freeMem data_'
    touchManagedPtr window
    touchManagedPtr property
    touchManagedPtr type_
    freeMem actual_property_type
    freeMem actual_format
    freeMem actual_length
    freeMem data_
    return (result', actual_property_type'', actual_format', data_'')

-- function gdk_query_depths
-- Args : [Arg {argName = "depths", argType = TCArray False (-1) 1 (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_query_depths" gdk_query_depths :: 
    Ptr (Ptr Int32) ->                      -- depths : TCArray False (-1) 1 (TBasicType TInt32)
    Ptr Int32 ->                            -- count : TBasicType TInt32
    IO ()


queryDepths ::
    (MonadIO m) =>
    m ([Int32])
queryDepths  = liftIO $ do
    depths <- allocMem :: IO (Ptr (Ptr Int32))
    count <- allocMem :: IO (Ptr Int32)
    gdk_query_depths depths count
    count' <- peek count
    depths' <- peek depths
    depths'' <- (unpackStorableArrayWithLength count') depths'
    freeMem depths
    freeMem count
    return depths''

-- function gdk_query_visual_types
-- Args : [Arg {argName = "visual_types", argType = TCArray False (-1) 1 (TInterface "Gdk" "VisualType"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "count", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_query_visual_types" gdk_query_visual_types :: 
    Ptr (Ptr CUInt) ->                      -- visual_types : TCArray False (-1) 1 (TInterface "Gdk" "VisualType")
    Ptr Int32 ->                            -- count : TBasicType TInt32
    IO ()


queryVisualTypes ::
    (MonadIO m) =>
    m ([VisualType])
queryVisualTypes  = liftIO $ do
    visual_types <- allocMem :: IO (Ptr (Ptr CUInt))
    count <- allocMem :: IO (Ptr Int32)
    gdk_query_visual_types visual_types count
    count' <- peek count
    visual_types' <- peek visual_types
    visual_types'' <- (unpackStorableArrayWithLength count') visual_types'
    let visual_types''' = map (toEnum . fromIntegral) visual_types''
    freeMem visual_types
    freeMem count
    return visual_types'''

-- function gdk_rectangle_get_type
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TGType
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rectangle_get_type" gdk_rectangle_get_type :: 
    IO CGType


rectangleGetType ::
    (MonadIO m) =>
    m GType
rectangleGetType  = liftIO $ do
    result <- gdk_rectangle_get_type
    let result' = GType result
    return result'

-- function gdk_rectangle_intersect
-- Args : [Arg {argName = "src1", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src2", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "src1", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src2", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rectangle_intersect" gdk_rectangle_intersect :: 
    Ptr Cairo.RectangleInt ->               -- src1 : TInterface "cairo" "RectangleInt"
    Ptr Cairo.RectangleInt ->               -- src2 : TInterface "cairo" "RectangleInt"
    Ptr Cairo.RectangleInt ->               -- dest : TInterface "cairo" "RectangleInt"
    IO CInt


rectangleIntersect ::
    (MonadIO m) =>
    Cairo.RectangleInt ->                   -- src1
    Cairo.RectangleInt ->                   -- src2
    m (Bool,Cairo.RectangleInt)
rectangleIntersect src1 src2 = liftIO $ do
    let src1' = unsafeManagedPtrGetPtr src1
    let src2' = unsafeManagedPtrGetPtr src2
    dest <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    result <- gdk_rectangle_intersect src1' src2' dest
    let result' = (/= 0) result
    dest' <- (wrapBoxed Cairo.RectangleInt) dest
    touchManagedPtr src1
    touchManagedPtr src2
    return (result', dest')

-- function gdk_rectangle_union
-- Args : [Arg {argName = "src1", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src2", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "src1", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src2", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_rectangle_union" gdk_rectangle_union :: 
    Ptr Cairo.RectangleInt ->               -- src1 : TInterface "cairo" "RectangleInt"
    Ptr Cairo.RectangleInt ->               -- src2 : TInterface "cairo" "RectangleInt"
    Ptr Cairo.RectangleInt ->               -- dest : TInterface "cairo" "RectangleInt"
    IO ()


rectangleUnion ::
    (MonadIO m) =>
    Cairo.RectangleInt ->                   -- src1
    Cairo.RectangleInt ->                   -- src2
    m (Cairo.RectangleInt)
rectangleUnion src1 src2 = liftIO $ do
    let src1' = unsafeManagedPtrGetPtr src1
    let src2' = unsafeManagedPtrGetPtr src2
    dest <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    gdk_rectangle_union src1' src2' dest
    dest' <- (wrapBoxed Cairo.RectangleInt) dest
    touchManagedPtr src1
    touchManagedPtr src2
    return dest'

-- function gdk_selection_convert
-- Args : [Arg {argName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_convert" gdk_selection_convert :: 
    Ptr Window ->                           -- requestor : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    Ptr Atom ->                             -- target : TInterface "Gdk" "Atom"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


selectionConvert ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- requestor
    Atom ->                                 -- selection
    Atom ->                                 -- target
    Word32 ->                               -- time_
    m ()
selectionConvert requestor selection target time_ = liftIO $ do
    let requestor' = unsafeManagedPtrCastPtr requestor
    let selection' = unsafeManagedPtrGetPtr selection
    let target' = unsafeManagedPtrGetPtr target
    gdk_selection_convert requestor' selection' target' time_
    touchManagedPtr requestor
    touchManagedPtr selection
    touchManagedPtr target
    return ()

-- function gdk_selection_owner_get
-- Args : [Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_owner_get" gdk_selection_owner_get :: 
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    IO (Ptr Window)


selectionOwnerGet ::
    (MonadIO m) =>
    Atom ->                                 -- selection
    m Window
selectionOwnerGet selection = liftIO $ do
    let selection' = unsafeManagedPtrGetPtr selection
    result <- gdk_selection_owner_get selection'
    result' <- (newObject Window) result
    touchManagedPtr selection
    return result'

-- function gdk_selection_owner_get_for_display
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_owner_get_for_display" gdk_selection_owner_get_for_display :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    IO (Ptr Window)


selectionOwnerGetForDisplay ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- display
    Atom ->                                 -- selection
    m Window
selectionOwnerGetForDisplay display selection = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    let selection' = unsafeManagedPtrGetPtr selection
    result <- gdk_selection_owner_get_for_display display' selection'
    result' <- (newObject Window) result
    touchManagedPtr display
    touchManagedPtr selection
    return result'

-- function gdk_selection_owner_set
-- Args : [Arg {argName = "owner", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "send_event", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "owner", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "send_event", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_owner_set" gdk_selection_owner_set :: 
    Ptr Window ->                           -- owner : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    Word32 ->                               -- time_ : TBasicType TUInt32
    CInt ->                                 -- send_event : TBasicType TBoolean
    IO CInt


selectionOwnerSet ::
    (MonadIO m, WindowK a) =>
    Maybe (a) ->                            -- owner
    Atom ->                                 -- selection
    Word32 ->                               -- time_
    Bool ->                                 -- send_event
    m Bool
selectionOwnerSet owner selection time_ send_event = liftIO $ do
    maybeOwner <- case owner of
        Nothing -> return nullPtr
        Just jOwner -> do
            let jOwner' = unsafeManagedPtrCastPtr jOwner
            return jOwner'
    let selection' = unsafeManagedPtrGetPtr selection
    let send_event' = (fromIntegral . fromEnum) send_event
    result <- gdk_selection_owner_set maybeOwner selection' time_ send_event'
    let result' = (/= 0) result
    whenJust owner touchManagedPtr
    touchManagedPtr selection
    return result'

-- function gdk_selection_owner_set_for_display
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "send_event", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "owner", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "send_event", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_owner_set_for_display" gdk_selection_owner_set_for_display :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr Window ->                           -- owner : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    Word32 ->                               -- time_ : TBasicType TUInt32
    CInt ->                                 -- send_event : TBasicType TBoolean
    IO CInt


selectionOwnerSetForDisplay ::
    (MonadIO m, DisplayK a, WindowK b) =>
    a ->                                    -- display
    Maybe (b) ->                            -- owner
    Atom ->                                 -- selection
    Word32 ->                               -- time_
    Bool ->                                 -- send_event
    m Bool
selectionOwnerSetForDisplay display owner selection time_ send_event = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    maybeOwner <- case owner of
        Nothing -> return nullPtr
        Just jOwner -> do
            let jOwner' = unsafeManagedPtrCastPtr jOwner
            return jOwner'
    let selection' = unsafeManagedPtrGetPtr selection
    let send_event' = (fromIntegral . fromEnum) send_event
    result <- gdk_selection_owner_set_for_display display' maybeOwner selection' time_ send_event'
    let result' = (/= 0) result
    touchManagedPtr display
    whenJust owner touchManagedPtr
    touchManagedPtr selection
    return result'

-- function gdk_selection_send_notify
-- Args : [Arg {argName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_send_notify" gdk_selection_send_notify :: 
    Ptr Window ->                           -- requestor : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    Ptr Atom ->                             -- target : TInterface "Gdk" "Atom"
    Ptr Atom ->                             -- property : TInterface "Gdk" "Atom"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


selectionSendNotify ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- requestor
    Atom ->                                 -- selection
    Atom ->                                 -- target
    Atom ->                                 -- property
    Word32 ->                               -- time_
    m ()
selectionSendNotify requestor selection target property time_ = liftIO $ do
    let requestor' = unsafeManagedPtrCastPtr requestor
    let selection' = unsafeManagedPtrGetPtr selection
    let target' = unsafeManagedPtrGetPtr target
    let property' = unsafeManagedPtrGetPtr property
    gdk_selection_send_notify requestor' selection' target' property' time_
    touchManagedPtr requestor
    touchManagedPtr selection
    touchManagedPtr target
    touchManagedPtr property
    return ()

-- function gdk_selection_send_notify_for_display
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "requestor", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_selection_send_notify_for_display" gdk_selection_send_notify_for_display :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr Window ->                           -- requestor : TInterface "Gdk" "Window"
    Ptr Atom ->                             -- selection : TInterface "Gdk" "Atom"
    Ptr Atom ->                             -- target : TInterface "Gdk" "Atom"
    Ptr Atom ->                             -- property : TInterface "Gdk" "Atom"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


selectionSendNotifyForDisplay ::
    (MonadIO m, DisplayK a, WindowK b) =>
    a ->                                    -- display
    b ->                                    -- requestor
    Atom ->                                 -- selection
    Atom ->                                 -- target
    Atom ->                                 -- property
    Word32 ->                               -- time_
    m ()
selectionSendNotifyForDisplay display requestor selection target property time_ = liftIO $ do
    let display' = unsafeManagedPtrCastPtr display
    let requestor' = unsafeManagedPtrCastPtr requestor
    let selection' = unsafeManagedPtrGetPtr selection
    let target' = unsafeManagedPtrGetPtr target
    let property' = unsafeManagedPtrGetPtr property
    gdk_selection_send_notify_for_display display' requestor' selection' target' property' time_
    touchManagedPtr display
    touchManagedPtr requestor
    touchManagedPtr selection
    touchManagedPtr target
    touchManagedPtr property
    return ()

-- function gdk_set_allowed_backends
-- Args : [Arg {argName = "backends", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "backends", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_set_allowed_backends" gdk_set_allowed_backends :: 
    CString ->                              -- backends : TBasicType TUTF8
    IO ()


setAllowedBackends ::
    (MonadIO m) =>
    T.Text ->                               -- backends
    m ()
setAllowedBackends backends = liftIO $ do
    backends' <- textToCString backends
    gdk_set_allowed_backends backends'
    freeMem backends'
    return ()

-- function gdk_set_double_click_time
-- Args : [Arg {argName = "msec", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "msec", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_set_double_click_time" gdk_set_double_click_time :: 
    Word32 ->                               -- msec : TBasicType TUInt32
    IO ()


setDoubleClickTime ::
    (MonadIO m) =>
    Word32 ->                               -- msec
    m ()
setDoubleClickTime msec = liftIO $ do
    gdk_set_double_click_time msec
    return ()

-- function gdk_set_program_class
-- Args : [Arg {argName = "program_class", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "program_class", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_set_program_class" gdk_set_program_class :: 
    CString ->                              -- program_class : TBasicType TUTF8
    IO ()


setProgramClass ::
    (MonadIO m) =>
    T.Text ->                               -- program_class
    m ()
setProgramClass program_class = liftIO $ do
    program_class' <- textToCString program_class
    gdk_set_program_class program_class'
    freeMem program_class'
    return ()

-- function gdk_set_show_events
-- Args : [Arg {argName = "show_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "show_events", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_set_show_events" gdk_set_show_events :: 
    CInt ->                                 -- show_events : TBasicType TBoolean
    IO ()


setShowEvents ::
    (MonadIO m) =>
    Bool ->                                 -- show_events
    m ()
setShowEvents show_events = liftIO $ do
    let show_events' = (fromIntegral . fromEnum) show_events
    gdk_set_show_events show_events'
    return ()

-- function gdk_setting_get
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_setting_get" gdk_setting_get :: 
    CString ->                              -- name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO CInt


settingGet ::
    (MonadIO m) =>
    T.Text ->                               -- name
    GValue ->                               -- value
    m Bool
settingGet name value = liftIO $ do
    name' <- textToCString name
    let value' = unsafeManagedPtrGetPtr value
    result <- gdk_setting_get name' value'
    let result' = (/= 0) result
    touchManagedPtr value
    freeMem name'
    return result'

-- function gdk_synthesize_window_state
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "unset_flags", argType = TInterface "Gdk" "WindowState", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "set_flags", argType = TInterface "Gdk" "WindowState", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "unset_flags", argType = TInterface "Gdk" "WindowState", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "set_flags", argType = TInterface "Gdk" "WindowState", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_synthesize_window_state" gdk_synthesize_window_state :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    CUInt ->                                -- unset_flags : TInterface "Gdk" "WindowState"
    CUInt ->                                -- set_flags : TInterface "Gdk" "WindowState"
    IO ()


synthesizeWindowState ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    [WindowState] ->                        -- unset_flags
    [WindowState] ->                        -- set_flags
    m ()
synthesizeWindowState window unset_flags set_flags_ = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let unset_flags' = gflagsToWord unset_flags
    let set_flags_' = gflagsToWord set_flags_
    gdk_synthesize_window_state window' unset_flags' set_flags_'
    touchManagedPtr window
    return ()

-- function gdk_test_render_sync
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_test_render_sync" gdk_test_render_sync :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    IO ()


testRenderSync ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    m ()
testRenderSync window = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    gdk_test_render_sync window'
    touchManagedPtr window
    return ()

-- function gdk_test_simulate_button
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_test_simulate_button" gdk_test_simulate_button :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    Word32 ->                               -- button : TBasicType TUInt32
    CUInt ->                                -- modifiers : TInterface "Gdk" "ModifierType"
    CUInt ->                                -- button_pressrelease : TInterface "Gdk" "EventType"
    IO CInt


testSimulateButton ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    Int32 ->                                -- x
    Int32 ->                                -- y
    Word32 ->                               -- button
    [ModifierType] ->                       -- modifiers
    EventType ->                            -- button_pressrelease
    m Bool
testSimulateButton window x y button modifiers button_pressrelease = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let modifiers' = gflagsToWord modifiers
    let button_pressrelease' = (fromIntegral . fromEnum) button_pressrelease
    result <- gdk_test_simulate_button window' x y button modifiers' button_pressrelease'
    let result' = (/= 0) result
    touchManagedPtr window
    return result'

-- function gdk_test_simulate_key
-- Args : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key_pressrelease", argType = TInterface "Gdk" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gdk_test_simulate_key" gdk_test_simulate_key :: 
    Ptr Window ->                           -- window : TInterface "Gdk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    Word32 ->                               -- keyval : TBasicType TUInt32
    CUInt ->                                -- modifiers : TInterface "Gdk" "ModifierType"
    CUInt ->                                -- key_pressrelease : TInterface "Gdk" "EventType"
    IO CInt


testSimulateKey ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- window
    Int32 ->                                -- x
    Int32 ->                                -- y
    Word32 ->                               -- keyval
    [ModifierType] ->                       -- modifiers
    EventType ->                            -- key_pressrelease
    m Bool
testSimulateKey window x y keyval modifiers key_pressrelease = liftIO $ do
    let window' = unsafeManagedPtrCastPtr window
    let modifiers' = gflagsToWord modifiers
    let key_pressrelease' = (fromIntegral . fromEnum) key_pressrelease
    result <- gdk_test_simulate_key window' x y keyval modifiers' key_pressrelease'
    let result' = (/= 0) result
    touchManagedPtr window
    return result'

-- function gdk_text_property_to_utf8_list_for_display
-- Args : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "encoding", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "format", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "list", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : [Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- hInArgs : [Arg {argName = "display", argType = TInterface "Gdk" "Display", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "encoding", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "format", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_text_property_to_utf8_list_for_display" gdk_text_property_to_utf8_list_for_display :: 
    Ptr Display ->                          -- display : TInterface "Gdk" "Display"
    Ptr Atom ->                             -- encoding : TInterface "Gdk" "Atom"
    Int32 ->                                -- format : TBasicType TInt32
    Ptr Word8 ->                            -- text : TCArray False (-1) 4 (TBasicType TUInt8)
    Int32 ->                                -- length : TBasicType TInt32
    Ptr (Ptr CString) ->                    -- list : TCArray True (-1) (-1) (TBasicType TUTF8)
    IO Int32


textPropertyToUtf8ListForDisplay ::
    (MonadIO m, DisplayK a) =>
    a ->                                    -- display
    Atom ->                                 -- encoding
    Int32 ->                                -- format
    ByteString ->                           -- text
    m (Int32,[T.Text])
textPropertyToUtf8ListForDisplay display encoding format text = liftIO $ do
    let length_ = fromIntegral $ B.length text
    let display' = unsafeManagedPtrCastPtr display
    let encoding' = unsafeManagedPtrGetPtr encoding
    text' <- packByteString text
    list <- allocMem :: IO (Ptr (Ptr CString))
    result <- gdk_text_property_to_utf8_list_for_display display' encoding' format text' length_ list
    list' <- peek list
    list'' <- unpackZeroTerminatedUTF8CArray list'
    mapZeroTerminatedCArray freeMem list'
    freeMem list'
    touchManagedPtr display
    touchManagedPtr encoding
    freeMem text'
    freeMem list
    return (result, list'')

-- function gdk_threads_add_idle_full
-- Args : [Arg {argName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_threads_add_idle_full" gdk_threads_add_idle_full :: 
    Int32 ->                                -- priority : TBasicType TInt32
    FunPtr GLib.SourceFuncC ->              -- function : TInterface "GLib" "SourceFunc"
    Ptr () ->                               -- data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
    IO Word32


threadsAddIdle ::
    (MonadIO m) =>
    Int32 ->                                -- priority
    GLib.SourceFunc ->                      -- function
    m Word32
threadsAddIdle priority function = liftIO $ do
    function' <- GLib.mkSourceFunc (GLib.sourceFuncWrapper Nothing function)
    let data_ = castFunPtrToPtr function'
    let notify = safeFreeFunPtrPtr
    result <- gdk_threads_add_idle_full priority function' data_ notify
    return result

-- function gdk_threads_add_timeout_full
-- Args : [Arg {argName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "interval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "interval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_threads_add_timeout_full" gdk_threads_add_timeout_full :: 
    Int32 ->                                -- priority : TBasicType TInt32
    Word32 ->                               -- interval : TBasicType TUInt32
    FunPtr GLib.SourceFuncC ->              -- function : TInterface "GLib" "SourceFunc"
    Ptr () ->                               -- data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
    IO Word32


threadsAddTimeout ::
    (MonadIO m) =>
    Int32 ->                                -- priority
    Word32 ->                               -- interval
    GLib.SourceFunc ->                      -- function
    m Word32
threadsAddTimeout priority interval function = liftIO $ do
    function' <- GLib.mkSourceFunc (GLib.sourceFuncWrapper Nothing function)
    let data_ = castFunPtrToPtr function'
    let notify = safeFreeFunPtrPtr
    result <- gdk_threads_add_timeout_full priority interval function' data_ notify
    return result

-- function gdk_threads_add_timeout_seconds_full
-- Args : [Arg {argName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "interval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "interval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_threads_add_timeout_seconds_full" gdk_threads_add_timeout_seconds_full :: 
    Int32 ->                                -- priority : TBasicType TInt32
    Word32 ->                               -- interval : TBasicType TUInt32
    FunPtr GLib.SourceFuncC ->              -- function : TInterface "GLib" "SourceFunc"
    Ptr () ->                               -- data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
    IO Word32


threadsAddTimeoutSeconds ::
    (MonadIO m) =>
    Int32 ->                                -- priority
    Word32 ->                               -- interval
    GLib.SourceFunc ->                      -- function
    m Word32
threadsAddTimeoutSeconds priority interval function = liftIO $ do
    function' <- GLib.mkSourceFunc (GLib.sourceFuncWrapper Nothing function)
    let data_ = castFunPtrToPtr function'
    let notify = safeFreeFunPtrPtr
    result <- gdk_threads_add_timeout_seconds_full priority interval function' data_ notify
    return result

-- function gdk_threads_enter
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_threads_enter" gdk_threads_enter :: 
    IO ()

{-# DEPRECATED threadsEnter ["(Since version 3.6)","All GDK and GTK+ calls should be made from the main","    thread"]#-}
threadsEnter ::
    (MonadIO m) =>
    m ()
threadsEnter  = liftIO $ do
    gdk_threads_enter
    return ()

-- function gdk_threads_init
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_threads_init" gdk_threads_init :: 
    IO ()

{-# DEPRECATED threadsInit ["(Since version 3.6)","All GDK and GTK+ calls should be made from the main","    thread"]#-}
threadsInit ::
    (MonadIO m) =>
    m ()
threadsInit  = liftIO $ do
    gdk_threads_init
    return ()

-- function gdk_threads_leave
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gdk_threads_leave" gdk_threads_leave :: 
    IO ()

{-# DEPRECATED threadsLeave ["(Since version 3.6)","All GDK and GTK+ calls should be made from the main","    thread"]#-}
threadsLeave ::
    (MonadIO m) =>
    m ()
threadsLeave  = liftIO $ do
    gdk_threads_leave
    return ()

-- function gdk_unicode_to_keyval
-- Args : [Arg {argName = "wc", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "wc", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gdk_unicode_to_keyval" gdk_unicode_to_keyval :: 
    Word32 ->                               -- wc : TBasicType TUInt32
    IO Word32


unicodeToKeyval ::
    (MonadIO m) =>
    Word32 ->                               -- wc
    m Word32
unicodeToKeyval wc = liftIO $ do
    result <- gdk_unicode_to_keyval wc
    return result

-- function gdk_utf8_to_string_target
-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gdk_utf8_to_string_target" gdk_utf8_to_string_target :: 
    CString ->                              -- str : TBasicType TUTF8
    IO CString


utf8ToStringTarget ::
    (MonadIO m) =>
    T.Text ->                               -- str
    m T.Text
utf8ToStringTarget str = liftIO $ do
    str' <- textToCString str
    result <- gdk_utf8_to_string_target str'
    result' <- cstringToText result
    freeMem result
    freeMem str'
    return result'