# Module GdkEvent

    module GdkEvent: sig .. end

    val unsafe_copy : Gpointer.boxed -> [< Gdk.Tags.event_type ] Gdk.event

    val copy : ([< Gdk.Tags.event_type ] as 'a) Gdk.event -> 'a Gdk.event

    val get_type : 'a Gdk.event -> 'a

    val get_window : 'a Gdk.event -> Gdk.window

    val get_send_event : 'a Gdk.event -> bool

    type timed = [ `BUTTON_PRESS
           | `BUTTON_RELEASE
           | `DRAG_ENTER
           | `DRAG_LEAVE
           | `DRAG_MOTION
           | `DRAG_STATUS
           | `DROP_FINISHED
           | `DROP_START
           | `ENTER_NOTIFY
           | `KEY_PRESS
           | `KEY_RELEASE
           | `LEAVE_NOTIFY
           | `MOTION_NOTIFY
           | `PROPERTY_NOTIFY
           | `PROXIMITY_IN
           | `PROXIMITY_OUT
           | `SCROLL
           | `SELECTION_CLEAR
           | `SELECTION_NOTIFY
           | `SELECTION_REQUEST
           | `THREE_BUTTON_PRESS
           | `TWO_BUTTON_PRESS ]

    val get_time : [< timed ] Gdk.event -> int32

    val create : ([< Gdk.Tags.event_type ] as 'a) -> 'a Gdk.event

    val set_window : 'a Gdk.event -> Gdk.window -> unit

    type any = Gdk.Tags.event_type Gdk.event

    val unsafe_cast : [< Gdk.Tags.event_type ] Gdk.event -> [< Gdk.Tags.event_type ] Gdk.event

    val cast : kind:([< Gdk.Tags.event_type ] as 'a) list -> any -> 'a Gdk.event

    module Expose: sig .. end

    module Visibility: sig .. end

    module Motion: sig .. end

    module Button: sig .. end

    module Scroll: sig .. end

    module Key: sig .. end

    module Crossing: sig .. end

    module Focus: sig .. end

    module Configure: sig .. end

    module Property: sig .. end

    module Selection: sig .. end

    module Proximity: sig .. end

    module Client: sig .. end

    module Setting: sig .. end

    module WindowState: sig .. end