checkkeys.c
资源名称:NETVIDEO.rar [点击查看]
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- /* Simple program: Loop, watching keystrokes
- Note that you need to call SDL_PollEvent() or SDL_WaitEvent() to
- pump the event loop and catch keystrokes.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "SDL.h"
- static void print_modifiers(void)
- {
- int mod;
- printf(" modifiers:");
- mod = SDL_GetModState();
- if(!mod) {
- printf(" (none)");
- return;
- }
- if(mod & KMOD_LSHIFT)
- printf(" LSHIFT");
- if(mod & KMOD_RSHIFT)
- printf(" RSHIFT");
- if(mod & KMOD_LCTRL)
- printf(" LCTRL");
- if(mod & KMOD_RCTRL)
- printf(" RCTRL");
- if(mod & KMOD_LALT)
- printf(" LALT");
- if(mod & KMOD_RALT)
- printf(" RALT");
- if(mod & KMOD_LMETA)
- printf(" LMETA");
- if(mod & KMOD_RMETA)
- printf(" RMETA");
- if(mod & KMOD_NUM)
- printf(" NUM");
- if(mod & KMOD_CAPS)
- printf(" CAPS");
- if(mod & KMOD_MODE)
- printf(" MODE");
- }
- static void PrintKey(SDL_keysym *sym, int pressed)
- {
- /* Print the keycode, name and state */
- if ( sym->sym ) {
- printf("Key %s: %d-%s ", pressed ? "pressed" : "released",
- sym->sym, SDL_GetKeyName(sym->sym));
- } else {
- printf("Unknown Key (scancode = %d) %s ", sym->scancode,
- pressed ? "pressed" : "released");
- }
- /* Print the translated character, if one exists */
- if ( sym->unicode ) {
- /* Is it a control-character? */
- if ( sym->unicode < ' ' ) {
- printf(" (^%c)", sym->unicode+'@');
- } else {
- #ifdef UNICODE
- printf(" (%c)", sym->unicode);
- #else
- /* This is a Latin-1 program, so only show 8-bits */
- if ( !(sym->unicode & 0xFF00) )
- printf(" (%c)", sym->unicode);
- #endif
- }
- }
- print_modifiers();
- printf("n");
- }
- int main(int argc, char *argv[])
- {
- SDL_Event event;
- int done;
- /* Initialize SDL */
- if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
- fprintf(stderr, "Couldn't initialize SDL: %sn",SDL_GetError());
- exit(1);
- }
- atexit(SDL_Quit);
- /* Set 640x480 video mode */
- if ( SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE) == NULL ) {
- fprintf(stderr, "Couldn't set 640x480 video mode: %sn",
- SDL_GetError());
- exit(2);
- }
- /* Enable UNICODE translation for keyboard input */
- SDL_EnableUNICODE(1);
- /* Enable auto repeat for keyboard input */
- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,
- SDL_DEFAULT_REPEAT_INTERVAL);
- /* Watch keystrokes */
- done = 0;
- while ( !done ) {
- /* Check for events */
- SDL_WaitEvent(&event);
- switch (event.type) {
- case SDL_KEYDOWN:
- PrintKey(&event.key.keysym, 1);
- break;
- case SDL_KEYUP:
- PrintKey(&event.key.keysym, 0);
- break;
- case SDL_MOUSEBUTTONDOWN:
- /* Any button press quits the app... */
- case SDL_QUIT:
- done = 1;
- break;
- default:
- break;
- }
- }
- return(0);
- }