2013-03-19 8 views
8

Ho guardato dappertutto e sono rimasto scioccato di non riuscire a trovare nulla sull'argomento.Evento Scrollwheel in X11

Voglio solo essere in grado di catturare eventi da una semplice rotellina del mouse.

risposta

6

Sì, questo è incredibilmente confuso. Questo perché X11 ha deciso di assegnare eventi rotellina del mouse come i pulsanti del mouse 4 e 5. La ricezione degli eventi scrollwheel è la stessa della ricezione degli eventi di pressione del pulsante del mouse (eventi ButtonPress secondo /usr/include/X11/X.h). Si noti inoltre che il file di intestazione definisce Button1..Button5. I pulsanti 4 e 5 corrispondono a su o giù - forse non quell'ordine, dovrai determinarlo empiricamente. Il file di intestazione non menziona mai gli eventi scrollwheel.

Per fortuna, API di livello superiore (come GDK) forniscono esplicitamente supporto scrollwheel per nome.

+0

Inoltre, non ogni "ticchettio" della rotellina genererà un evento di stampa e di rilascio, uno dopo l'altro. È possibile ignorare tranquillamente gli eventi di rilascio per questi pulsanti. – JvO

+1

@MultimediaMike Quindi ho _finalmente_ avuto la possibilità di lavorare su questo. Parte del mio problema iniziale prima era che non stavo catturando gli eventi corretti. Due domande: è specificata la quantità di scorrimento (o si tratta solo di più eventi) e come viene eseguito lo scorrimento orizzontale? – imallett

+0

@imallet Per gestire lo scorrimento orizzontale, è necessario ascoltare i pulsanti 6 e 7 che corrispondono a sinistra e a destra. – matteodelabre