diff --git a/GI/Gdk.hs b/GI/Gdk.hs
new file mode 100644
--- /dev/null
+++ b/GI/Gdk.hs
@@ -0,0 +1,27136 @@
+-- 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'
+
diff --git a/GI/GdkAttributes.hs b/GI/GdkAttributes.hs
new file mode 100644
--- /dev/null
+++ b/GI/GdkAttributes.hs
@@ -0,0 +1,545 @@
+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-unused-imports #-}
+
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
+    TypeFamilies, MultiParamTypeClasses, KindSignatures,
+    FlexibleInstances, UndecidableInstances, DataKinds,
+    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
+
+module GI.GdkAttributes 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 GI.Gdk
+
+-- VVV Prop "display"
+   -- Type: TInterface "Gdk" "Display"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getAppLaunchContextDisplay :: (MonadIO m, AppLaunchContextK o) => o -> m Display
+getAppLaunchContextDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+
+constructAppLaunchContextDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
+constructAppLaunchContextDisplay val = constructObjectPropertyObject "display" val
+
+data AppLaunchContextDisplayPropertyInfo
+instance AttrInfo AppLaunchContextDisplayPropertyInfo where
+    type AttrAllowedOps AppLaunchContextDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint AppLaunchContextDisplayPropertyInfo = DisplayK
+    type AttrBaseTypeConstraint AppLaunchContextDisplayPropertyInfo = AppLaunchContextK
+    type AttrGetType AppLaunchContextDisplayPropertyInfo = Display
+    type AttrLabel AppLaunchContextDisplayPropertyInfo = "AppLaunchContext::display"
+    attrGet _ = getAppLaunchContextDisplay
+    attrSet _ = undefined
+    attrConstruct _ = constructAppLaunchContextDisplay
+
+type instance AttributeList AppLaunchContext = '[ '("display", AppLaunchContextDisplayPropertyInfo)]
+
+-- VVV Prop "cursor-type"
+   -- Type: TInterface "Gdk" "CursorType"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getCursorCursorType :: (MonadIO m, CursorK o) => o -> m CursorType
+getCursorCursorType obj = liftIO $ getObjectPropertyEnum obj "cursor-type"
+
+constructCursorCursorType :: CursorType -> IO ([Char], GValue)
+constructCursorCursorType val = constructObjectPropertyEnum "cursor-type" val
+
+data CursorCursorTypePropertyInfo
+instance AttrInfo CursorCursorTypePropertyInfo where
+    type AttrAllowedOps CursorCursorTypePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint CursorCursorTypePropertyInfo = (~) CursorType
+    type AttrBaseTypeConstraint CursorCursorTypePropertyInfo = CursorK
+    type AttrGetType CursorCursorTypePropertyInfo = CursorType
+    type AttrLabel CursorCursorTypePropertyInfo = "Cursor::cursor-type"
+    attrGet _ = getCursorCursorType
+    attrSet _ = undefined
+    attrConstruct _ = constructCursorCursorType
+
+-- VVV Prop "display"
+   -- Type: TInterface "Gdk" "Display"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getCursorDisplay :: (MonadIO m, CursorK o) => o -> m Display
+getCursorDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+
+constructCursorDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
+constructCursorDisplay val = constructObjectPropertyObject "display" val
+
+data CursorDisplayPropertyInfo
+instance AttrInfo CursorDisplayPropertyInfo where
+    type AttrAllowedOps CursorDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint CursorDisplayPropertyInfo = DisplayK
+    type AttrBaseTypeConstraint CursorDisplayPropertyInfo = CursorK
+    type AttrGetType CursorDisplayPropertyInfo = Display
+    type AttrLabel CursorDisplayPropertyInfo = "Cursor::display"
+    attrGet _ = getCursorDisplay
+    attrSet _ = undefined
+    attrConstruct _ = constructCursorDisplay
+
+type instance AttributeList Cursor = '[ '("cursor-type", CursorCursorTypePropertyInfo), '("display", CursorDisplayPropertyInfo)]
+
+-- VVV Prop "associated-device"
+   -- Type: TInterface "Gdk" "Device"
+   -- Flags: [PropertyReadable]
+
+getDeviceAssociatedDevice :: (MonadIO m, DeviceK o) => o -> m Device
+getDeviceAssociatedDevice obj = liftIO $ getObjectPropertyObject obj "associated-device" Device
+
+data DeviceAssociatedDevicePropertyInfo
+instance AttrInfo DeviceAssociatedDevicePropertyInfo where
+    type AttrAllowedOps DeviceAssociatedDevicePropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint DeviceAssociatedDevicePropertyInfo = (~) ()
+    type AttrBaseTypeConstraint DeviceAssociatedDevicePropertyInfo = DeviceK
+    type AttrGetType DeviceAssociatedDevicePropertyInfo = Device
+    type AttrLabel DeviceAssociatedDevicePropertyInfo = "Device::associated-device"
+    attrGet _ = getDeviceAssociatedDevice
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "device-manager"
+   -- Type: TInterface "Gdk" "DeviceManager"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceDeviceManager :: (MonadIO m, DeviceK o) => o -> m DeviceManager
+getDeviceDeviceManager obj = liftIO $ getObjectPropertyObject obj "device-manager" DeviceManager
+
+constructDeviceDeviceManager :: (DeviceManagerK a) => a -> IO ([Char], GValue)
+constructDeviceDeviceManager val = constructObjectPropertyObject "device-manager" val
+
+data DeviceDeviceManagerPropertyInfo
+instance AttrInfo DeviceDeviceManagerPropertyInfo where
+    type AttrAllowedOps DeviceDeviceManagerPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceDeviceManagerPropertyInfo = DeviceManagerK
+    type AttrBaseTypeConstraint DeviceDeviceManagerPropertyInfo = DeviceK
+    type AttrGetType DeviceDeviceManagerPropertyInfo = DeviceManager
+    type AttrLabel DeviceDeviceManagerPropertyInfo = "Device::device-manager"
+    attrGet _ = getDeviceDeviceManager
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceDeviceManager
+
+-- VVV Prop "display"
+   -- Type: TInterface "Gdk" "Display"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceDisplay :: (MonadIO m, DeviceK o) => o -> m Display
+getDeviceDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+
+constructDeviceDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
+constructDeviceDisplay val = constructObjectPropertyObject "display" val
+
+data DeviceDisplayPropertyInfo
+instance AttrInfo DeviceDisplayPropertyInfo where
+    type AttrAllowedOps DeviceDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceDisplayPropertyInfo = DisplayK
+    type AttrBaseTypeConstraint DeviceDisplayPropertyInfo = DeviceK
+    type AttrGetType DeviceDisplayPropertyInfo = Display
+    type AttrLabel DeviceDisplayPropertyInfo = "Device::display"
+    attrGet _ = getDeviceDisplay
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceDisplay
+
+-- VVV Prop "has-cursor"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceHasCursor :: (MonadIO m, DeviceK o) => o -> m Bool
+getDeviceHasCursor obj = liftIO $ getObjectPropertyBool obj "has-cursor"
+
+constructDeviceHasCursor :: Bool -> IO ([Char], GValue)
+constructDeviceHasCursor val = constructObjectPropertyBool "has-cursor" val
+
+data DeviceHasCursorPropertyInfo
+instance AttrInfo DeviceHasCursorPropertyInfo where
+    type AttrAllowedOps DeviceHasCursorPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceHasCursorPropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint DeviceHasCursorPropertyInfo = DeviceK
+    type AttrGetType DeviceHasCursorPropertyInfo = Bool
+    type AttrLabel DeviceHasCursorPropertyInfo = "Device::has-cursor"
+    attrGet _ = getDeviceHasCursor
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceHasCursor
+
+-- VVV Prop "input-mode"
+   -- Type: TInterface "Gdk" "InputMode"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getDeviceInputMode :: (MonadIO m, DeviceK o) => o -> m InputMode
+getDeviceInputMode obj = liftIO $ getObjectPropertyEnum obj "input-mode"
+
+setDeviceInputMode :: (MonadIO m, DeviceK o) => o -> InputMode -> m ()
+setDeviceInputMode obj val = liftIO $ setObjectPropertyEnum obj "input-mode" val
+
+constructDeviceInputMode :: InputMode -> IO ([Char], GValue)
+constructDeviceInputMode val = constructObjectPropertyEnum "input-mode" val
+
+data DeviceInputModePropertyInfo
+instance AttrInfo DeviceInputModePropertyInfo where
+    type AttrAllowedOps DeviceInputModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceInputModePropertyInfo = (~) InputMode
+    type AttrBaseTypeConstraint DeviceInputModePropertyInfo = DeviceK
+    type AttrGetType DeviceInputModePropertyInfo = InputMode
+    type AttrLabel DeviceInputModePropertyInfo = "Device::input-mode"
+    attrGet _ = getDeviceInputMode
+    attrSet _ = setDeviceInputMode
+    attrConstruct _ = constructDeviceInputMode
+
+-- VVV Prop "input-source"
+   -- Type: TInterface "Gdk" "InputSource"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceInputSource :: (MonadIO m, DeviceK o) => o -> m InputSource
+getDeviceInputSource obj = liftIO $ getObjectPropertyEnum obj "input-source"
+
+constructDeviceInputSource :: InputSource -> IO ([Char], GValue)
+constructDeviceInputSource val = constructObjectPropertyEnum "input-source" val
+
+data DeviceInputSourcePropertyInfo
+instance AttrInfo DeviceInputSourcePropertyInfo where
+    type AttrAllowedOps DeviceInputSourcePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceInputSourcePropertyInfo = (~) InputSource
+    type AttrBaseTypeConstraint DeviceInputSourcePropertyInfo = DeviceK
+    type AttrGetType DeviceInputSourcePropertyInfo = InputSource
+    type AttrLabel DeviceInputSourcePropertyInfo = "Device::input-source"
+    attrGet _ = getDeviceInputSource
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceInputSource
+
+-- VVV Prop "n-axes"
+   -- Type: TBasicType TUInt32
+   -- Flags: [PropertyReadable]
+
+getDeviceNAxes :: (MonadIO m, DeviceK o) => o -> m Word32
+getDeviceNAxes obj = liftIO $ getObjectPropertyCUInt obj "n-axes"
+
+data DeviceNAxesPropertyInfo
+instance AttrInfo DeviceNAxesPropertyInfo where
+    type AttrAllowedOps DeviceNAxesPropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint DeviceNAxesPropertyInfo = (~) ()
+    type AttrBaseTypeConstraint DeviceNAxesPropertyInfo = DeviceK
+    type AttrGetType DeviceNAxesPropertyInfo = Word32
+    type AttrLabel DeviceNAxesPropertyInfo = "Device::n-axes"
+    attrGet _ = getDeviceNAxes
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "name"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceName :: (MonadIO m, DeviceK o) => o -> m T.Text
+getDeviceName obj = liftIO $ getObjectPropertyString obj "name"
+
+constructDeviceName :: T.Text -> IO ([Char], GValue)
+constructDeviceName val = constructObjectPropertyString "name" val
+
+data DeviceNamePropertyInfo
+instance AttrInfo DeviceNamePropertyInfo where
+    type AttrAllowedOps DeviceNamePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceNamePropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint DeviceNamePropertyInfo = DeviceK
+    type AttrGetType DeviceNamePropertyInfo = T.Text
+    type AttrLabel DeviceNamePropertyInfo = "Device::name"
+    attrGet _ = getDeviceName
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceName
+
+-- VVV Prop "product-id"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceProductId :: (MonadIO m, DeviceK o) => o -> m T.Text
+getDeviceProductId obj = liftIO $ getObjectPropertyString obj "product-id"
+
+constructDeviceProductId :: T.Text -> IO ([Char], GValue)
+constructDeviceProductId val = constructObjectPropertyString "product-id" val
+
+data DeviceProductIdPropertyInfo
+instance AttrInfo DeviceProductIdPropertyInfo where
+    type AttrAllowedOps DeviceProductIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceProductIdPropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint DeviceProductIdPropertyInfo = DeviceK
+    type AttrGetType DeviceProductIdPropertyInfo = T.Text
+    type AttrLabel DeviceProductIdPropertyInfo = "Device::product-id"
+    attrGet _ = getDeviceProductId
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceProductId
+
+-- VVV Prop "type"
+   -- Type: TInterface "Gdk" "DeviceType"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceType :: (MonadIO m, DeviceK o) => o -> m DeviceType
+getDeviceType obj = liftIO $ getObjectPropertyEnum obj "type"
+
+constructDeviceType :: DeviceType -> IO ([Char], GValue)
+constructDeviceType val = constructObjectPropertyEnum "type" val
+
+data DeviceTypePropertyInfo
+instance AttrInfo DeviceTypePropertyInfo where
+    type AttrAllowedOps DeviceTypePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceTypePropertyInfo = (~) DeviceType
+    type AttrBaseTypeConstraint DeviceTypePropertyInfo = DeviceK
+    type AttrGetType DeviceTypePropertyInfo = DeviceType
+    type AttrLabel DeviceTypePropertyInfo = "Device::type"
+    attrGet _ = getDeviceType
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceType
+
+-- VVV Prop "vendor-id"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceVendorId :: (MonadIO m, DeviceK o) => o -> m T.Text
+getDeviceVendorId obj = liftIO $ getObjectPropertyString obj "vendor-id"
+
+constructDeviceVendorId :: T.Text -> IO ([Char], GValue)
+constructDeviceVendorId val = constructObjectPropertyString "vendor-id" val
+
+data DeviceVendorIdPropertyInfo
+instance AttrInfo DeviceVendorIdPropertyInfo where
+    type AttrAllowedOps DeviceVendorIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceVendorIdPropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint DeviceVendorIdPropertyInfo = DeviceK
+    type AttrGetType DeviceVendorIdPropertyInfo = T.Text
+    type AttrLabel DeviceVendorIdPropertyInfo = "Device::vendor-id"
+    attrGet _ = getDeviceVendorId
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceVendorId
+
+type instance AttributeList Device = '[ '("associated-device", DeviceAssociatedDevicePropertyInfo), '("device-manager", DeviceDeviceManagerPropertyInfo), '("display", DeviceDisplayPropertyInfo), '("has-cursor", DeviceHasCursorPropertyInfo), '("input-mode", DeviceInputModePropertyInfo), '("input-source", DeviceInputSourcePropertyInfo), '("n-axes", DeviceNAxesPropertyInfo), '("name", DeviceNamePropertyInfo), '("product-id", DeviceProductIdPropertyInfo), '("type", DeviceTypePropertyInfo), '("vendor-id", DeviceVendorIdPropertyInfo)]
+
+-- VVV Prop "display"
+   -- Type: TInterface "Gdk" "Display"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getDeviceManagerDisplay :: (MonadIO m, DeviceManagerK o) => o -> m Display
+getDeviceManagerDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+
+constructDeviceManagerDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
+constructDeviceManagerDisplay val = constructObjectPropertyObject "display" val
+
+data DeviceManagerDisplayPropertyInfo
+instance AttrInfo DeviceManagerDisplayPropertyInfo where
+    type AttrAllowedOps DeviceManagerDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DeviceManagerDisplayPropertyInfo = DisplayK
+    type AttrBaseTypeConstraint DeviceManagerDisplayPropertyInfo = DeviceManagerK
+    type AttrGetType DeviceManagerDisplayPropertyInfo = Display
+    type AttrLabel DeviceManagerDisplayPropertyInfo = "DeviceManager::display"
+    attrGet _ = getDeviceManagerDisplay
+    attrSet _ = undefined
+    attrConstruct _ = constructDeviceManagerDisplay
+
+type instance AttributeList DeviceManager = '[ '("display", DeviceManagerDisplayPropertyInfo)]
+
+type instance AttributeList Display = '[ ]
+
+-- VVV Prop "default-display"
+   -- Type: TInterface "Gdk" "Display"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getDisplayManagerDefaultDisplay :: (MonadIO m, DisplayManagerK o) => o -> m Display
+getDisplayManagerDefaultDisplay obj = liftIO $ getObjectPropertyObject obj "default-display" Display
+
+setDisplayManagerDefaultDisplay :: (MonadIO m, DisplayManagerK o, DisplayK a) => o -> a -> m ()
+setDisplayManagerDefaultDisplay obj val = liftIO $ setObjectPropertyObject obj "default-display" val
+
+constructDisplayManagerDefaultDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
+constructDisplayManagerDefaultDisplay val = constructObjectPropertyObject "default-display" val
+
+data DisplayManagerDefaultDisplayPropertyInfo
+instance AttrInfo DisplayManagerDefaultDisplayPropertyInfo where
+    type AttrAllowedOps DisplayManagerDefaultDisplayPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint DisplayManagerDefaultDisplayPropertyInfo = DisplayK
+    type AttrBaseTypeConstraint DisplayManagerDefaultDisplayPropertyInfo = DisplayManagerK
+    type AttrGetType DisplayManagerDefaultDisplayPropertyInfo = Display
+    type AttrLabel DisplayManagerDefaultDisplayPropertyInfo = "DisplayManager::default-display"
+    attrGet _ = getDisplayManagerDefaultDisplay
+    attrSet _ = setDisplayManagerDefaultDisplay
+    attrConstruct _ = constructDisplayManagerDefaultDisplay
+
+type instance AttributeList DisplayManager = '[ '("default-display", DisplayManagerDefaultDisplayPropertyInfo)]
+
+type instance AttributeList DragContext = '[ ]
+
+type instance AttributeList FrameClock = '[ ]
+
+-- VVV Prop "display"
+   -- Type: TInterface "Gdk" "Display"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getGLContextDisplay :: (MonadIO m, GLContextK o) => o -> m Display
+getGLContextDisplay obj = liftIO $ getObjectPropertyObject obj "display" Display
+
+constructGLContextDisplay :: (DisplayK a) => a -> IO ([Char], GValue)
+constructGLContextDisplay val = constructObjectPropertyObject "display" val
+
+data GLContextDisplayPropertyInfo
+instance AttrInfo GLContextDisplayPropertyInfo where
+    type AttrAllowedOps GLContextDisplayPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint GLContextDisplayPropertyInfo = DisplayK
+    type AttrBaseTypeConstraint GLContextDisplayPropertyInfo = GLContextK
+    type AttrGetType GLContextDisplayPropertyInfo = Display
+    type AttrLabel GLContextDisplayPropertyInfo = "GLContext::display"
+    attrGet _ = getGLContextDisplay
+    attrSet _ = undefined
+    attrConstruct _ = constructGLContextDisplay
+
+-- VVV Prop "shared-context"
+   -- Type: TInterface "Gdk" "GLContext"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getGLContextSharedContext :: (MonadIO m, GLContextK o) => o -> m GLContext
+getGLContextSharedContext obj = liftIO $ getObjectPropertyObject obj "shared-context" GLContext
+
+constructGLContextSharedContext :: (GLContextK a) => a -> IO ([Char], GValue)
+constructGLContextSharedContext val = constructObjectPropertyObject "shared-context" val
+
+data GLContextSharedContextPropertyInfo
+instance AttrInfo GLContextSharedContextPropertyInfo where
+    type AttrAllowedOps GLContextSharedContextPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint GLContextSharedContextPropertyInfo = GLContextK
+    type AttrBaseTypeConstraint GLContextSharedContextPropertyInfo = GLContextK
+    type AttrGetType GLContextSharedContextPropertyInfo = GLContext
+    type AttrLabel GLContextSharedContextPropertyInfo = "GLContext::shared-context"
+    attrGet _ = getGLContextSharedContext
+    attrSet _ = undefined
+    attrConstruct _ = constructGLContextSharedContext
+
+-- VVV Prop "window"
+   -- Type: TInterface "Gdk" "Window"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getGLContextWindow :: (MonadIO m, GLContextK o) => o -> m Window
+getGLContextWindow obj = liftIO $ getObjectPropertyObject obj "window" Window
+
+constructGLContextWindow :: (WindowK a) => a -> IO ([Char], GValue)
+constructGLContextWindow val = constructObjectPropertyObject "window" val
+
+data GLContextWindowPropertyInfo
+instance AttrInfo GLContextWindowPropertyInfo where
+    type AttrAllowedOps GLContextWindowPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint GLContextWindowPropertyInfo = WindowK
+    type AttrBaseTypeConstraint GLContextWindowPropertyInfo = GLContextK
+    type AttrGetType GLContextWindowPropertyInfo = Window
+    type AttrLabel GLContextWindowPropertyInfo = "GLContext::window"
+    attrGet _ = getGLContextWindow
+    attrSet _ = undefined
+    attrConstruct _ = constructGLContextWindow
+
+type instance AttributeList GLContext = '[ '("display", GLContextDisplayPropertyInfo), '("shared-context", GLContextSharedContextPropertyInfo), '("window", GLContextWindowPropertyInfo)]
+
+type instance AttributeList Keymap = '[ ]
+
+-- VVV Prop "font-options"
+   -- Type: TBasicType TVoid
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getScreenFontOptions :: (MonadIO m, ScreenK o) => o -> m (Ptr ())
+getScreenFontOptions obj = liftIO $ getObjectPropertyPtr obj "font-options"
+
+setScreenFontOptions :: (MonadIO m, ScreenK o) => o -> (Ptr ()) -> m ()
+setScreenFontOptions obj val = liftIO $ setObjectPropertyPtr obj "font-options" val
+
+constructScreenFontOptions :: (Ptr ()) -> IO ([Char], GValue)
+constructScreenFontOptions val = constructObjectPropertyPtr "font-options" val
+
+data ScreenFontOptionsPropertyInfo
+instance AttrInfo ScreenFontOptionsPropertyInfo where
+    type AttrAllowedOps ScreenFontOptionsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint ScreenFontOptionsPropertyInfo = (~) (Ptr ())
+    type AttrBaseTypeConstraint ScreenFontOptionsPropertyInfo = ScreenK
+    type AttrGetType ScreenFontOptionsPropertyInfo = (Ptr ())
+    type AttrLabel ScreenFontOptionsPropertyInfo = "Screen::font-options"
+    attrGet _ = getScreenFontOptions
+    attrSet _ = setScreenFontOptions
+    attrConstruct _ = constructScreenFontOptions
+
+-- VVV Prop "resolution"
+   -- Type: TBasicType TDouble
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getScreenResolution :: (MonadIO m, ScreenK o) => o -> m Double
+getScreenResolution obj = liftIO $ getObjectPropertyDouble obj "resolution"
+
+setScreenResolution :: (MonadIO m, ScreenK o) => o -> Double -> m ()
+setScreenResolution obj val = liftIO $ setObjectPropertyDouble obj "resolution" val
+
+constructScreenResolution :: Double -> IO ([Char], GValue)
+constructScreenResolution val = constructObjectPropertyDouble "resolution" val
+
+data ScreenResolutionPropertyInfo
+instance AttrInfo ScreenResolutionPropertyInfo where
+    type AttrAllowedOps ScreenResolutionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint ScreenResolutionPropertyInfo = (~) Double
+    type AttrBaseTypeConstraint ScreenResolutionPropertyInfo = ScreenK
+    type AttrGetType ScreenResolutionPropertyInfo = Double
+    type AttrLabel ScreenResolutionPropertyInfo = "Screen::resolution"
+    attrGet _ = getScreenResolution
+    attrSet _ = setScreenResolution
+    attrConstruct _ = constructScreenResolution
+
+type instance AttributeList Screen = '[ '("font-options", ScreenFontOptionsPropertyInfo), '("resolution", ScreenResolutionPropertyInfo)]
+
+type instance AttributeList Visual = '[ ]
+
+-- VVV Prop "cursor"
+   -- Type: TInterface "Gdk" "Cursor"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getWindowCursor :: (MonadIO m, WindowK o) => o -> m Cursor
+getWindowCursor obj = liftIO $ getObjectPropertyObject obj "cursor" Cursor
+
+setWindowCursor :: (MonadIO m, WindowK o, CursorK a) => o -> a -> m ()
+setWindowCursor obj val = liftIO $ setObjectPropertyObject obj "cursor" val
+
+constructWindowCursor :: (CursorK a) => a -> IO ([Char], GValue)
+constructWindowCursor val = constructObjectPropertyObject "cursor" val
+
+data WindowCursorPropertyInfo
+instance AttrInfo WindowCursorPropertyInfo where
+    type AttrAllowedOps WindowCursorPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint WindowCursorPropertyInfo = CursorK
+    type AttrBaseTypeConstraint WindowCursorPropertyInfo = WindowK
+    type AttrGetType WindowCursorPropertyInfo = Cursor
+    type AttrLabel WindowCursorPropertyInfo = "Window::cursor"
+    attrGet _ = getWindowCursor
+    attrSet _ = setWindowCursor
+    attrConstruct _ = constructWindowCursor
+
+type instance AttributeList Window = '[ '("cursor", WindowCursorPropertyInfo)]
+
diff --git a/GI/GdkSignals.hs b/GI/GdkSignals.hs
new file mode 100644
--- /dev/null
+++ b/GI/GdkSignals.hs
@@ -0,0 +1,164 @@
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+{-# LANGUAGE DataKinds,    FlexibleInstances,
+             TypeFamilies, MultiParamTypeClasses,
+               TypeOperators #-}
+
+module GI.GdkSignals where
+
+import Data.GI.Base.Properties (GObjectNotifySignalInfo)
+import Data.GI.Base.Signals
+import Data.GI.Base.Overloading
+
+import qualified GI.GObjectSignals as GObject
+import qualified GI.GioSignals as Gio
+import GI.Gdk
+
+type instance SignalList AppLaunchContext = '[ '("launch-failed", Gio.AppLaunchContextLaunchFailedSignalInfo), '("launched", Gio.AppLaunchContextLaunchedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Cursor = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data DeviceChangedSignalInfo
+instance SignalInfo DeviceChangedSignalInfo where
+    type HaskellCallbackType DeviceChangedSignalInfo = DeviceChangedCallback
+    connectSignal _ = connectDeviceChanged
+
+type instance SignalList Device = '[ '("changed", DeviceChangedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data DeviceManagerDeviceAddedSignalInfo
+instance SignalInfo DeviceManagerDeviceAddedSignalInfo where
+    type HaskellCallbackType DeviceManagerDeviceAddedSignalInfo = DeviceManagerDeviceAddedCallback
+    connectSignal _ = connectDeviceManagerDeviceAdded
+
+data DeviceManagerDeviceChangedSignalInfo
+instance SignalInfo DeviceManagerDeviceChangedSignalInfo where
+    type HaskellCallbackType DeviceManagerDeviceChangedSignalInfo = DeviceManagerDeviceChangedCallback
+    connectSignal _ = connectDeviceManagerDeviceChanged
+
+data DeviceManagerDeviceRemovedSignalInfo
+instance SignalInfo DeviceManagerDeviceRemovedSignalInfo where
+    type HaskellCallbackType DeviceManagerDeviceRemovedSignalInfo = DeviceManagerDeviceRemovedCallback
+    connectSignal _ = connectDeviceManagerDeviceRemoved
+
+type instance SignalList DeviceManager = '[ '("device-added", DeviceManagerDeviceAddedSignalInfo), '("device-changed", DeviceManagerDeviceChangedSignalInfo), '("device-removed", DeviceManagerDeviceRemovedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data DisplayClosedSignalInfo
+instance SignalInfo DisplayClosedSignalInfo where
+    type HaskellCallbackType DisplayClosedSignalInfo = DisplayClosedCallback
+    connectSignal _ = connectDisplayClosed
+
+data DisplayOpenedSignalInfo
+instance SignalInfo DisplayOpenedSignalInfo where
+    type HaskellCallbackType DisplayOpenedSignalInfo = DisplayOpenedCallback
+    connectSignal _ = connectDisplayOpened
+
+type instance SignalList Display = '[ '("closed", DisplayClosedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("opened", DisplayOpenedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data DisplayManagerDisplayOpenedSignalInfo
+instance SignalInfo DisplayManagerDisplayOpenedSignalInfo where
+    type HaskellCallbackType DisplayManagerDisplayOpenedSignalInfo = DisplayManagerDisplayOpenedCallback
+    connectSignal _ = connectDisplayManagerDisplayOpened
+
+type instance SignalList DisplayManager = '[ '("display-opened", DisplayManagerDisplayOpenedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList DragContext = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data FrameClockAfterPaintSignalInfo
+instance SignalInfo FrameClockAfterPaintSignalInfo where
+    type HaskellCallbackType FrameClockAfterPaintSignalInfo = FrameClockAfterPaintCallback
+    connectSignal _ = connectFrameClockAfterPaint
+
+data FrameClockBeforePaintSignalInfo
+instance SignalInfo FrameClockBeforePaintSignalInfo where
+    type HaskellCallbackType FrameClockBeforePaintSignalInfo = FrameClockBeforePaintCallback
+    connectSignal _ = connectFrameClockBeforePaint
+
+data FrameClockFlushEventsSignalInfo
+instance SignalInfo FrameClockFlushEventsSignalInfo where
+    type HaskellCallbackType FrameClockFlushEventsSignalInfo = FrameClockFlushEventsCallback
+    connectSignal _ = connectFrameClockFlushEvents
+
+data FrameClockLayoutSignalInfo
+instance SignalInfo FrameClockLayoutSignalInfo where
+    type HaskellCallbackType FrameClockLayoutSignalInfo = FrameClockLayoutCallback
+    connectSignal _ = connectFrameClockLayout
+
+data FrameClockPaintSignalInfo
+instance SignalInfo FrameClockPaintSignalInfo where
+    type HaskellCallbackType FrameClockPaintSignalInfo = FrameClockPaintCallback
+    connectSignal _ = connectFrameClockPaint
+
+data FrameClockResumeEventsSignalInfo
+instance SignalInfo FrameClockResumeEventsSignalInfo where
+    type HaskellCallbackType FrameClockResumeEventsSignalInfo = FrameClockResumeEventsCallback
+    connectSignal _ = connectFrameClockResumeEvents
+
+data FrameClockUpdateSignalInfo
+instance SignalInfo FrameClockUpdateSignalInfo where
+    type HaskellCallbackType FrameClockUpdateSignalInfo = FrameClockUpdateCallback
+    connectSignal _ = connectFrameClockUpdate
+
+type instance SignalList FrameClock = '[ '("after-paint", FrameClockAfterPaintSignalInfo), '("before-paint", FrameClockBeforePaintSignalInfo), '("flush-events", FrameClockFlushEventsSignalInfo), '("layout", FrameClockLayoutSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("paint", FrameClockPaintSignalInfo), '("resume-events", FrameClockResumeEventsSignalInfo), '("update", FrameClockUpdateSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList GLContext = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data KeymapDirectionChangedSignalInfo
+instance SignalInfo KeymapDirectionChangedSignalInfo where
+    type HaskellCallbackType KeymapDirectionChangedSignalInfo = KeymapDirectionChangedCallback
+    connectSignal _ = connectKeymapDirectionChanged
+
+data KeymapKeysChangedSignalInfo
+instance SignalInfo KeymapKeysChangedSignalInfo where
+    type HaskellCallbackType KeymapKeysChangedSignalInfo = KeymapKeysChangedCallback
+    connectSignal _ = connectKeymapKeysChanged
+
+data KeymapStateChangedSignalInfo
+instance SignalInfo KeymapStateChangedSignalInfo where
+    type HaskellCallbackType KeymapStateChangedSignalInfo = KeymapStateChangedCallback
+    connectSignal _ = connectKeymapStateChanged
+
+type instance SignalList Keymap = '[ '("direction-changed", KeymapDirectionChangedSignalInfo), '("keys-changed", KeymapKeysChangedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("state-changed", KeymapStateChangedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data ScreenCompositedChangedSignalInfo
+instance SignalInfo ScreenCompositedChangedSignalInfo where
+    type HaskellCallbackType ScreenCompositedChangedSignalInfo = ScreenCompositedChangedCallback
+    connectSignal _ = connectScreenCompositedChanged
+
+data ScreenMonitorsChangedSignalInfo
+instance SignalInfo ScreenMonitorsChangedSignalInfo where
+    type HaskellCallbackType ScreenMonitorsChangedSignalInfo = ScreenMonitorsChangedCallback
+    connectSignal _ = connectScreenMonitorsChanged
+
+data ScreenSizeChangedSignalInfo
+instance SignalInfo ScreenSizeChangedSignalInfo where
+    type HaskellCallbackType ScreenSizeChangedSignalInfo = ScreenSizeChangedCallback
+    connectSignal _ = connectScreenSizeChanged
+
+type instance SignalList Screen = '[ '("composited-changed", ScreenCompositedChangedSignalInfo), '("monitors-changed", ScreenMonitorsChangedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("size-changed", ScreenSizeChangedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Visual = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data WindowCreateSurfaceSignalInfo
+instance SignalInfo WindowCreateSurfaceSignalInfo where
+    type HaskellCallbackType WindowCreateSurfaceSignalInfo = WindowCreateSurfaceCallback
+    connectSignal _ = connectWindowCreateSurface
+
+data WindowFromEmbedderSignalInfo
+instance SignalInfo WindowFromEmbedderSignalInfo where
+    type HaskellCallbackType WindowFromEmbedderSignalInfo = WindowFromEmbedderCallback
+    connectSignal _ = connectWindowFromEmbedder
+
+data WindowPickEmbeddedChildSignalInfo
+instance SignalInfo WindowPickEmbeddedChildSignalInfo where
+    type HaskellCallbackType WindowPickEmbeddedChildSignalInfo = WindowPickEmbeddedChildCallback
+    connectSignal _ = connectWindowPickEmbeddedChild
+
+data WindowToEmbedderSignalInfo
+instance SignalInfo WindowToEmbedderSignalInfo where
+    type HaskellCallbackType WindowToEmbedderSignalInfo = WindowToEmbedderCallback
+    connectSignal _ = connectWindowToEmbedder
+
+type instance SignalList Window = '[ '("create-surface", WindowCreateSurfaceSignalInfo), '("from-embedder", WindowFromEmbedderSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("pick-embedded-child", WindowPickEmbeddedChildSignalInfo), '("to-embedder", WindowToEmbedderSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,502 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+import Distribution.Simple
+main = defaultMain
diff --git a/gi-gdk.cabal b/gi-gdk.cabal
new file mode 100644
--- /dev/null
+++ b/gi-gdk.cabal
@@ -0,0 +1,30 @@
+-- Autogenerated, do not edit.
+name:               gi-gdk
+version:            0.3.16.8
+synopsis:           Gdk bindings
+description:        Bindings for Gdk, autogenerated by haskell-gi.
+homepage:           https://github.com/haskell-gi/haskell-gi
+license:            LGPL-2.1
+license-file:       LICENSE
+author:             Will Thompson, Iñaki García Etxebarria and Jonas Platte
+maintainer:         Iñaki García Etxebarria (garetxe@gmail.com)
+category:           Bindings
+build-type:         Simple
+cabal-version:      >=1.10
+
+library
+    default-language:   Haskell2010
+    exposed-modules:    GI.Gdk, GI.GdkAttributes, GI.GdkSignals
+    pkgconfig-depends:  gdk-3.0 >= 3.16
+    build-depends: base >= 4.6 && <4.9,
+        haskell-gi-base >= 0.8 && < 1,
+        gi-glib >= 0.2.44.8 && < 0.3,
+        gi-gobject >= 0.2.44.8 && < 0.3,
+        gi-gdkpixbuf >= 0.2.31.8 && < 0.3,
+        gi-gio >= 0.2.44.8 && < 0.3,
+        gi-pango >= 0.1.36.8 && < 0.2,
+        gi-cairo >= 0.1.14.8 && < 0.2,
+        bytestring >= 0.10,
+        containers >= 0.5,
+        text >= 1.0,
+        transformers >= 0.3
