0
|
1 .TH "SDL_Event" "3" "Mon 12 Mar 2001, 01:03" "SDL" "SDL API Reference"
|
|
2 .SH "NAME"
|
|
3 SDL_Event\- General event structure
|
|
4 .SH "STRUCTURE DEFINITION"
|
|
5 .PP
|
|
6 .nf
|
|
7 \f(CWtypedef union{
|
|
8 Uint8 type;
|
|
9 SDL_ActiveEvent active;
|
|
10 SDL_KeyboardEvent key;
|
|
11 SDL_MouseMotionEvent motion;
|
|
12 SDL_MouseButtonEvent button;
|
|
13 SDL_JoyAxisEvent jaxis;
|
|
14 SDL_JoyBallEvent jball;
|
|
15 SDL_JoyHatEvent jhat;
|
|
16 SDL_JoyButtonEvent jbutton;
|
|
17 SDL_ResizeEvent resize;
|
|
18 SDL_QuitEvent quit;
|
|
19 SDL_UserEvent user;
|
|
20 SDL_SywWMEvent syswm;
|
|
21 } SDL_Event;\fR
|
|
22 .fi
|
|
23 .PP
|
|
24 .SH "STRUCTURE DATA"
|
|
25 .TP 20
|
|
26 \fBtype\fR
|
|
27 The type of event
|
|
28 .TP 20
|
|
29 \fBactive\fR
|
|
30 \fIActivation event\fR
|
|
31 .TP 20
|
|
32 \fBkey\fR
|
|
33 \fIKeyboard event\fR
|
|
34 .TP 20
|
|
35 \fBmotion\fR
|
|
36 \fIMouse motion event\fR
|
|
37 .TP 20
|
|
38 \fBbutton\fR
|
|
39 \fIMouse button event\fR
|
|
40 .TP 20
|
|
41 \fBjaxis\fR
|
|
42 \fIJoystick axis motion event\fR
|
|
43 .TP 20
|
|
44 \fBjball\fR
|
|
45 \fIJoystick trackball motion event\fR
|
|
46 .TP 20
|
|
47 \fBjhat\fR
|
|
48 \fIJoystick hat motion event\fR
|
|
49 .TP 20
|
|
50 \fBjbutton\fR
|
|
51 \fIJoystick button event\fR
|
|
52 .TP 20
|
|
53 \fBresize\fR
|
|
54 \fIApplication window resize event\fR
|
|
55 .TP 20
|
|
56 \fBquit\fR
|
|
57 \fIApplication quit request event\fR
|
|
58 .TP 20
|
|
59 \fBuser\fR
|
|
60 \fIUser defined event\fR
|
|
61 .TP 20
|
|
62 \fBsyswm\fR
|
|
63 \fIUndefined window manager event\fR
|
|
64 .SH "DESCRIPTION"
|
|
65 .PP
|
|
66 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\&.
|
|
67 .PP
|
|
68 .TP 20
|
|
69 \fBEvent \fBtype\fR\fR
|
|
70 \fBEvent Structure\fR
|
|
71 .TP 20
|
|
72 \fBSDL_ACTIVEEVENT\fP
|
|
73 \fI\fBSDL_ActiveEvent\fR\fR
|
|
74 .TP 20
|
|
75 \fBSDL_KEYDOWN/UP\fP
|
|
76 \fI\fBSDL_KeyboardEvent\fR\fR
|
|
77 .TP 20
|
|
78 \fBSDL_MOUSEMOTION\fP
|
|
79 \fI\fBSDL_MouseMotionEvent\fR\fR
|
|
80 .TP 20
|
|
81 \fBSDL_MOUSEBUTTONDOWN/UP\fP
|
|
82 \fI\fBSDL_MouseButtonEvent\fR\fR
|
|
83 .TP 20
|
|
84 \fBSDL_JOYAXISMOTION\fP
|
|
85 \fI\fBSDL_JoyAxisEvent\fR\fR
|
|
86 .TP 20
|
|
87 \fBSDL_JOYBALLMOTION\fP
|
|
88 \fI\fBSDL_JoyBallEvent\fR\fR
|
|
89 .TP 20
|
|
90 \fBSDL_JOYHATMOTION\fP
|
|
91 \fI\fBSDL_JoyHatEvent\fR\fR
|
|
92 .TP 20
|
|
93 \fBSDL_JOYBUTTONDOWN/UP\fP
|
|
94 \fI\fBSDL_JoyButtonEvent\fR\fR
|
|
95 .TP 20
|
|
96 \fBSDL_QUIT\fP
|
|
97 \fI\fBSDL_QuitEvent\fR\fR
|
|
98 .TP 20
|
|
99 \fBSDL_SYSWMEVENT\fP
|
|
100 \fI\fBSDL_SysWMEvent\fR\fR
|
|
101 .TP 20
|
|
102 \fBSDL_VIDEORESIZE\fP
|
|
103 \fI\fBSDL_ResizeEvent\fR\fR
|
|
104 .TP 20
|
|
105 \fBSDL_USEREVENT\fP
|
|
106 \fI\fBSDL_UserEvent\fR\fR
|
|
107 .SH "USE"
|
|
108 .PP
|
|
109 The \fBSDL_Event\fR structure has two uses
|
|
110 .IP " \(bu" 6
|
|
111 Reading events on the event queue
|
|
112 .IP " \(bu" 6
|
|
113 Placing events on the event queue
|
|
114 .PP
|
|
115 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\&.
|
|
116 .PP
|
|
117 First off, we create an empty \fBSDL_Event\fR structure\&.
|
|
118 .PP
|
|
119 .nf
|
|
120 \f(CWSDL_Event test_event;\fR
|
|
121 .fi
|
|
122 .PP
|
|
123 \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\&.
|
|
124 .PP
|
|
125 .nf
|
|
126 \f(CWwhile(SDL_PollEvent(&test_event)) {\fR
|
|
127 .fi
|
|
128 .PP
|
|
129 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\&.
|
|
130 .PP
|
|
131 .nf
|
|
132 \f(CW switch(test_event\&.type) {\fR
|
|
133 .fi
|
|
134 .PP
|
|
135 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:
|
|
136 .PP
|
|
137 .nf
|
|
138 \f(CW case SDL_MOUSEMOTION:\fR
|
|
139 .fi
|
|
140 .PP
|
|
141 All we need do now is read the information out of the \fBmotion\fR member of \fBtest_event\fR\&.
|
|
142 .PP
|
|
143 .nf
|
|
144 \f(CW printf("We got a motion event\&.
|
|
145 ");
|
|
146 printf("Current mouse position is: (%d, %d)
|
|
147 ", test_event\&.motion\&.x, test_event\&.motion\&.y);
|
|
148 break;
|
|
149 default:
|
|
150 printf("Unhandled Event!
|
|
151 ");
|
|
152 break;
|
|
153 }
|
|
154 }
|
|
155 printf("Event queue empty\&.
|
|
156 ");\fR
|
|
157 .fi
|
|
158 .PP
|
|
159 .PP
|
|
160 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\&.
|
|
161 .PP
|
|
162 .nf
|
|
163 \f(CWSDL_Event user_event;
|
|
164
|
|
165 user_event\&.type=SDL_USEREVENT;
|
|
166 user_event\&.user\&.code=2;
|
|
167 user_event\&.user\&.data1=NULL;
|
|
168 user_event\&.user\&.data2=NULL;
|
|
169 SDL_PushEvent(&user_event);\fR
|
|
170 .fi
|
|
171 .PP
|
|
172 .SH "SEE ALSO"
|
|
173 .PP
|
|
174 \fI\fBSDL_PollEvent\fP\fR, \fI\fBSDL_PushEvent\fP\fR, \fI\fBSDL_PeepEvents\fP\fR
|
|
175 ...\" created by instant / docbook-to-man, Mon 12 Mar 2001, 01:03
|