1 /* GDK - The GIMP Drawing Kit 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 /* 19 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS 20 * file for a list of people on the GTK+ Team. See the ChangeLog 21 * files for a list of changes. These files are distributed with 22 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 23 */ 24 25 #ifndef __GDK_EVENTS_H__ 26 #define __GDK_EVENTS_H__ 27 28 #if !defined (__GDK_H_INSIDE__) && !defined (GTK_COMPILATION) 29 #error "Only <gdk/gdk.h> can be included directly." 30 #endif 31 32 #include <gdk/gdkversionmacros.h> 33 #include <gdk/gdktypes.h> 34 #include <gdk/gdkdrag.h> 35 #include <gdk/gdkdevice.h> 36 #include <gdk/gdkdevicetool.h> 37 38 G_BEGIN_DECLS 39 40 41 #define GDK_TYPE_EVENT (gdk_event_get_type ()) 42 #define GDK_TYPE_EVENT_SEQUENCE (gdk_event_sequence_get_type ()) 43 44 #define GDK_IS_EVENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_EVENT)) 45 #define GDK_EVENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_EVENT, GdkEvent)) 46 47 #define GDK_IS_EVENT_TYPE(event, type) (gdk_event_get_event_type ((event)) == (type)) 48 49 /** 50 * GDK_PRIORITY_EVENTS: (value 0) 51 * 52 * This is the priority that events from the X server are given in the main loop. 53 */ 54 #define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT) 55 56 /** 57 * GDK_PRIORITY_REDRAW: (value 120) 58 * 59 * This is the priority that the idle handler processing surface updates 60 * is given in the main loop. 61 */ 62 #define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20) 63 64 /** 65 * GDK_EVENT_PROPAGATE: 66 * 67 * Use this macro as the return value for continuing the propagation of 68 * an event handler. 69 */ 70 #define GDK_EVENT_PROPAGATE (FALSE) 71 72 /** 73 * GDK_EVENT_STOP: 74 * 75 * Use this macro as the return value for stopping the propagation of 76 * an event handler. 77 */ 78 #define GDK_EVENT_STOP (TRUE) 79 80 /** 81 * GDK_BUTTON_PRIMARY: 82 * 83 * The primary button. This is typically the left mouse button, or the 84 * right button in a left-handed setup. 85 */ 86 #define GDK_BUTTON_PRIMARY (1) 87 88 /** 89 * GDK_BUTTON_MIDDLE: 90 * 91 * The middle button. 92 */ 93 #define GDK_BUTTON_MIDDLE (2) 94 95 /** 96 * GDK_BUTTON_SECONDARY: 97 * 98 * The secondary button. This is typically the right mouse button, or the 99 * left button in a left-handed setup. 100 */ 101 #define GDK_BUTTON_SECONDARY (3) 102 103 typedef struct _GdkEventSequence GdkEventSequence; 104 typedef struct _GdkEvent GdkEvent; 105 106 #define GDK_TYPE_BUTTON_EVENT (gdk_button_event_get_type()) 107 #define GDK_TYPE_CROSSING_EVENT (gdk_crossing_event_get_type()) 108 #define GDK_TYPE_DELETE_EVENT (gdk_delete_event_get_type()) 109 #define GDK_TYPE_DND_EVENT (gdk_dnd_event_get_type()) 110 #define GDK_TYPE_FOCUS_EVENT (gdk_focus_event_get_type()) 111 #define GDK_TYPE_GRAB_BROKEN_EVENT (gdk_grab_broken_event_get_type()) 112 #define GDK_TYPE_KEY_EVENT (gdk_key_event_get_type()) 113 #define GDK_TYPE_MOTION_EVENT (gdk_motion_event_get_type()) 114 #define GDK_TYPE_PAD_EVENT (gdk_pad_event_get_type()) 115 #define GDK_TYPE_PROXIMITY_EVENT (gdk_proximity_event_get_type()) 116 #define GDK_TYPE_SCROLL_EVENT (gdk_scroll_event_get_type()) 117 #define GDK_TYPE_TOUCH_EVENT (gdk_touch_event_get_type()) 118 #define GDK_TYPE_TOUCHPAD_EVENT (gdk_touchpad_event_get_type()) 119 120 typedef struct _GdkButtonEvent GdkButtonEvent; 121 typedef struct _GdkCrossingEvent GdkCrossingEvent; 122 typedef struct _GdkDeleteEvent GdkDeleteEvent; 123 typedef struct _GdkDNDEvent GdkDNDEvent; 124 typedef struct _GdkFocusEvent GdkFocusEvent; 125 typedef struct _GdkGrabBrokenEvent GdkGrabBrokenEvent; 126 typedef struct _GdkKeyEvent GdkKeyEvent; 127 typedef struct _GdkMotionEvent GdkMotionEvent; 128 typedef struct _GdkPadEvent GdkPadEvent; 129 typedef struct _GdkProximityEvent GdkProximityEvent; 130 typedef struct _GdkScrollEvent GdkScrollEvent; 131 typedef struct _GdkTouchEvent GdkTouchEvent; 132 typedef struct _GdkTouchpadEvent GdkTouchpadEvent; 133 134 /** 135 * GdkEventType: 136 * @GDK_DELETE: the window manager has requested that the toplevel surface be 137 * hidden or destroyed, usually when the user clicks on a special icon in the 138 * title bar. 139 * @GDK_MOTION_NOTIFY: the pointer (usually a mouse) has moved. 140 * @GDK_BUTTON_PRESS: a mouse button has been pressed. 141 * @GDK_BUTTON_RELEASE: a mouse button has been released. 142 * @GDK_KEY_PRESS: a key has been pressed. 143 * @GDK_KEY_RELEASE: a key has been released. 144 * @GDK_ENTER_NOTIFY: the pointer has entered the surface. 145 * @GDK_LEAVE_NOTIFY: the pointer has left the surface. 146 * @GDK_FOCUS_CHANGE: the keyboard focus has entered or left the surface. 147 * @GDK_PROXIMITY_IN: an input device has moved into contact with a sensing 148 * surface (e.g. a touchscreen or graphics tablet). 149 * @GDK_PROXIMITY_OUT: an input device has moved out of contact with a sensing 150 * surface. 151 * @GDK_DRAG_ENTER: the mouse has entered the surface while a drag is in progress. 152 * @GDK_DRAG_LEAVE: the mouse has left the surface while a drag is in progress. 153 * @GDK_DRAG_MOTION: the mouse has moved in the surface while a drag is in 154 * progress. 155 * @GDK_DROP_START: a drop operation onto the surface has started. 156 * @GDK_SCROLL: the scroll wheel was turned 157 * @GDK_GRAB_BROKEN: a pointer or keyboard grab was broken. 158 * @GDK_TOUCH_BEGIN: A new touch event sequence has just started. 159 * @GDK_TOUCH_UPDATE: A touch event sequence has been updated. 160 * @GDK_TOUCH_END: A touch event sequence has finished. 161 * @GDK_TOUCH_CANCEL: A touch event sequence has been canceled. 162 * @GDK_TOUCHPAD_SWIPE: A touchpad swipe gesture event, the current state 163 * is determined by its phase field. 164 * @GDK_TOUCHPAD_PINCH: A touchpad pinch gesture event, the current state 165 * is determined by its phase field. 166 * @GDK_PAD_BUTTON_PRESS: A tablet pad button press event. 167 * @GDK_PAD_BUTTON_RELEASE: A tablet pad button release event. 168 * @GDK_PAD_RING: A tablet pad axis event from a "ring". 169 * @GDK_PAD_STRIP: A tablet pad axis event from a "strip". 170 * @GDK_PAD_GROUP_MODE: A tablet pad group mode change. 171 * @GDK_EVENT_LAST: marks the end of the GdkEventType enumeration. 172 * 173 * Specifies the type of the event. 174 */ 175 typedef enum 176 { 177 GDK_DELETE, 178 GDK_MOTION_NOTIFY, 179 GDK_BUTTON_PRESS, 180 GDK_BUTTON_RELEASE, 181 GDK_KEY_PRESS, 182 GDK_KEY_RELEASE, 183 GDK_ENTER_NOTIFY, 184 GDK_LEAVE_NOTIFY, 185 GDK_FOCUS_CHANGE, 186 GDK_PROXIMITY_IN, 187 GDK_PROXIMITY_OUT, 188 GDK_DRAG_ENTER, 189 GDK_DRAG_LEAVE, 190 GDK_DRAG_MOTION, 191 GDK_DROP_START, 192 GDK_SCROLL, 193 GDK_GRAB_BROKEN, 194 GDK_TOUCH_BEGIN, 195 GDK_TOUCH_UPDATE, 196 GDK_TOUCH_END, 197 GDK_TOUCH_CANCEL, 198 GDK_TOUCHPAD_SWIPE, 199 GDK_TOUCHPAD_PINCH, 200 GDK_PAD_BUTTON_PRESS, 201 GDK_PAD_BUTTON_RELEASE, 202 GDK_PAD_RING, 203 GDK_PAD_STRIP, 204 GDK_PAD_GROUP_MODE, 205 GDK_EVENT_LAST /* helper variable for decls */ 206 } GdkEventType; 207 208 /** 209 * GdkTouchpadGesturePhase: 210 * @GDK_TOUCHPAD_GESTURE_PHASE_BEGIN: The gesture has begun. 211 * @GDK_TOUCHPAD_GESTURE_PHASE_UPDATE: The gesture has been updated. 212 * @GDK_TOUCHPAD_GESTURE_PHASE_END: The gesture was finished, changes 213 * should be permanently applied. 214 * @GDK_TOUCHPAD_GESTURE_PHASE_CANCEL: The gesture was cancelled, all 215 * changes should be undone. 216 * 217 * Specifies the current state of a touchpad gesture. 218 * 219 * All gestures are guaranteed to begin with an event with phase 220 * %GDK_TOUCHPAD_GESTURE_PHASE_BEGIN, followed by 0 or several events 221 * with phase %GDK_TOUCHPAD_GESTURE_PHASE_UPDATE. 222 * 223 * A finished gesture may have 2 possible outcomes, an event with phase 224 * %GDK_TOUCHPAD_GESTURE_PHASE_END will be emitted when the gesture is 225 * considered successful, this should be used as the hint to perform any 226 * permanent changes. 227 228 * Cancelled gestures may be so for a variety of reasons, due to hardware 229 * or the compositor, or due to the gesture recognition layers hinting the 230 * gesture did not finish resolutely (eg. a 3rd finger being added during 231 * a pinch gesture). In these cases, the last event will report the phase 232 * %GDK_TOUCHPAD_GESTURE_PHASE_CANCEL, this should be used as a hint 233 * to undo any visible/permanent changes that were done throughout the 234 * progress of the gesture. 235 */ 236 typedef enum 237 { 238 GDK_TOUCHPAD_GESTURE_PHASE_BEGIN, 239 GDK_TOUCHPAD_GESTURE_PHASE_UPDATE, 240 GDK_TOUCHPAD_GESTURE_PHASE_END, 241 GDK_TOUCHPAD_GESTURE_PHASE_CANCEL 242 } GdkTouchpadGesturePhase; 243 244 /** 245 * GdkScrollDirection: 246 * @GDK_SCROLL_UP: the surface is scrolled up. 247 * @GDK_SCROLL_DOWN: the surface is scrolled down. 248 * @GDK_SCROLL_LEFT: the surface is scrolled to the left. 249 * @GDK_SCROLL_RIGHT: the surface is scrolled to the right. 250 * @GDK_SCROLL_SMOOTH: the scrolling is determined by the delta values 251 * in scroll events. See gdk_scroll_event_get_deltas() 252 * 253 * Specifies the direction for scroll events. 254 */ 255 typedef enum 256 { 257 GDK_SCROLL_UP, 258 GDK_SCROLL_DOWN, 259 GDK_SCROLL_LEFT, 260 GDK_SCROLL_RIGHT, 261 GDK_SCROLL_SMOOTH 262 } GdkScrollDirection; 263 264 /** 265 * GdkNotifyType: 266 * @GDK_NOTIFY_ANCESTOR: the surface is entered from an ancestor or 267 * left towards an ancestor. 268 * @GDK_NOTIFY_VIRTUAL: the pointer moves between an ancestor and an 269 * inferior of the surface. 270 * @GDK_NOTIFY_INFERIOR: the surface is entered from an inferior or 271 * left towards an inferior. 272 * @GDK_NOTIFY_NONLINEAR: the surface is entered from or left towards 273 * a surface which is neither an ancestor nor an inferior. 274 * @GDK_NOTIFY_NONLINEAR_VIRTUAL: the pointer moves between two surfaces 275 * which are not ancestors of each other and the surface is part of 276 * the ancestor chain between one of these surfaces and their least 277 * common ancestor. 278 * @GDK_NOTIFY_UNKNOWN: an unknown type of enter/leave event occurred. 279 * 280 * Specifies the kind of crossing for enter and leave events. 281 * 282 * See the X11 protocol specification of LeaveNotify for 283 * full details of crossing event generation. 284 */ 285 typedef enum 286 { 287 GDK_NOTIFY_ANCESTOR = 0, 288 GDK_NOTIFY_VIRTUAL = 1, 289 GDK_NOTIFY_INFERIOR = 2, 290 GDK_NOTIFY_NONLINEAR = 3, 291 GDK_NOTIFY_NONLINEAR_VIRTUAL = 4, 292 GDK_NOTIFY_UNKNOWN = 5 293 } GdkNotifyType; 294 295 /** 296 * GdkCrossingMode: 297 * @GDK_CROSSING_NORMAL: crossing because of pointer motion. 298 * @GDK_CROSSING_GRAB: crossing because a grab is activated. 299 * @GDK_CROSSING_UNGRAB: crossing because a grab is deactivated. 300 * @GDK_CROSSING_GTK_GRAB: crossing because a GTK grab is activated. 301 * @GDK_CROSSING_GTK_UNGRAB: crossing because a GTK grab is deactivated. 302 * @GDK_CROSSING_STATE_CHANGED: crossing because a GTK widget changed 303 * state (e.g. sensitivity). 304 * @GDK_CROSSING_TOUCH_BEGIN: crossing because a touch sequence has begun, 305 * this event is synthetic as the pointer might have not left the surface. 306 * @GDK_CROSSING_TOUCH_END: crossing because a touch sequence has ended, 307 * this event is synthetic as the pointer might have not left the surface. 308 * @GDK_CROSSING_DEVICE_SWITCH: crossing because of a device switch (i.e. 309 * a mouse taking control of the pointer after a touch device), this event 310 * is synthetic as the pointer didn’t leave the surface. 311 * 312 * Specifies the crossing mode for enter and leave events. 313 */ 314 typedef enum 315 { 316 GDK_CROSSING_NORMAL, 317 GDK_CROSSING_GRAB, 318 GDK_CROSSING_UNGRAB, 319 GDK_CROSSING_GTK_GRAB, 320 GDK_CROSSING_GTK_UNGRAB, 321 GDK_CROSSING_STATE_CHANGED, 322 GDK_CROSSING_TOUCH_BEGIN, 323 GDK_CROSSING_TOUCH_END, 324 GDK_CROSSING_DEVICE_SWITCH 325 } GdkCrossingMode; 326 327 GDK_AVAILABLE_IN_ALL 328 GType gdk_event_get_type (void) G_GNUC_CONST; 329 GDK_AVAILABLE_IN_ALL 330 GType gdk_event_sequence_get_type (void) G_GNUC_CONST; 331 332 GDK_AVAILABLE_IN_ALL 333 GdkEvent * gdk_event_ref (GdkEvent *event); 334 GDK_AVAILABLE_IN_ALL 335 void gdk_event_unref (GdkEvent *event); 336 337 GDK_AVAILABLE_IN_ALL 338 GdkEventType gdk_event_get_event_type (GdkEvent *event); 339 340 GDK_AVAILABLE_IN_ALL 341 GdkSurface * gdk_event_get_surface (GdkEvent *event); 342 343 GDK_AVAILABLE_IN_ALL 344 GdkSeat * gdk_event_get_seat (GdkEvent *event); 345 346 GDK_AVAILABLE_IN_ALL 347 GdkDevice * gdk_event_get_device (GdkEvent *event); 348 349 GDK_AVAILABLE_IN_ALL 350 GdkDeviceTool * gdk_event_get_device_tool (GdkEvent *event); 351 352 GDK_AVAILABLE_IN_ALL 353 guint32 gdk_event_get_time (GdkEvent *event); 354 355 GDK_AVAILABLE_IN_ALL 356 GdkDisplay * gdk_event_get_display (GdkEvent *event); 357 358 GDK_AVAILABLE_IN_ALL 359 GdkEventSequence * gdk_event_get_event_sequence (GdkEvent *event); 360 361 GDK_AVAILABLE_IN_ALL 362 GdkModifierType gdk_event_get_modifier_state (GdkEvent *event); 363 364 GDK_AVAILABLE_IN_ALL 365 gboolean gdk_event_get_position (GdkEvent *event, 366 double *x, 367 double *y); 368 GDK_AVAILABLE_IN_ALL 369 gboolean gdk_event_get_axes (GdkEvent *event, 370 double **axes, 371 guint *n_axes); 372 GDK_AVAILABLE_IN_ALL 373 gboolean gdk_event_get_axis (GdkEvent *event, 374 GdkAxisUse axis_use, 375 double *value); 376 GDK_AVAILABLE_IN_ALL 377 GdkTimeCoord * gdk_event_get_history (GdkEvent *event, 378 guint *out_n_coords); 379 GDK_AVAILABLE_IN_ALL 380 gboolean gdk_event_get_pointer_emulated (GdkEvent *event); 381 382 GDK_AVAILABLE_IN_ALL 383 GType gdk_button_event_get_type (void) G_GNUC_CONST; 384 GDK_AVAILABLE_IN_ALL 385 guint gdk_button_event_get_button (GdkEvent *event); 386 GDK_AVAILABLE_IN_ALL 387 GType gdk_scroll_event_get_type (void) G_GNUC_CONST; 388 GDK_AVAILABLE_IN_ALL 389 GdkScrollDirection gdk_scroll_event_get_direction (GdkEvent *event); 390 GDK_AVAILABLE_IN_ALL 391 void gdk_scroll_event_get_deltas (GdkEvent *event, 392 double *delta_x, 393 double *delta_y); 394 395 GDK_AVAILABLE_IN_ALL 396 gboolean gdk_scroll_event_is_stop (GdkEvent *event); 397 GDK_AVAILABLE_IN_ALL 398 GType gdk_key_event_get_type (void) G_GNUC_CONST; 399 GDK_AVAILABLE_IN_ALL 400 guint gdk_key_event_get_keyval (GdkEvent *event); 401 GDK_AVAILABLE_IN_ALL 402 guint gdk_key_event_get_keycode (GdkEvent *event); 403 GDK_AVAILABLE_IN_ALL 404 GdkModifierType gdk_key_event_get_consumed_modifiers (GdkEvent *event); 405 GDK_AVAILABLE_IN_ALL 406 guint gdk_key_event_get_layout (GdkEvent *event); 407 GDK_AVAILABLE_IN_ALL 408 guint gdk_key_event_get_level (GdkEvent *event); 409 GDK_AVAILABLE_IN_ALL 410 gboolean gdk_key_event_is_modifier (GdkEvent *event); 411 GDK_AVAILABLE_IN_ALL 412 GType gdk_focus_event_get_type (void) G_GNUC_CONST; 413 GDK_AVAILABLE_IN_ALL 414 gboolean gdk_focus_event_get_in (GdkEvent *event); 415 GDK_AVAILABLE_IN_ALL 416 GType gdk_touch_event_get_type (void) G_GNUC_CONST; 417 GDK_AVAILABLE_IN_ALL 418 gboolean gdk_touch_event_get_emulating_pointer (GdkEvent *event); 419 GDK_AVAILABLE_IN_ALL 420 GType gdk_crossing_event_get_type (void) G_GNUC_CONST; 421 GDK_AVAILABLE_IN_ALL 422 GdkCrossingMode gdk_crossing_event_get_mode (GdkEvent *event); 423 GDK_AVAILABLE_IN_ALL 424 GdkNotifyType gdk_crossing_event_get_detail (GdkEvent *event); 425 GDK_AVAILABLE_IN_ALL 426 gboolean gdk_crossing_event_get_focus (GdkEvent *event); 427 GDK_AVAILABLE_IN_ALL 428 GType gdk_touchpad_event_get_type (void) G_GNUC_CONST; 429 GDK_AVAILABLE_IN_ALL 430 GdkTouchpadGesturePhase 431 gdk_touchpad_event_get_gesture_phase (GdkEvent *event); 432 GDK_AVAILABLE_IN_ALL 433 guint gdk_touchpad_event_get_n_fingers (GdkEvent *event); 434 GDK_AVAILABLE_IN_ALL 435 void gdk_touchpad_event_get_deltas (GdkEvent *event, 436 double *dx, 437 double *dy); 438 GDK_AVAILABLE_IN_ALL 439 double gdk_touchpad_event_get_pinch_angle_delta (GdkEvent *event); 440 GDK_AVAILABLE_IN_ALL 441 double gdk_touchpad_event_get_pinch_scale (GdkEvent *event); 442 GDK_AVAILABLE_IN_ALL 443 GType gdk_pad_event_get_type (void) G_GNUC_CONST; 444 GDK_AVAILABLE_IN_ALL 445 guint gdk_pad_event_get_button (GdkEvent *event); 446 GDK_AVAILABLE_IN_ALL 447 void gdk_pad_event_get_axis_value (GdkEvent *event, 448 guint *index, 449 double *value); 450 GDK_AVAILABLE_IN_ALL 451 void gdk_pad_event_get_group_mode (GdkEvent *event, 452 guint *group, 453 guint *mode); 454 GDK_AVAILABLE_IN_ALL 455 GType gdk_dnd_event_get_type (void) G_GNUC_CONST; 456 GDK_AVAILABLE_IN_ALL 457 GdkDrop * gdk_dnd_event_get_drop (GdkEvent *event); 458 GDK_AVAILABLE_IN_ALL 459 GType gdk_grab_broken_event_get_type (void) G_GNUC_CONST; 460 GDK_AVAILABLE_IN_ALL 461 GdkSurface * gdk_grab_broken_event_get_grab_surface (GdkEvent *event); 462 GDK_AVAILABLE_IN_ALL 463 gboolean gdk_grab_broken_event_get_implicit (GdkEvent *event); 464 465 GDK_AVAILABLE_IN_ALL 466 GType gdk_motion_event_get_type (void) G_GNUC_CONST; 467 468 GDK_AVAILABLE_IN_ALL 469 GType gdk_delete_event_get_type (void) G_GNUC_CONST; 470 GDK_AVAILABLE_IN_ALL 471 GType gdk_proximity_event_get_type (void) G_GNUC_CONST; 472 473 GDK_AVAILABLE_IN_ALL 474 gboolean gdk_event_triggers_context_menu (GdkEvent *event); 475 476 GDK_AVAILABLE_IN_ALL 477 gboolean gdk_events_get_distance (GdkEvent *event1, 478 GdkEvent *event2, 479 double *distance); 480 GDK_AVAILABLE_IN_ALL 481 gboolean gdk_events_get_angle (GdkEvent *event1, 482 GdkEvent *event2, 483 double *angle); 484 GDK_AVAILABLE_IN_ALL 485 gboolean gdk_events_get_center (GdkEvent *event1, 486 GdkEvent *event2, 487 double *x, 488 double *y); 489 490 /** 491 * GdkKeyMatch: 492 * @GDK_KEY_MATCH_NONE: The key event does not match 493 * @GDK_KEY_MATCH_PARTIAL: The key event matches if keyboard state 494 * (specifically, the currently active group) is ignored 495 * @GDK_KEY_MATCH_EXACT: The key event matches 496 * 497 * Describes how well an event matches a given keyval and modifiers. 498 * 499 * `GdkKeyMatch` values are returned by [method@Gdk.KeyEvent.matches]. 500 */ 501 typedef enum { 502 GDK_KEY_MATCH_NONE, 503 GDK_KEY_MATCH_PARTIAL, 504 GDK_KEY_MATCH_EXACT 505 } GdkKeyMatch; 506 507 GDK_AVAILABLE_IN_ALL 508 GdkKeyMatch gdk_key_event_matches (GdkEvent *event, 509 guint keyval, 510 GdkModifierType modifiers); 511 512 GDK_AVAILABLE_IN_ALL 513 gboolean gdk_key_event_get_match (GdkEvent *event, 514 guint *keyval, 515 GdkModifierType *modifiers); 516 517 G_END_DECLS 518 519 #endif /* __GDK_EVENTS_H__ */ 520