Gtk2::Gdk::Event(3)
π Gtk2::Gdk::Event β the wrapper for GdkEvent π
okay bestie, pull up a chair π«Ά this is the page for Gtk2::Gdk::Event, aka the Perl-side wrapper for a raw C GdkEvent. every lil click, keypress, scroll, window wiggle β it all shows up here as one of these. no cap. π
πΈ HIERARCHY πΈ
she has a lineage, and it's giving very distinguished:
Glib::Boxed
+----Gtk2::Gdk::Event
so yes, she's a Glib::Boxed girlie. iconic behavior. π
π¦ EVENT TYPES π¦
here's the whole friend group β every event type subclass that exists:
Gtk2::Gdk::Event::ButtonGtk2::Gdk::Event::ClientGtk2::Gdk::Event::ConfigureGtk2::Gdk::Event::CrossingGtk2::Gdk::Event::DNDGtk2::Gdk::Event::ExposeGtk2::Gdk::Event::FocusGtk2::Gdk::Event::KeyGtk2::Gdk::Event::MotionGtk2::Gdk::Event::NoExposeGtk2::Gdk::Event::PropertyGtk2::Gdk::Event::ProximityGtk2::Gdk::Event::ScrollGtk2::Gdk::Event::SelectionGtk2::Gdk::Event::SettingGtk2::Gdk::Event::VisibilityGtk2::Gdk::Event::WindowStateGtk2::Gdk::Event::OwnerChangeβ since gtk+ 2.6 β¨Gtk2::Gdk::Event::GrabBrokenβ since gtk+ 2.8 β¨
β¨ METHODS β¨
π making one
event = Gtk2::Gdk::Event->new ($type)$typeβ aGtk2::Gdk::EventType
π axes, coords, and other spatial nonsense
double = $event->axis ($axis_use)$axis_useβ aGtk2::Gdk::AxisUse
double = $event->get_axis ($axis_use)$axis_useβ aGtk2::Gdk::AxisUse
($x, $y) = $event->coords($x, $y) = $event->get_coords($x_root, $y_root) = $event->root_coords($x_root, $y_root) = $event->get_root_coordsinteger = $event->x_rootinteger = $event->y_root
π«Ά copying and grabbing events off the queue
event = $event->copyβ clone her, she's yours nowevent or undef = Gtk2::Gdk::Event->getevent or undef = Gtk2::Gdk::Event->get_graphics_expose ($window)$windowβ aGtk2::Gdk::Window
event or undef = Gtk2::Gdk::Event->peekβ look, don't touch πGtk2::Gdk::Event->put ($event)$eventβ aGtk2::Gdk::Event
π₯ the event dispatcher (handle with care)
Gtk2::Gdk::Event->handler_set ($func, $data=undef)$func(subroutine) β the function that gets called for each event.$data(scalar)
this one sets the function that handles all events from GDK. GTK+ uses this itself to dispatch events, so honestly it's rarely of use to applications β unless you're implementing completely custom event dispatching (unlikely π) or you preprocess events somehow and then pass them on toGtk2::main_do_event. special case: if func is undef, the handler gets "reset" by passing the actual C functiongtk_main_do_eventto GDK, which bypasses the Perl marshaling β and takes things back up to full speed. ποΈ
π₯οΈ screens
screen = $event->get_screenβ since: gtk+ 2.2$event->set_screen ($screen)$screenβ aGtk2::Gdk::Screen- since: gtk+ 2.2
π¨ sending client messages
boolean = Gtk2::Gdk::Event->send_client_message ($event, $winid)$eventβ aGtk2::Gdk::Event$winidβ aGtk2::Gdk::NativeWindow
boolean = Gtk2::Gdk::Event->send_client_message_for_display ($display, $event, $winid)$displayβ aGtk2::Gdk::Display$eventβ aGtk2::Gdk::Event$winidβ aGtk2::Gdk::NativeWindow- since: gtk+ 2.2
Gtk2::Gdk::Event->send_clientmessage_toall ($event)$eventβ aGtk2::Gdk::Event
π°οΈ state, time, type, window
integer = $event->send_event ($newvalue=0)$newvalueβ an integer
$modifiertype = $event->get_state$modifiertype = $event->state
these two grab the $event's state. β οΈ she croaks if that event type doesn't have a state β so vibe check before you call, bestie.
$event->set_state ($newstate)$newstateβ aGtk2::Gdk::ModifierType
$timestamp = $event->get_time$timestamp = $event->time
these grab the $event's time. if that event type doesn't have a time, or if $event is undef, you get back GDK_CURRENT_TIME, which is 0. π
$event->set_time ($newtime)$newtimeβ an integer timestamp
eventtype = $event->typewindow or undef = $event->window ($newvalue=undef)$newvalueβ aGtk2::Gdk::Windowor undef
π ENUMS AND FLAGS π
enum Gtk2::Gdk::AxisUse
'ignore'/GDK_AXIS_IGNORE'x'/GDK_AXIS_X'y'/GDK_AXIS_Y'pressure'/GDK_AXIS_PRESSURE'xtilt'/GDK_AXIS_XTILT'ytilt'/GDK_AXIS_YTILT'wheel'/GDK_AXIS_WHEEL'last'/GDK_AXIS_LAST
enum Gtk2::Gdk::EventType
'nothing'/GDK_NOTHING'delete'/GDK_DELETE'destroy'/GDK_DESTROY'expose'/GDK_EXPOSE'motion-notify'/GDK_MOTION_NOTIFY'button-press'/GDK_BUTTON_PRESS'2button-press'/GDK_2BUTTON_PRESS'3button-press'/GDK_3BUTTON_PRESS'button-release'/GDK_BUTTON_RELEASE'key-press'/GDK_KEY_PRESS'key-release'/GDK_KEY_RELEASE'enter-notify'/GDK_ENTER_NOTIFY'leave-notify'/GDK_LEAVE_NOTIFY'focus-change'/GDK_FOCUS_CHANGE'configure'/GDK_CONFIGURE'map'/GDK_MAP'unmap'/GDK_UNMAP'property-notify'/GDK_PROPERTY_NOTIFY'selection-clear'/GDK_SELECTION_CLEAR'selection-request'/GDK_SELECTION_REQUEST'selection-notify'/GDK_SELECTION_NOTIFY'proximity-in'/GDK_PROXIMITY_IN'proximity-out'/GDK_PROXIMITY_OUT'drag-enter'/GDK_DRAG_ENTER'drag-leave'/GDK_DRAG_LEAVE'drag-motion'/GDK_DRAG_MOTION'drag-status'/GDK_DRAG_STATUS'drop-start'/GDK_DROP_START'drop-finished'/GDK_DROP_FINISHED'client-event'/GDK_CLIENT_EVENT'visibility-notify'/GDK_VISIBILITY_NOTIFY'no-expose'/GDK_NO_EXPOSE'scroll'/GDK_SCROLL'window-state'/GDK_WINDOW_STATE'setting'/GDK_SETTING'owner-change'/GDK_OWNER_CHANGE'grab-broken'/GDK_GRAB_BROKEN'damage'/GDK_DAMAGE'event-last'/GDK_EVENT_LAST
flags Gtk2::Gdk::ModifierType
'shift-mask'/GDK_SHIFT_MASK'lock-mask'/GDK_LOCK_MASK'control-mask'/GDK_CONTROL_MASK'mod1-mask'/GDK_MOD1_MASK'mod2-mask'/GDK_MOD2_MASK'mod3-mask'/GDK_MOD3_MASK'mod4-mask'/GDK_MOD4_MASK'mod5-mask'/GDK_MOD5_MASK'button1-mask'/GDK_BUTTON1_MASK'button2-mask'/GDK_BUTTON2_MASK'button3-mask'/GDK_BUTTON3_MASK'button4-mask'/GDK_BUTTON4_MASK'button5-mask'/GDK_BUTTON5_MASK'super-mask'/GDK_SUPER_MASK'hyper-mask'/GDK_HYPER_MASK'meta-mask'/GDK_META_MASK'release-mask'/GDK_RELEASE_MASK'modifier-mask'/GDK_MODIFIER_MASK
π SEE ALSO π
go read these next, they're the sequel, fr fr:
Gtk2Glib::Boxed
π COPYRIGHT π
Copyright (C) 2003-2011 by the gtk2-perl team.
This software is licensed under the LGPL. See Gtk2 for a full notice.
and that's the whole page, bestie π this little writeup is Gtk2::Gdk::Event(3) from the User Contributed Perl Documentation, shipped with perl v5.42.0 and dated 2025-07-25. mwah, go forth and handle some events π
β¨πΈ
π¦ where this page comes from
- fedora 43: perl-Gtk2 1.24993-23.fc43 Β· LicenseRef-Callaway-LGPLv2+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms