Skip to content

Latest commit

 

History

History
182 lines (181 loc) · 5.47 KB

SDL_Event.3

File metadata and controls

182 lines (181 loc) · 5.47 KB
 
Sep 14, 2001
Sep 14, 2001
1
.TH "SDL_Event" "3" "Tue 11 Sep 2001, 22:59" "SDL" "SDL API Reference"
Apr 26, 2001
Apr 26, 2001
2
.SH "NAME"
Dec 29, 2007
Dec 29, 2007
3
SDL_Event \- General event structure
Apr 26, 2001
Apr 26, 2001
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.SH "STRUCTURE DEFINITION"
.PP
.nf
\f(CWtypedef union{
Uint8 type;
SDL_ActiveEvent active;
SDL_KeyboardEvent key;
SDL_MouseMotionEvent motion;
SDL_MouseButtonEvent button;
SDL_JoyAxisEvent jaxis;
SDL_JoyBallEvent jball;
SDL_JoyHatEvent jhat;
SDL_JoyButtonEvent jbutton;
SDL_ResizeEvent resize;
Sep 14, 2001
Sep 14, 2001
18
SDL_ExposeEvent expose;
Apr 26, 2001
Apr 26, 2001
19
20
SDL_QuitEvent quit;
SDL_UserEvent user;
Dec 28, 2007
Dec 28, 2007
21
SDL_SysWMEvent syswm;
Apr 26, 2001
Apr 26, 2001
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
} SDL_Event;\fR
.fi
.PP
.SH "STRUCTURE DATA"
.TP 20
\fBtype\fR
The type of event
.TP 20
\fBactive\fR
\fIActivation event\fR
.TP 20
\fBkey\fR
\fIKeyboard event\fR
.TP 20
\fBmotion\fR
\fIMouse motion event\fR
.TP 20
\fBbutton\fR
\fIMouse button event\fR
.TP 20
\fBjaxis\fR
\fIJoystick axis motion event\fR
.TP 20
\fBjball\fR
\fIJoystick trackball motion event\fR
.TP 20
\fBjhat\fR
\fIJoystick hat motion event\fR
.TP 20
\fBjbutton\fR
\fIJoystick button event\fR
.TP 20
\fBresize\fR
\fIApplication window resize event\fR
.TP 20
Sep 14, 2001
Sep 14, 2001
57
58
59
\fBexpose\fR
\fIApplication window expose event\fR
.TP 20
Apr 26, 2001
Apr 26, 2001
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
\fBquit\fR
\fIApplication quit request event\fR
.TP 20
\fBuser\fR
\fIUser defined event\fR
.TP 20
\fBsyswm\fR
\fIUndefined window manager event\fR
.SH "DESCRIPTION"
.PP
The \fBSDL_Event\fR union is the core to all event handling is SDL, its probably the most important structure after \fBSDL_Surface\fR\&. \fBSDL_Event\fR is a union of all event structures used in SDL, using it is a simple matter of knowing which union member relates to which event \fBtype\fR\&.
.PP
.TP 20
\fBEvent \fBtype\fR\fR
\fBEvent Structure\fR
.TP 20
\fBSDL_ACTIVEEVENT\fP
\fI\fBSDL_ActiveEvent\fR\fR
.TP 20
\fBSDL_KEYDOWN/UP\fP
\fI\fBSDL_KeyboardEvent\fR\fR
.TP 20
\fBSDL_MOUSEMOTION\fP
\fI\fBSDL_MouseMotionEvent\fR\fR
.TP 20
\fBSDL_MOUSEBUTTONDOWN/UP\fP
\fI\fBSDL_MouseButtonEvent\fR\fR
.TP 20
\fBSDL_JOYAXISMOTION\fP
\fI\fBSDL_JoyAxisEvent\fR\fR
.TP 20
\fBSDL_JOYBALLMOTION\fP
\fI\fBSDL_JoyBallEvent\fR\fR
.TP 20
\fBSDL_JOYHATMOTION\fP
\fI\fBSDL_JoyHatEvent\fR\fR
.TP 20
\fBSDL_JOYBUTTONDOWN/UP\fP
\fI\fBSDL_JoyButtonEvent\fR\fR
.TP 20
\fBSDL_QUIT\fP
\fI\fBSDL_QuitEvent\fR\fR
.TP 20
\fBSDL_SYSWMEVENT\fP
\fI\fBSDL_SysWMEvent\fR\fR
.TP 20
\fBSDL_VIDEORESIZE\fP
\fI\fBSDL_ResizeEvent\fR\fR
.TP 20
Sep 14, 2001
Sep 14, 2001
109
110
111
\fBSDL_VIDEOEXPOSE\fP
\fI\fBSDL_ExposeEvent\fR\fR
.TP 20
Apr 26, 2001
Apr 26, 2001
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
\fBSDL_USEREVENT\fP
\fI\fBSDL_UserEvent\fR\fR
.SH "USE"
.PP
The \fBSDL_Event\fR structure has two uses
.IP " \(bu" 6
Reading events on the event queue
.IP " \(bu" 6
Placing events on the event queue
.PP
Reading events from the event queue is done with either \fI\fBSDL_PollEvent\fP\fR or \fI\fBSDL_PeepEvents\fP\fR\&. We\&'ll use \fBSDL_PollEvent\fP and step through an example\&.
.PP
First off, we create an empty \fBSDL_Event\fR structure\&.
.PP
.nf
\f(CWSDL_Event test_event;\fR
.fi
.PP
\fBSDL_PollEvent\fP removes the next event from the event queue, if there are no events on the queue it returns \fB0\fR otherwise it returns \fB1\fR\&. We use a \fBwhile\fP loop to process each event in turn\&.
.PP
.nf
\f(CWwhile(SDL_PollEvent(&test_event)) {\fR
.fi
.PP
The \fBSDL_PollEvent\fP function take a pointer to an \fBSDL_Event\fR structure that is to be filled with event information\&. We know that if \fBSDL_PollEvent\fP removes an event from the queue then the event information will be placed in our \fBtest_event\fR structure, but we also know that the \fItype\fP of event will be placed in the \fBtype\fR member of \fBtest_event\fR\&. So to handle each event \fBtype\fR seperately we use a \fBswitch\fP statement\&.
.PP
.nf
\f(CW switch(test_event\&.type) {\fR
.fi
.PP
We need to know what kind of events we\&'re looking for \fIand\fP the event \fBtype\fR\&'s of those events\&. So lets assume we want to detect where the user is moving the mouse pointer within our application\&. We look through our event types and notice that \fBSDL_MOUSEMOTION\fP is, more than likely, the event we\&'re looking for\&. A little \fImore\fR research tells use that \fBSDL_MOUSEMOTION\fP events are handled within the \fI\fBSDL_MouseMotionEvent\fR\fR structure which is the \fBmotion\fR member of \fBSDL_Event\fR\&. We can check for the \fBSDL_MOUSEMOTION\fP event \fBtype\fR within our \fBswitch\fP statement like so:
.PP
.nf
\f(CW case SDL_MOUSEMOTION:\fR
.fi
.PP
All we need do now is read the information out of the \fBmotion\fR member of \fBtest_event\fR\&.
.PP
.nf
\f(CW printf("We got a motion event\&.
");
printf("Current mouse position is: (%d, %d)
", test_event\&.motion\&.x, test_event\&.motion\&.y);
break;
default:
printf("Unhandled Event!
");
break;
}
}
printf("Event queue empty\&.
");\fR
.fi
.PP
.PP
It is also possible to push events onto the event queue and so use it as a two-way communication path\&. Both \fI\fBSDL_PushEvent\fP\fR and \fI\fBSDL_PeepEvents\fP\fR allow you to place events onto the event queue\&. This is usually used to place a \fBSDL_USEREVENT\fP on the event queue, however you could use it to post fake input events if you wished\&. Creating your own events is a simple matter of choosing the event type you want, setting the \fBtype\fR member and filling the appropriate member structure with information\&.
.PP
.nf
\f(CWSDL_Event user_event;
user_event\&.type=SDL_USEREVENT;
user_event\&.user\&.code=2;
user_event\&.user\&.data1=NULL;
user_event\&.user\&.data2=NULL;
SDL_PushEvent(&user_event);\fR
.fi
.PP
.SH "SEE ALSO"
.PP
\fI\fBSDL_PollEvent\fP\fR, \fI\fBSDL_PushEvent\fP\fR, \fI\fBSDL_PeepEvents\fP\fR
Oct 10, 2009
Oct 10, 2009
182
.\" created by instant / docbook-to-man, Tue 11 Sep 2001, 22:59