1package X11::Xlib::XEvent; 2use strict; 3use warnings; 4use X11::Xlib; # need constants loaded 5use parent 'X11::Xlib::Struct'; 6 7# All modules in dist share a version 8BEGIN { our $VERSION= $X11::Xlib::VERSION; } 9 10=head1 NAME 11 12X11::Xlib::XEvent - Polymorphic class for XEvent structures 13 14=head1 DESCRiPTION 15 16This object wraps an XEvent. XEvent is a union of many different C structs, 17though they all share a few common fields. The storage space of an XEvent is 18constant regardless of type, and so this class is backed by a simple scalar 19ref. 20 21The active struct of the union is determined by the L</type> field. This object 22heirarchy attempts to help you make correct usage of the union with respect to 23the current C<type>, so as you change the value of C<type> the object will 24automatically re-bless itself into the appropriate subclass, giving you access 25to new struct fields. 26 27Most of the "magic" occurs from Perl code, not XS, so it is possible to define 28new event types if this module lacks any in your local copy of Xlib. You can 29also access the L</bytes> directly any time you want. And, you don't even have 30to use this object at all; any scalar or scalarref of the correct length can be 31passed to the L<X11::Xlib> methods that expect an XEvent pointer. 32 33=head1 METHODS 34 35=head2 new 36 37 my $xevent= X11::Xlib::XEvent->new(); 38 my $xevent= X11::Xlib::XEvent->new( %fields ); 39 my $xevent= X11::Xlib::XEvent->new( \%fields ); 40 41You can construct XEvent as an empty buffer, or initialize it with a hash or 42hashref of fields. Initialization is performed via L</pack>. Un-set fields 43are initialized to zero, and the L</bytes> is always padded to the length 44of an XEvent. 45 46=head2 bytes 47 48Direct access to the bytes of the XEvent. 49 50=head2 apply 51 52 $xevent->apply( %fields ); 53 54Alias for C< pack( \%fields, 1, 1 ) > 55 56=head2 pack 57 58 $xevent->pack( \%fields, $consume, $warn ); 59 60Assign a set of fields to the packed struct, optionally removing them from 61the hashref (C<$consume>) and warning about un-known names (C<$warn>). 62If you supply a new value for L</type>, the XEvent will get re-blessed to 63the appropriate type and all union-specific fields will be zeroed before 64applying the rest of the supplied fields. 65 66=head2 unpack 67 68 my $field_hashref= $xevent->unpack; 69 70Unpack the fields of an XEvent into a hashref. The Display field gets 71inflated to an X11::Xlib object. 72 73=head2 summarize 74 75Return a human-readable string describing the Event. The format is intended 76to be readable by humans, and is subject to change. 77 78=head1 COMMON ATTRIBUTES 79 80All XEvent subclasses have the following attributes: 81 82=head2 type 83 84This is the key attribute that determines all the rest. Setting this value 85will re-bless the object to the relevant sub-class. If the type is unknown, 86it becomes C<X11::Xlib::XEvent>. 87 88=head2 display 89 90The handle to the X11 connection that this message came from. 91 92=head2 serial 93 94The X11 serial number 95 96=head2 send_event 97 98Boolean indicating whether the event was sent with C<XSendEvent> 99 100=head1 SUBCLASS ATTRIBUTES 101 102For detailed information about these structures, consult the 103L<official documentation|https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html> 104 105=cut 106 107sub pack { 108 my $self= shift; 109 # As a special case, convert type enum codes into numeric values 110 if (my $type= $_[0]{type}) { 111 unless ($type =~ /^[0-9]+$/) { 112 # Look up the symbolic constant 113 if (grep { $_ eq $type } @{ $X11::Xlib::EXPORT_TAGS{const_event} }) { 114 $_[0]{type}= X11::Xlib->$type(); 115 } else { 116 Carp::croak "Unknown XEvent type '$type'"; 117 } 118 } 119 } 120 $self->SUPER::pack(@_); 121} 122 123sub summarize { 124 my $self= shift; 125 my $fields= $self->unpack; 126 my $str= (split '::', ref($self))[-1]; 127 my $dpy= delete $fields->{display}; 128 $str .= ' display:conn'.$dpy->ConnectionNumber if $dpy; 129 join(' ', $str, map { "$_:$fields->{$_}" } sort keys %$fields); 130} 131 132sub X11::Xlib::XErrorEvent::summarize { 133 my $self= shift; 134 if (my $dpy= $self->display) { 135 my $err= $self->error_code; 136 my $major= $self->request_code; 137 my $minor= $self->minor_code; 138 my $res= $self->resourceid; 139 return sprintf("XErrorEvent display:conn%d error:%d (%s) request:%d.%d (%s) resource:0x%X (%d) serial:%d", 140 $dpy->ConnectionNumber, $err, 141 $dpy->XGetErrorDatabaseText("XProtoError", $err, $err), 142 $major, $minor, 143 ($major < 128? $dpy->XGetErrorDatabaseText("XRequest", $major) 144 : $dpy->XGetErrorDatabaseText("XRequest", $dpy->_extension_for_opcode($major).'.'.$minor) 145 || $dpy->_extension_for_opcode($major).' method '.$minor 146 ), 147 $res, $res, $self->serial); 148 } 149 $self->SUPER::summarize(); 150} 151 152# ---------------------------------------------------------------------------- 153# BEGIN GENERATED X11_Xlib_XEvent 154 155 156 157@X11::Xlib::XButtonEvent::ISA= ( __PACKAGE__ ); 158*X11::Xlib::XButtonEvent::button= *_button; 159*X11::Xlib::XButtonEvent::root= *_root; 160*X11::Xlib::XButtonEvent::same_screen= *_same_screen; 161*X11::Xlib::XButtonEvent::state= *_state; 162*X11::Xlib::XButtonEvent::subwindow= *_subwindow; 163*X11::Xlib::XButtonEvent::time= *_time; 164*X11::Xlib::XButtonEvent::window= *_window; 165*X11::Xlib::XButtonEvent::x= *_x; 166*X11::Xlib::XButtonEvent::x_root= *_x_root; 167*X11::Xlib::XButtonEvent::y= *_y; 168*X11::Xlib::XButtonEvent::y_root= *_y_root; 169 170 171@X11::Xlib::XCirculateEvent::ISA= ( __PACKAGE__ ); 172*X11::Xlib::XCirculateEvent::event= *_event; 173*X11::Xlib::XCirculateEvent::place= *_place; 174*X11::Xlib::XCirculateEvent::window= *_window; 175 176 177@X11::Xlib::XCirculateRequestEvent::ISA= ( __PACKAGE__ ); 178*X11::Xlib::XCirculateRequestEvent::parent= *_parent; 179*X11::Xlib::XCirculateRequestEvent::place= *_place; 180*X11::Xlib::XCirculateRequestEvent::window= *_window; 181 182 183@X11::Xlib::XClientMessageEvent::ISA= ( __PACKAGE__ ); 184*X11::Xlib::XClientMessageEvent::b= *_b; 185*X11::Xlib::XClientMessageEvent::l= *_l; 186*X11::Xlib::XClientMessageEvent::s= *_s; 187*X11::Xlib::XClientMessageEvent::format= *_format; 188*X11::Xlib::XClientMessageEvent::message_type= *_message_type; 189*X11::Xlib::XClientMessageEvent::window= *_window; 190 191 192@X11::Xlib::XColormapEvent::ISA= ( __PACKAGE__ ); 193*X11::Xlib::XColormapEvent::colormap= *_colormap; 194*X11::Xlib::XColormapEvent::new= *_new; 195*X11::Xlib::XColormapEvent::state= *_state; 196*X11::Xlib::XColormapEvent::window= *_window; 197 198 199@X11::Xlib::XConfigureEvent::ISA= ( __PACKAGE__ ); 200*X11::Xlib::XConfigureEvent::above= *_above; 201*X11::Xlib::XConfigureEvent::border_width= *_border_width; 202*X11::Xlib::XConfigureEvent::event= *_event; 203*X11::Xlib::XConfigureEvent::height= *_height; 204*X11::Xlib::XConfigureEvent::override_redirect= *_override_redirect; 205*X11::Xlib::XConfigureEvent::width= *_width; 206*X11::Xlib::XConfigureEvent::window= *_window; 207*X11::Xlib::XConfigureEvent::x= *_x; 208*X11::Xlib::XConfigureEvent::y= *_y; 209 210 211@X11::Xlib::XConfigureRequestEvent::ISA= ( __PACKAGE__ ); 212*X11::Xlib::XConfigureRequestEvent::above= *_above; 213*X11::Xlib::XConfigureRequestEvent::border_width= *_border_width; 214*X11::Xlib::XConfigureRequestEvent::detail= *_detail; 215*X11::Xlib::XConfigureRequestEvent::height= *_height; 216*X11::Xlib::XConfigureRequestEvent::parent= *_parent; 217*X11::Xlib::XConfigureRequestEvent::value_mask= *_value_mask; 218*X11::Xlib::XConfigureRequestEvent::width= *_width; 219*X11::Xlib::XConfigureRequestEvent::window= *_window; 220*X11::Xlib::XConfigureRequestEvent::x= *_x; 221*X11::Xlib::XConfigureRequestEvent::y= *_y; 222 223 224@X11::Xlib::XCreateWindowEvent::ISA= ( __PACKAGE__ ); 225*X11::Xlib::XCreateWindowEvent::border_width= *_border_width; 226*X11::Xlib::XCreateWindowEvent::height= *_height; 227*X11::Xlib::XCreateWindowEvent::override_redirect= *_override_redirect; 228*X11::Xlib::XCreateWindowEvent::parent= *_parent; 229*X11::Xlib::XCreateWindowEvent::width= *_width; 230*X11::Xlib::XCreateWindowEvent::window= *_window; 231*X11::Xlib::XCreateWindowEvent::x= *_x; 232*X11::Xlib::XCreateWindowEvent::y= *_y; 233 234 235@X11::Xlib::XCrossingEvent::ISA= ( __PACKAGE__ ); 236*X11::Xlib::XCrossingEvent::detail= *_detail; 237*X11::Xlib::XCrossingEvent::focus= *_focus; 238*X11::Xlib::XCrossingEvent::mode= *_mode; 239*X11::Xlib::XCrossingEvent::root= *_root; 240*X11::Xlib::XCrossingEvent::same_screen= *_same_screen; 241*X11::Xlib::XCrossingEvent::state= *_state; 242*X11::Xlib::XCrossingEvent::subwindow= *_subwindow; 243*X11::Xlib::XCrossingEvent::time= *_time; 244*X11::Xlib::XCrossingEvent::window= *_window; 245*X11::Xlib::XCrossingEvent::x= *_x; 246*X11::Xlib::XCrossingEvent::x_root= *_x_root; 247*X11::Xlib::XCrossingEvent::y= *_y; 248*X11::Xlib::XCrossingEvent::y_root= *_y_root; 249 250 251@X11::Xlib::XDestroyWindowEvent::ISA= ( __PACKAGE__ ); 252*X11::Xlib::XDestroyWindowEvent::event= *_event; 253*X11::Xlib::XDestroyWindowEvent::window= *_window; 254 255 256@X11::Xlib::XErrorEvent::ISA= ( __PACKAGE__ ); 257*X11::Xlib::XErrorEvent::error_code= *_error_code; 258*X11::Xlib::XErrorEvent::minor_code= *_minor_code; 259*X11::Xlib::XErrorEvent::request_code= *_request_code; 260*X11::Xlib::XErrorEvent::resourceid= *_resourceid; 261 262 263@X11::Xlib::XExposeEvent::ISA= ( __PACKAGE__ ); 264*X11::Xlib::XExposeEvent::count= *_count; 265*X11::Xlib::XExposeEvent::height= *_height; 266*X11::Xlib::XExposeEvent::width= *_width; 267*X11::Xlib::XExposeEvent::window= *_window; 268*X11::Xlib::XExposeEvent::x= *_x; 269*X11::Xlib::XExposeEvent::y= *_y; 270 271 272@X11::Xlib::XFocusChangeEvent::ISA= ( __PACKAGE__ ); 273*X11::Xlib::XFocusChangeEvent::detail= *_detail; 274*X11::Xlib::XFocusChangeEvent::mode= *_mode; 275*X11::Xlib::XFocusChangeEvent::window= *_window; 276 277 278@X11::Xlib::XGenericEvent::ISA= ( __PACKAGE__ ); 279*X11::Xlib::XGenericEvent::evtype= *_evtype; 280*X11::Xlib::XGenericEvent::extension= *_extension; 281 282 283@X11::Xlib::XGraphicsExposeEvent::ISA= ( __PACKAGE__ ); 284*X11::Xlib::XGraphicsExposeEvent::count= *_count; 285*X11::Xlib::XGraphicsExposeEvent::drawable= *_drawable; 286*X11::Xlib::XGraphicsExposeEvent::height= *_height; 287*X11::Xlib::XGraphicsExposeEvent::major_code= *_major_code; 288*X11::Xlib::XGraphicsExposeEvent::minor_code= *_minor_code; 289*X11::Xlib::XGraphicsExposeEvent::width= *_width; 290*X11::Xlib::XGraphicsExposeEvent::x= *_x; 291*X11::Xlib::XGraphicsExposeEvent::y= *_y; 292 293 294@X11::Xlib::XGravityEvent::ISA= ( __PACKAGE__ ); 295*X11::Xlib::XGravityEvent::event= *_event; 296*X11::Xlib::XGravityEvent::window= *_window; 297*X11::Xlib::XGravityEvent::x= *_x; 298*X11::Xlib::XGravityEvent::y= *_y; 299 300 301@X11::Xlib::XKeyEvent::ISA= ( __PACKAGE__ ); 302*X11::Xlib::XKeyEvent::keycode= *_keycode; 303*X11::Xlib::XKeyEvent::root= *_root; 304*X11::Xlib::XKeyEvent::same_screen= *_same_screen; 305*X11::Xlib::XKeyEvent::state= *_state; 306*X11::Xlib::XKeyEvent::subwindow= *_subwindow; 307*X11::Xlib::XKeyEvent::time= *_time; 308*X11::Xlib::XKeyEvent::window= *_window; 309*X11::Xlib::XKeyEvent::x= *_x; 310*X11::Xlib::XKeyEvent::x_root= *_x_root; 311*X11::Xlib::XKeyEvent::y= *_y; 312*X11::Xlib::XKeyEvent::y_root= *_y_root; 313 314 315@X11::Xlib::XKeymapEvent::ISA= ( __PACKAGE__ ); 316*X11::Xlib::XKeymapEvent::key_vector= *_key_vector; 317*X11::Xlib::XKeymapEvent::window= *_window; 318 319 320@X11::Xlib::XMapEvent::ISA= ( __PACKAGE__ ); 321*X11::Xlib::XMapEvent::event= *_event; 322*X11::Xlib::XMapEvent::override_redirect= *_override_redirect; 323*X11::Xlib::XMapEvent::window= *_window; 324 325 326@X11::Xlib::XMapRequestEvent::ISA= ( __PACKAGE__ ); 327*X11::Xlib::XMapRequestEvent::parent= *_parent; 328*X11::Xlib::XMapRequestEvent::window= *_window; 329 330 331@X11::Xlib::XMappingEvent::ISA= ( __PACKAGE__ ); 332*X11::Xlib::XMappingEvent::count= *_count; 333*X11::Xlib::XMappingEvent::first_keycode= *_first_keycode; 334*X11::Xlib::XMappingEvent::request= *_request; 335*X11::Xlib::XMappingEvent::window= *_window; 336 337 338@X11::Xlib::XMotionEvent::ISA= ( __PACKAGE__ ); 339*X11::Xlib::XMotionEvent::is_hint= *_is_hint; 340*X11::Xlib::XMotionEvent::root= *_root; 341*X11::Xlib::XMotionEvent::same_screen= *_same_screen; 342*X11::Xlib::XMotionEvent::state= *_state; 343*X11::Xlib::XMotionEvent::subwindow= *_subwindow; 344*X11::Xlib::XMotionEvent::time= *_time; 345*X11::Xlib::XMotionEvent::window= *_window; 346*X11::Xlib::XMotionEvent::x= *_x; 347*X11::Xlib::XMotionEvent::x_root= *_x_root; 348*X11::Xlib::XMotionEvent::y= *_y; 349*X11::Xlib::XMotionEvent::y_root= *_y_root; 350 351 352@X11::Xlib::XNoExposeEvent::ISA= ( __PACKAGE__ ); 353*X11::Xlib::XNoExposeEvent::drawable= *_drawable; 354*X11::Xlib::XNoExposeEvent::major_code= *_major_code; 355*X11::Xlib::XNoExposeEvent::minor_code= *_minor_code; 356 357 358@X11::Xlib::XPropertyEvent::ISA= ( __PACKAGE__ ); 359*X11::Xlib::XPropertyEvent::atom= *_atom; 360*X11::Xlib::XPropertyEvent::state= *_state; 361*X11::Xlib::XPropertyEvent::time= *_time; 362*X11::Xlib::XPropertyEvent::window= *_window; 363 364 365@X11::Xlib::XReparentEvent::ISA= ( __PACKAGE__ ); 366*X11::Xlib::XReparentEvent::event= *_event; 367*X11::Xlib::XReparentEvent::override_redirect= *_override_redirect; 368*X11::Xlib::XReparentEvent::parent= *_parent; 369*X11::Xlib::XReparentEvent::window= *_window; 370*X11::Xlib::XReparentEvent::x= *_x; 371*X11::Xlib::XReparentEvent::y= *_y; 372 373 374@X11::Xlib::XResizeRequestEvent::ISA= ( __PACKAGE__ ); 375*X11::Xlib::XResizeRequestEvent::height= *_height; 376*X11::Xlib::XResizeRequestEvent::width= *_width; 377*X11::Xlib::XResizeRequestEvent::window= *_window; 378 379 380@X11::Xlib::XSelectionClearEvent::ISA= ( __PACKAGE__ ); 381*X11::Xlib::XSelectionClearEvent::selection= *_selection; 382*X11::Xlib::XSelectionClearEvent::time= *_time; 383*X11::Xlib::XSelectionClearEvent::window= *_window; 384 385 386@X11::Xlib::XSelectionEvent::ISA= ( __PACKAGE__ ); 387*X11::Xlib::XSelectionEvent::property= *_property; 388*X11::Xlib::XSelectionEvent::requestor= *_requestor; 389*X11::Xlib::XSelectionEvent::selection= *_selection; 390*X11::Xlib::XSelectionEvent::target= *_target; 391*X11::Xlib::XSelectionEvent::time= *_time; 392 393 394@X11::Xlib::XSelectionRequestEvent::ISA= ( __PACKAGE__ ); 395*X11::Xlib::XSelectionRequestEvent::owner= *_owner; 396*X11::Xlib::XSelectionRequestEvent::property= *_property; 397*X11::Xlib::XSelectionRequestEvent::requestor= *_requestor; 398*X11::Xlib::XSelectionRequestEvent::selection= *_selection; 399*X11::Xlib::XSelectionRequestEvent::target= *_target; 400*X11::Xlib::XSelectionRequestEvent::time= *_time; 401 402 403@X11::Xlib::XUnmapEvent::ISA= ( __PACKAGE__ ); 404*X11::Xlib::XUnmapEvent::event= *_event; 405*X11::Xlib::XUnmapEvent::from_configure= *_from_configure; 406*X11::Xlib::XUnmapEvent::window= *_window; 407 408 409@X11::Xlib::XVisibilityEvent::ISA= ( __PACKAGE__ ); 410*X11::Xlib::XVisibilityEvent::state= *_state; 411*X11::Xlib::XVisibilityEvent::window= *_window; 412 413=head2 XButtonEvent 414 415Used for event type: ButtonPress, ButtonRelease 416 417 button - unsigned int 418 root - Window 419 same_screen - Bool 420 state - unsigned int 421 subwindow - Window 422 time - Time 423 window - Window 424 x - int 425 x_root - int 426 y - int 427 y_root - int 428 429=head2 XCirculateEvent 430 431Used for event type: CirculateNotify 432 433 event - Window 434 place - int 435 window - Window 436 437=head2 XCirculateRequestEvent 438 439Used for event type: CirculateRequest 440 441 parent - Window 442 place - int 443 window - Window 444 445=head2 XClientMessageEvent 446 447Used for event type: ClientMessage 448 449 b - char [ 20 ] 450 l - long [ 5 ] 451 s - short [ 10 ] 452 format - int 453 message_type - Atom 454 window - Window 455 456=head2 XColormapEvent 457 458Used for event type: ColormapNotify 459 460 colormap - Colormap 461 new - Bool 462 state - int 463 window - Window 464 465=head2 XConfigureEvent 466 467Used for event type: ConfigureNotify 468 469 above - Window 470 border_width - int 471 event - Window 472 height - int 473 override_redirect - Bool 474 width - int 475 window - Window 476 x - int 477 y - int 478 479=head2 XConfigureRequestEvent 480 481Used for event type: ConfigureRequest 482 483 above - Window 484 border_width - int 485 detail - int 486 height - int 487 parent - Window 488 value_mask - unsigned long 489 width - int 490 window - Window 491 x - int 492 y - int 493 494=head2 XCreateWindowEvent 495 496Used for event type: CreateNotify 497 498 border_width - int 499 height - int 500 override_redirect - Bool 501 parent - Window 502 width - int 503 window - Window 504 x - int 505 y - int 506 507=head2 XCrossingEvent 508 509Used for event type: EnterNotify, LeaveNotify 510 511 detail - int 512 focus - Bool 513 mode - int 514 root - Window 515 same_screen - Bool 516 state - unsigned int 517 subwindow - Window 518 time - Time 519 window - Window 520 x - int 521 x_root - int 522 y - int 523 y_root - int 524 525=head2 XDestroyWindowEvent 526 527Used for event type: DestroyNotify 528 529 event - Window 530 window - Window 531 532=head2 XErrorEvent 533 534Used for event type: 0 535 536 error_code - unsigned char 537 minor_code - unsigned char 538 request_code - unsigned char 539 resourceid - XID 540 541=head2 XExposeEvent 542 543Used for event type: Expose 544 545 count - int 546 height - int 547 width - int 548 window - Window 549 x - int 550 y - int 551 552=head2 XFocusChangeEvent 553 554Used for event type: FocusIn, FocusOut 555 556 detail - int 557 mode - int 558 window - Window 559 560=head2 XGenericEvent 561 562Used for event type: GenericEvent 563 564 evtype - int 565 extension - int 566 567=head2 XGraphicsExposeEvent 568 569Used for event type: GraphicsExpose 570 571 count - int 572 drawable - Drawable 573 height - int 574 major_code - int 575 minor_code - int 576 width - int 577 x - int 578 y - int 579 580=head2 XGravityEvent 581 582Used for event type: GravityNotify 583 584 event - Window 585 window - Window 586 x - int 587 y - int 588 589=head2 XKeyEvent 590 591Used for event type: KeyPress, KeyRelease 592 593 keycode - unsigned int 594 root - Window 595 same_screen - Bool 596 state - unsigned int 597 subwindow - Window 598 time - Time 599 window - Window 600 x - int 601 x_root - int 602 y - int 603 y_root - int 604 605=head2 XKeymapEvent 606 607Used for event type: KeymapNotify 608 609 key_vector - char [ 32 ] 610 window - Window 611 612=head2 XMapEvent 613 614Used for event type: MapNotify 615 616 event - Window 617 override_redirect - Bool 618 window - Window 619 620=head2 XMapRequestEvent 621 622Used for event type: MapRequest 623 624 parent - Window 625 window - Window 626 627=head2 XMappingEvent 628 629Used for event type: MappingNotify 630 631 count - int 632 first_keycode - int 633 request - int 634 window - Window 635 636=head2 XMotionEvent 637 638Used for event type: MotionNotify 639 640 is_hint - char 641 root - Window 642 same_screen - Bool 643 state - unsigned int 644 subwindow - Window 645 time - Time 646 window - Window 647 x - int 648 x_root - int 649 y - int 650 y_root - int 651 652=head2 XNoExposeEvent 653 654Used for event type: NoExpose 655 656 drawable - Drawable 657 major_code - int 658 minor_code - int 659 660=head2 XPropertyEvent 661 662Used for event type: PropertyNotify 663 664 atom - Atom 665 state - int 666 time - Time 667 window - Window 668 669=head2 XReparentEvent 670 671Used for event type: ReparentNotify 672 673 event - Window 674 override_redirect - Bool 675 parent - Window 676 window - Window 677 x - int 678 y - int 679 680=head2 XResizeRequestEvent 681 682Used for event type: ResizeRequest 683 684 height - int 685 width - int 686 window - Window 687 688=head2 XSelectionClearEvent 689 690Used for event type: SelectionClear 691 692 selection - Atom 693 time - Time 694 window - Window 695 696=head2 XSelectionEvent 697 698Used for event type: SelectionNotify 699 700 property - Atom 701 requestor - Window 702 selection - Atom 703 target - Atom 704 time - Time 705 706=head2 XSelectionRequestEvent 707 708Used for event type: SelectionRequest 709 710 owner - Window 711 property - Atom 712 requestor - Window 713 selection - Atom 714 target - Atom 715 time - Time 716 717=head2 XUnmapEvent 718 719Used for event type: UnmapNotify 720 721 event - Window 722 from_configure - Bool 723 window - Window 724 725=head2 XVisibilityEvent 726 727Used for event type: VisibilityNotify 728 729 state - int 730 window - Window 731 732=cut 733 734# END GENERATED X11_Xlib_XEvent 735# ---------------------------------------------------------------------------- 736 7371; 738 739__END__ 740 741=head1 AUTHOR 742 743Olivier Thauvin, E<lt>nanardon@nanardon.zarb.orgE<gt> 744 745Michael Conrad, E<lt>mike@nrdvana.netE<gt> 746 747=head1 COPYRIGHT AND LICENSE 748 749Copyright (C) 2009-2010 by Olivier Thauvin 750 751Copyright (C) 2017 by Michael Conrad 752 753This library is free software; you can redistribute it and/or modify 754it under the same terms as Perl itself, either Perl version 5.10.0 or, 755at your option, any later version of Perl 5 you may have available. 756 757=cut 758