sdlkeysym.html revision 9682c8870b8ff5e4ac2e4c70b759f791c6f38c1f
1<HTML
2><HEAD
3><TITLE
4>SDL_keysym</TITLE
5><META
6NAME="GENERATOR"
7CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8"><LINK
9REL="HOME"
10TITLE="SDL Library Documentation"
11HREF="index.html"><LINK
12REL="UP"
13TITLE="SDL Event Structures."
14HREF="eventstructures.html"><LINK
15REL="PREVIOUS"
16TITLE="SDL_QuitEvent"
17HREF="sdlquitevent.html"><LINK
18REL="NEXT"
19TITLE="SDLKey"
20HREF="sdlkey.html"></HEAD
21><BODY
22CLASS="REFENTRY"
23BGCOLOR="#FFF8DC"
24TEXT="#000000"
25LINK="#0000ee"
26VLINK="#551a8b"
27ALINK="#ff0000"
28><DIV
29CLASS="NAVHEADER"
30><TABLE
31SUMMARY="Header navigation table"
32WIDTH="100%"
33BORDER="0"
34CELLPADDING="0"
35CELLSPACING="0"
36><TR
37><TH
38COLSPAN="3"
39ALIGN="center"
40>SDL Library Documentation</TH
41></TR
42><TR
43><TD
44WIDTH="10%"
45ALIGN="left"
46VALIGN="bottom"
47><A
48HREF="sdlquitevent.html"
49ACCESSKEY="P"
50>Prev</A
51></TD
52><TD
53WIDTH="80%"
54ALIGN="center"
55VALIGN="bottom"
56></TD
57><TD
58WIDTH="10%"
59ALIGN="right"
60VALIGN="bottom"
61><A
62HREF="sdlkey.html"
63ACCESSKEY="N"
64>Next</A
65></TD
66></TR
67></TABLE
68><HR
69ALIGN="LEFT"
70WIDTH="100%"></DIV
71><H1
72><A
73NAME="SDLKEYSYM"
74></A
75>SDL_keysym</H1
76><DIV
77CLASS="REFNAMEDIV"
78><A
79NAME="AEN4659"
80></A
81><H2
82>Name</H2
83>SDL_keysym&nbsp;--&nbsp;Keysym structure</DIV
84><DIV
85CLASS="REFSECT1"
86><A
87NAME="AEN4662"
88></A
89><H2
90>Structure Definition</H2
91><PRE
92CLASS="PROGRAMLISTING"
93>typedef struct{
94  Uint8 scancode;
95  SDLKey sym;
96  SDLMod mod;
97  Uint16 unicode;
98} SDL_keysym;</PRE
99></DIV
100><DIV
101CLASS="REFSECT1"
102><A
103NAME="AEN4665"
104></A
105><H2
106>Structure Data</H2
107><DIV
108CLASS="INFORMALTABLE"
109><A
110NAME="AEN4667"
111></A
112><P
113></P
114><TABLE
115BORDER="0"
116CLASS="CALSTABLE"
117><TBODY
118><TR
119><TD
120ALIGN="LEFT"
121VALIGN="TOP"
122><TT
123CLASS="STRUCTFIELD"
124><I
125>scancode</I
126></TT
127></TD
128><TD
129ALIGN="LEFT"
130VALIGN="TOP"
131>Hardware specific scancode</TD
132></TR
133><TR
134><TD
135ALIGN="LEFT"
136VALIGN="TOP"
137><TT
138CLASS="STRUCTFIELD"
139><I
140>sym</I
141></TT
142></TD
143><TD
144ALIGN="LEFT"
145VALIGN="TOP"
146>SDL virtual keysym</TD
147></TR
148><TR
149><TD
150ALIGN="LEFT"
151VALIGN="TOP"
152><TT
153CLASS="STRUCTFIELD"
154><I
155>mod</I
156></TT
157></TD
158><TD
159ALIGN="LEFT"
160VALIGN="TOP"
161>Current key modifiers</TD
162></TR
163><TR
164><TD
165ALIGN="LEFT"
166VALIGN="TOP"
167><TT
168CLASS="STRUCTFIELD"
169><I
170>unicode</I
171></TT
172></TD
173><TD
174ALIGN="LEFT"
175VALIGN="TOP"
176>Translated character</TD
177></TR
178></TBODY
179></TABLE
180><P
181></P
182></DIV
183></DIV
184><DIV
185CLASS="REFSECT1"
186><A
187NAME="AEN4686"
188></A
189><H2
190>Description</H2
191><P
192>The <SPAN
193CLASS="STRUCTNAME"
194>SDL_keysym</SPAN
195> structure is used by reporting key presses and releases since it is a part of the <A
196HREF="sdlkeyboardevent.html"
197><SPAN
198CLASS="STRUCTNAME"
199>SDL_KeyboardEvent</SPAN
200></A
201>.</P
202><P
203>The <TT
204CLASS="STRUCTFIELD"
205><I
206>scancode</I
207></TT
208> field should generally be left alone, it is the hardware dependent scancode returned by the keyboard. The <TT
209CLASS="STRUCTFIELD"
210><I
211>sym</I
212></TT
213> field is extremely useful. It is the SDL-defined value of the key (see <A
214HREF="sdlkey.html"
215>SDL Key Syms</A
216>. This field is very useful when you are checking for certain key presses, like so:
217<PRE
218CLASS="PROGRAMLISTING"
219>.
220.
221while(SDL_PollEvent(&#38;event)){
222  switch(event.type){
223    case SDL_KEYDOWN:
224      if(event.key.keysym.sym==SDLK_LEFT)
225        move_left();
226      break;
227    .
228    .
229    .
230  }
231}
232.
233.</PRE
234>
235<TT
236CLASS="STRUCTFIELD"
237><I
238>mod</I
239></TT
240> stores the current state of the keyboard modifiers as explained in <A
241HREF="sdlgetmodstate.html"
242><TT
243CLASS="FUNCTION"
244>SDL_GetModState</TT
245></A
246>. The <TT
247CLASS="STRUCTFIELD"
248><I
249>unicode</I
250></TT
251> is only used when UNICODE translation is enabled with <A
252HREF="sdlenableunicode.html"
253><TT
254CLASS="FUNCTION"
255>SDL_EnableUNICODE</TT
256></A
257>. If <TT
258CLASS="STRUCTFIELD"
259><I
260>unicode</I
261></TT
262> is non-zero then this a the UNICODE character corresponding to the keypress. If the high 9 bits of the character are 0, then this maps to the equivalent ASCII character:
263<PRE
264CLASS="PROGRAMLISTING"
265>char ch;
266if ( (keysym.unicode &#38; 0xFF80) == 0 ) {
267  ch = keysym.unicode &#38; 0x7F;
268}
269else {
270  printf("An International Character.\n");
271}</PRE
272>
273UNICODE translation does have a slight overhead so don't enable it unless its needed.</P
274></DIV
275><DIV
276CLASS="REFSECT1"
277><A
278NAME="AEN4705"
279></A
280><H2
281>See Also</H2
282><P
283><A
284HREF="sdlkey.html"
285><SPAN
286CLASS="STRUCTNAME"
287>SDLKey</SPAN
288></A
289></P
290></DIV
291><DIV
292CLASS="NAVFOOTER"
293><HR
294ALIGN="LEFT"
295WIDTH="100%"><TABLE
296SUMMARY="Footer navigation table"
297WIDTH="100%"
298BORDER="0"
299CELLPADDING="0"
300CELLSPACING="0"
301><TR
302><TD
303WIDTH="33%"
304ALIGN="left"
305VALIGN="top"
306><A
307HREF="sdlquitevent.html"
308ACCESSKEY="P"
309>Prev</A
310></TD
311><TD
312WIDTH="34%"
313ALIGN="center"
314VALIGN="top"
315><A
316HREF="index.html"
317ACCESSKEY="H"
318>Home</A
319></TD
320><TD
321WIDTH="33%"
322ALIGN="right"
323VALIGN="top"
324><A
325HREF="sdlkey.html"
326ACCESSKEY="N"
327>Next</A
328></TD
329></TR
330><TR
331><TD
332WIDTH="33%"
333ALIGN="left"
334VALIGN="top"
335>SDL_QuitEvent</TD
336><TD
337WIDTH="34%"
338ALIGN="center"
339VALIGN="top"
340><A
341HREF="eventstructures.html"
342ACCESSKEY="U"
343>Up</A
344></TD
345><TD
346WIDTH="33%"
347ALIGN="right"
348VALIGN="top"
349>SDLKey</TD
350></TR
351></TABLE
352></DIV
353></BODY
354></HTML
355>