xbutton
(τύπου XButtonEvent
) και
xmotion
(τύπου XMotionEvent
) αντίστοιχα, πεδία της
XEvent
.
Έτσι το πεδίο xbutton.button
της XEvent
προσδιορίζει το κουμπί που πατήθηκε. Μπορεί να πάρει τις τιμές
Button1, Button2, Button3, Button4
και Button5
(defines στο
Χ.h
). Τα Χ Windows υποστηρίζουν ποντίκια με εώς πέντε κουμπιά.
Τα πεδία xbutton.x
και xbutton.y
προσδιορίζουν τη
θέση του ποντικιού στο παράθυρο όταν πατήθηκε το κουμπί.
Τα πεδία xmotion.x
και xmotion.y
προσδιορίζουν τη θέση του ποντικιού σε
περίπτωση γεγονότους MotionNotify
. Το πεδίο xmotion.state
(όπως και το
αντίστοιχο xbutton.state
) προδιορίζει αν κατά την κίνηση του ποντικιού ήταν
πατημένο κάποιο κουμπί του ή κάποιο ειδικό πλήκτρο του πληκτρολογίου. Για το
σκοπό αυτό ορίζονται στο Χ.h
οι σταθερές:
Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask
για τα κουμπιά του ποντικιού και ShiftMask, LockMask, ControlMask,
Mod1Mask
για το πλήκτρο Shift
, το Caps
Lock
, το Control
και το πλήκτρο Meta
.
Έτσι η συνάρτηση buttonpressed
που αναφέρθηκε παραπάνω μπορεί να υλοποιηθεί
ως εξής:
int buttonpressed( XEvent *event ) { int quit = 0; switch( event->xbutton.button ) { case Button1: printf("Left mouse button pressed at %d,%d\n", event->xbutton.x, event->xbutton.y ); break; case Button2: printf("Middle mouse button pressed at %d,%d\n" ,event->xbutton.x, event->xbutton.y ); break; case Button3: printf("Right button pressed, quiting\n" ); quit++; break; } return quit; }