enter_notify and leave_notify Events

The fields that can be unified in enter_notify and leave_notify events are:

  1. type(T) unifies T with enter_notify or leave_notify according to the event.
  2. serial(S) unifies S with the serial number of the last request processed by the server.
  3. send_event(B) unifies B, a boolean value, with one of

    true
    If the event was sent by another client.
    false
    If the event was sent by the server.
  4. display(D) unifies D with the ProXL Display the event was read from.
  5. window(W) unifies W with the ProXL Window that receives the event.
  6. root(R) unifies R with the root Window that the event occurred under.
  7. subwindow(S) unifies S with the child ProXL window where the event occurred or none if the event occurred in the window itself.
  8. time(T) unifies T with the server time, in milliseconds, when the event occurred.
  9. x(X) unifies X with the x coordinate, relative to the window origin.
  10. y(Y) unifies Y with the y coordinate, relative to the window origin.
  11. position(X, Y) unifies X and Y with the x and y coordinates respectively, relative to the window origin.
  12. x_root(X) unifies X with the x coordinate, relative to the root window origin.
  13. y_root(Y) unifies Y with the y coordinate, relative to the root window origin.
  14. root_position(X, Y) unifies X and Y with the x and y coordinates, respectively, relative to the root window origin.
  15. mode(M) unifies M with one of

    normal
    If the event was caused by a normal mouse pointer movement or a pointer warp.
    grab
    If the event was caused by a grab.
    ungrab
    If the event was caused by an ungrab.
  16. detail(D) unifies D with one of

    ancestor
    If the movement came from/ended up in a ProXL Window who is a direct ancestor of the receiving window.
    virtual
    If the movement just passed through the receiving window because of its position in the hierarchy on its way to a window in the same hierarchy.
    inferior
    If the movement came from/ended up in a ProXL Window who is an inferior of the receiving window.
    nonlinear
    If the movement came from/ended up in a sibling or cousin window.
    nonlinear_virtual
    If the movement passed through this window on its way to a sibling or cousin window.
  17. same_screen(B) unifies B, a boolean value, with one of

    true
    If the mouse pointer is currently on the same screen as the window receiving the event.
    false
    If the mouse pointer was actively grabbed by a client, before the automatic grab could take place.
  18. focus(F) unifies F, a boolean, with one of

    true
    If the receiving window is the focus window, or an inferior of the focus window.
    false
    If the focus is assigned to another window hierarchy.
  19. state(Buttons, Modifiers) unifies Buttons with a term of the form:
              
              buttons(B1, B2, B3, B4, B5)
              

    where each argument of the term is unified with the state of the corresponding pointer button just before the event, and has the value up or down.

    Unifies Modifiers with a term of the form:

              
              modifiers(Shift, Control, Lock,
                        Mod1, Mod2, Mod3, Mod4, Mod5)
              

    where each argument of the term is unified with the state of the corresponding modifier key just before the event, and has the value up or down.