| 1 | .TH "SDL_keysym" "3" "Tue 11 Sep 2001, 23:00" "SDL" "SDL API Reference" |
| 2 | .SH "NAME" |
| 3 | SDL_keysym \- Keysym structure |
| 4 | .SH "STRUCTURE DEFINITION" |
| 5 | .PP |
| 6 | .nf |
| 7 | \f(CWtypedef struct{ |
| 8 | Uint8 scancode; |
| 9 | SDLKey sym; |
| 10 | SDLMod mod; |
| 11 | Uint16 unicode; |
| 12 | } SDL_keysym;\fR |
| 13 | .fi |
| 14 | .PP |
| 15 | .SH "STRUCTURE DATA" |
| 16 | .TP 20 |
| 17 | \fBscancode\fR |
| 18 | Hardware specific scancode |
| 19 | .TP 20 |
| 20 | \fBsym\fR |
| 21 | SDL virtual keysym |
| 22 | .TP 20 |
| 23 | \fBmod\fR |
| 24 | Current key modifiers |
| 25 | .TP 20 |
| 26 | \fBunicode\fR |
| 27 | Translated character |
| 28 | .SH "DESCRIPTION" |
| 29 | .PP |
| 30 | The \fBSDL_keysym\fR structure is used by reporting key presses and releases since it is a part of the \fI\fBSDL_KeyboardEvent\fR\fR\&. |
| 31 | .PP |
| 32 | The \fBscancode\fR field should generally be left alone, it is the hardware dependent scancode returned by the keyboard\&. The \fBsym\fR field is extremely useful\&. It is the SDL-defined value of the key (see \fISDL Key Syms\fR\&. This field is very useful when you are checking for certain key presses, like so: |
| 33 | .PP |
| 34 | .nf |
| 35 | \f(CW\&. |
| 36 | \&. |
| 37 | while(SDL_PollEvent(&event)){ |
| 38 | switch(event\&.type){ |
| 39 | case SDL_KEYDOWN: |
| 40 | if(event\&.key\&.keysym\&.sym==SDLK_LEFT) |
| 41 | move_left(); |
| 42 | break; |
| 43 | \&. |
| 44 | \&. |
| 45 | \&. |
| 46 | } |
| 47 | } |
| 48 | \&. |
| 49 | \&.\fR |
| 50 | .fi |
| 51 | .PP |
| 52 | \fBmod\fR stores the current state of the keyboard modifiers as explained in \fI\fBSDL_GetModState\fP\fR\&. The \fBunicode\fR is only used when UNICODE translation is enabled with \fI\fBSDL_EnableUNICODE\fP\fR\&. If \fBunicode\fR 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: |
| 53 | .PP |
| 54 | .nf |
| 55 | \f(CWchar ch; |
| 56 | if ( (keysym\&.unicode & 0xFF80) == 0 ) { |
| 57 | ch = keysym\&.unicode & 0x7F; |
| 58 | } |
| 59 | else { |
| 60 | printf("An International Character\&. |
| 61 | "); |
| 62 | }\fR |
| 63 | .fi |
| 64 | .PP |
| 65 | UNICODE translation does have a slight overhead so don\&'t enable it unless its needed\&. |
| 66 | .SH "SEE ALSO" |
| 67 | .PP |
| 68 | \fI\fBSDLKey\fR\fR |
| 69 | .\" created by instant / docbook-to-man, Tue 11 Sep 2001, 23:00 |