Site Tools


Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
New release available: 2020-07-29 "Hogfather". upgrade now! [51.3] (what's this?)
New release candidate 3 available: 2020-06-09 "Hogfather". upgrade now! [51.2] (what's this?)
New release candidate 2 available: 2020-06-01 "Hogfather". upgrade now! [51.1] (what's this?)
New release candidate available: 2020-06-01 "Hogfather". upgrade now! [51] (what's this?)
Hotfix release available: 2018-04-22c "Greebo". upgrade now! [50.3] (what's this?)
Hotfix release available: 2018-04-22b "Greebo". upgrade now! [50.2] (what's this?)
Hotfix release available: 2018-04-22a "Greebo". upgrade now! [50.1] (what's this?)
New release available: 2018-04-22 "Greebo". upgrade now! [50] (what's this?)
Hotfix release available: 2017-02-19g "Frusterick Manners". upgrade now! [49.7] (what's this?)
Hotfix release available: 2017-02-19f "Frusterick Manners". upgrade now! [49.6] (what's this?)
Hotfix release available: 2017-02-19e "Frusterick Manners". upgrade now! [49.5] (what's this?)
Hotfix release available fixing CVE-2017-12979 and CVE-2017-12980: 2017-02-19d "Frusterick Manners". upgrade now! [49.4] (what's this?)
Hotfix release available fixing CVE-2017-12583: 2017-02-19c "Frusterick Manners". upgrade now! [49.3] (what's this?)
sdl_app

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
sdl_app [2017/09/01 15:56]
1.241.172.144 created
sdl_app [2017/09/01 16:00] (current)
1.241.172.144
Line 2: Line 2:
  
 Key Pad 를 이용해 ​ image file 을 읽어 화면에 출력 하거나 그림을 그리고 글자를 출력한다. Key Pad 를 이용해 ​ image file 을 읽어 화면에 출력 하거나 그림을 그리고 글자를 출력한다.
 +한글을 사용하기 위해서는 ​ UTF-8로 작성되어야 한다.
  
 TODO : Touch screen TODO : Touch screen
  
 Source Code Source Code
 +
 +  /​* Application Action
 +  Key : Test Action
 +  F1 : make Blue Screen
 +  F2 : Display VI_logo.bmp
 +  F3 : Display String..
 +  F4 : Clear Screen
 +  ENTER : Exit App
 +  */
 +  ​
 +  #​include <​stdio.h>​
 +  #​include <​stdint.h>​
 +  #​include <​string.h>​ /​* for memset */
 +  #​include <​unistd.h>​ /​* for open/close .. */
 +  #​include <​fcntl.h>​ /​* for O_RDWR */
 +  #​include <​sys/​ioctl.h>​ /​* for ioctl */
 +  #​include <​sys/​mman.h>​ /​* for mmap */
 +  #​include <​linux/​fb.h>​ /​* for fb_var_screeninfo,​ FBIOGET_VSCREENINFO */
 +  #​include <​linux/​input.h>​
 +  #​include <​poll.h>​
 +  #​include "​SDL.h"​
 +  #​include "​SDL_ttf.h"​
 +  ​
 +  #​define DEV_LCD_BACKLIGHT "/​sys/​class/​backlight/​backlight/​brightness"​
 +  ​
 +  #​define TEST_IMAGE_FILE_1 "​VI_logo_320_240_R90.jpg"​
 +  #​define TEST_IMAGE_FILE_2 "​VI_logo_320_240_R270.jpg"​
 +  #​define TEST_FONT_FILE "​D2Coding.ttf"​
 +  #​define TEST_DISPLAY_STRING "​밸류이노베이션"​
 +  //#​define TEST_DISPLAY_STRING "​VI"​
 +  ​
 +  /*
 +  #​define DEBUG_LOW_LEVEL_KEY_INPUT_INFO
 +  */
 +  int sdl_copy_surface( SDL_Surface *pDestination,​ int X, int Y, SDL_Surface *pSource )
 +  {
 +  int Result;​
 +  SDL_Rect Offset;​ /​* Make a temporary rectangle to hold the offsets */
 +  ​
 +  Result = -1;
 +  if ( ( pDestination != (SDL_Surface *)0 )
 +  &&​ ( pSource != (SDL_Surface *)0 ) )
 +  {
 +  /* Give the offsets to the rectangle */
 +  Offset.x = X;
 +  Offset.y = Y;
 +  /* Blit the surface */
 +  Result = SDL_BlitSurface( pSource, NULL, pDestination,​ &Offset );
 +  }
 +  return Result;​
 +  }
 +  ​
 +  int sdl_clear_surface( SDL_Surface *pDestination )
 +  {
 +  if ( pDestination != (SDL_Surface *)0 )
 +  {
 +  if ( SDL_FillRect(pDestination,​ NULL, SDL_MapRGB(pDestination->​format,​ 0, 0, 0)) < 0)
 +  {
 +  printf("​clear surface fail! : %s\n", SDL_GetError());​
 +  }
 +  else
 +  {
 +  printf("​clear surface OK\n"​);​
 +  SDL_Flip( pDestination );
 +  }
 +  }
 +  }
 +  ​
 +  int bright_set(const uint8_t Brightness)
 +  {
 +  FILE * pDeviceFile;​
 +  char pString[10] = {0};
 +  int StringLength;​
 +  ​
 +  pDeviceFile = fopen(DEV_LCD_BACKLIGHT,​ "​w+"​);​
 +  if ( pDeviceFile == (FILE *)0 )
 +  {
 +  printf("​failed to open back light device : %s\n", DEV_LCD_BACKLIGHT);​
 +  return -1;​
 +  }
 +  ​
 +  sprintf(pString,​ "​%d",​ Brightness);​
 +  StringLength = (int)strlen(pString);​
 +  ​
 +  if ( fwrite(pString,​ StringLength,​ 1, pDeviceFile) < 0 )
 +  {
 +  return -1;​
 +  }
 +  ​
 +  fclose(pDeviceFile);​
 +  ​
 +  return 0;
 +  }
 +  ​
 +  int bright_get(uint8_t *pBrightness)
 +  {
 +  FILE * pDeviceFile;​
 +  char pCommand[128] = {0};
 +  char pString[10] = {0};
 +  ​
 +  char buf[10] = {0};
 +  int level = 0;
 +  ​
 +  if ( pBrightness == (uint8_t *)0 )
 +  {
 +  printf("​bright_get : Input Parameter error\n"​);​
 +  return -1;​
 +  }
 +  ​
 +  sprintf(pCommand,​ "cat %s", DEV_LCD_BACKLIGHT);​
 +  pDeviceFile = popen(pCommand,​ "​r"​);​
 +  if ( pDeviceFile == (FILE *)0 )
 +  {
 +  return -1;​
 +  }
 +  ​
 +  while( fgets(pString,​ 10, pDeviceFile) );
 +  *pBrightness = (uint8_t)strtoul(pString,​ NULL, 10);
 +  ​
 +  fclose(pDeviceFile);​
 +  ​
 +  return 0;
 +  }
 +  ​
 +  ​
 +  int main()
 +  {
 +  SDL_Surface * pScreen;
 +  SDL_Event Event;​
 +  char * pGetENV;​
 +  ​
 +  #if 1
 +  pGetENV = SDL_getenv("​SDL_VIDEODRIVER"​);​
 +  if( pGetENV == (char *)0 )
 +  {
 +  printf("​No ENV!\n"​);​
 +  SDL_putenv("​SDL_VIDEODRIVER=directfb"​);​
 +  }
 +  // else
 +  // {
 +  printf("​SDL_VIDEODRIVER=%s\n",​SDL_getenv("​SDL_VIDEODRIVER"​));​
 +  // }
 +  ​
 +  #endif
 +  ​
 +  if ( SDL_Init(SDL_INIT_VIDEO) < 0)
 +  {
 +  printf("​SDL initialized Fail! : %s\n", SDL_GetError());​
 +  return -1;​
 +  }
 +  else
 +  {
 +  printf("​SDL initialized OK!\n"​);​
 +  }
 +  ​
 +  pScreen = SDL_SetVideoMode(240,​ 320, 32, SDL_SWSURFACE);​
 +  if( pScreen == (SDL_Surface *)0 )
 +  {
 +  printf("​Fail to SetVideoMode !\n");
 +  }
 +  else
 +  {
 +  SDL_KeyboardEvent * pKeyEvent;​
 +  int IsInLoop;​
 +  uint8_t Brightness;​
 +  ​
 +  printf("​Screen SDL SetVideoMode OK\n"​);​
 +  ​
 +  printf("​SDL Surface Address = 0x%X(%d)\n",​ (uint32_t)pScreen,​ (uint32_t)pScreen);​
 +  printf(" ​ flags          : 0x%08X\n",​ pScreen->​flags);​
 +  //​ SDL_PixelFormat *format;​ /​**<​ Read-only */
 +  printf(" ​ w              : %d\n", pScreen->​w);​
 +  printf(" ​ h              : %d\n", pScreen->​h);​
 +  printf(" ​ pitch          : %d\n", pScreen->​pitch);​
 +  printf(" ​ *pixels ​       : 0x%X(%d)\n",​ (uint32_t)pScreen->​pixels,​ (uint32_t)pScreen->​pixels);​
 +  printf(" ​ offset ​        : 0x%X(%d)\n",​ (uint32_t)pScreen->​offset,​ (uint32_t)pScreen->​offset);​
 +  // struct private_hwdata *hwdata;​ /​** Hardware-specific surface info */
 +  /** clipping information */
 +  //​ SDL_Rect clip_rect;​ /​**<​ Read-only */
 +  /** Allow recursive locks */
 +  printf(" ​ locked ​        : 0x%X(%d)\n",​ (uint32_t)pScreen->​locked,​ (uint32_t)pScreen->​locked);​
 +  Uint32 locked;​ /​**<​ Private */
 +  /** info for fast blit mapping to other surfaces */
 +  // struct SDL_BlitMap *map;​ /​**<​ Private */
 +  /** format version, bumped at every change to invalidate blit maps */
 +  printf(" ​ format_version : 0x%X(%d)\n",​ (uint32_t)pScreen->​format_version,​ (uint32_t)pScreen->​format_version);​
 +  /** Reference count -- used when freeing surface */
 +  printf(" ​ refcount ​      : 0x%X(%d)\n",​ (uint32_t)pScreen->​refcount,​ (uint32_t)pScreen->​refcount);​
 +  ​
 +  SDL_ShowCursor(SDL_DISABLE/​* SDL_ENABLE or SDL_DISABLE */);
 +  /* Must be clear action before doing other actions.. */
 +  sdl_clear_surface( pScreen );
 +  //​ SDL_Delay(1000/​*ms*/​);​
 +  //​ sdl_clear_surface( pScreen );
 +  ​
 +  IsInLoop = 1;
 +  /* Start event loop */  ​
 +  while (IsInLoop)
 +  {
 +  if ( SDL_PollEvent( &Event ) == 0) /* While there'​s an event to handle */
 +  {
 +  continue;​
 +  }
 +  ​
 +  if ( ( Event.type == SDL_KEYDOWN ) || ( Event.type == SDL_KEYUP ) )
 +  { /* Keys pressed or reased */
 +  pKeyEvent = (SDL_KeyboardEvent *)&​Event;​
 +  switch ( pKeyEvent->​keysym.sym )
 +  {
 +  case SDLK_BACKSPACE:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - BACKSPACE\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - BACKSPACE\n"​);​
 +  }
 +  break;
 +  case SDLK_RETURN:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - RETURN\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - RETURN\n"​);​
 +  IsInLoop = 0;
 +  }
 +  break;
 +  case SDLK_0:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 0\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 0\n");
 +  }
 +  break;
 +  case SDLK_1:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 1\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 1\n");
 +  }
 +  break;
 +  case SDLK_2:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 2\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 2\n");
 +  }
 +  break;
 +  case SDLK_3:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 3\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 3\n");
 +  }
 +  break;
 +  case SDLK_4:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 4\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 4\n");
 +  }
 +  break;
 +  case SDLK_5:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 5\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 5\n");
 +  }
 +  break;
 +  case SDLK_6:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 6\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 6\n");
 +  }
 +  break;
 +  case SDLK_7:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 7\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 7\n");
 +  }
 +  break;
 +  case SDLK_8:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 8\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 8\n");
 +  }
 +  break;
 +  case SDLK_9:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - 9\n");
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - 9\n");
 +  }
 +  break;
 +  case SDLK_F1:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F1\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - F1\n"​);​
 +  if ( SDL_FillRect(pScreen,​ NULL, SDL_MapRGB(pScreen->​format,​ 255/*B*/, 0/*G*/, 0/*R*/)) < 0)
 +  {
 +  printf("​SDL_FillRect Fail! : %s\n", SDL_GetError());​
 +  }
 +  else
 +  {
 +  printf("​SDL_FillRect OK\n"​);​
 +  SDL_Flip( pScreen );
 +  }
 +  }
 +  break;
 +  case SDLK_F2:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F2\n"​);​
 +  }
 +  else
 +  {
 +  SDL_Surface * pBMP;
 +  printf("​SDL Event Keys release! - F2\n"​);​
 +  ​
 +  pBMP = SDL_LoadBMP("​logo.bmp"​);​
 +  if( pBMP == (SDL_Surface *)0 )
 +  {
 +  printf("​Fail to SDL_LoadBMP !\n");
 +  }
 +  else
 +  {
 +  printf("​BMP SDL LoadBMP OK\n"​);​
 +  ​
 +  printf("​BMP Surface Address = 0x%X(%d)\n",​ (uint32_t)pBMP,​ (uint32_t)pBMP);​
 +  printf(" ​ flags          : 0x%08X\n",​ pBMP->​flags);​
 +  //​ SDL_PixelFormat *format;​ /​**<​ Read-only */
 +  printf(" ​ w              : %d\n", pBMP->​w);​
 +  printf(" ​ h              : %d\n", pBMP->​h);​
 +  printf(" ​ pitch          : %d\n", pBMP->​pitch);​
 +  printf(" ​ *pixels ​       : 0x%X(%d)\n",​ (uint32_t)pBMP->​pixels,​ (uint32_t)pBMP->​pixels);​
 +  printf(" ​ offset ​        : 0x%X(%d)\n",​ (uint32_t)pBMP->​offset,​ (uint32_t)pBMP->​offset);​
 +  //​ struct private_hwdata *hwdata;​ /​** Hardware-specific surface info */
 +  /** clipping information */
 +  //​ SDL_Rect clip_rect;​ /​**<​ Read-only */
 +  /** Allow recursive locks */
 +  printf(" ​ locked ​        : 0x%X(%d)\n",​ (uint32_t)pBMP->​locked,​ (uint32_t)pBMP->​locked);​
 +  Uint32 locked;​ /​**<​ Private */
 +  /** info for fast blit mapping to other surfaces */
 +  //​ struct SDL_BlitMap *map;​ /​**<​ Private */
 +  /** format version, bumped at every change to invalidate blit maps */
 +  printf(" ​ format_version : 0x%X(%d)\n",​ (uint32_t)pBMP->​format_version,​ (uint32_t)pBMP->​format_version);​
 +  /** Reference count -- used when freeing surface */
 +  printf(" ​ refcount ​      : 0x%X(%d)\n",​ (uint32_t)pBMP->​refcount,​ (uint32_t)pBMP->​refcount);​
 +  ​
 +  //​ SDL_BlitSurface( pBMP, NULL, pScreen, NULL );
 +  sdl_copy_surface( pScreen, 0/*X*/, 0/*Y*/, pBMP );
 +  ​
 +   ​   // 화면을 갱신
 +  SDL_Flip( pScreen );
 +  SDL_FreeSurface( pBMP );
 +  }
 +  }
 +  break;
 +  case SDLK_F3:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F3\n"​);​
 +  }
 +  else
 +  {
 +  SDL_Surface * pText;
 +  TTF_Font * pFont;
 +  SDL_Color pTextColor = { 255, 255, 255 }; /* The color of the font */
 +  ​
 +  printf("​SDL Event Keys release! - F3\n"​);​
 +  ​
 +  if( TTF_Init() < 0 )
 +  {
 +  printf("​Fail to TTF_Init !\n");
 +  }
 +  else
 +  {
 +  printf("​OK to TTF_Init !\n");
 +  /* Open the font */
 +  pFont = TTF_OpenFont( TEST_FONT_FILE,​ 28 );
 +   ​   /* If there was an error in loading the font */
 +   ​   if( pFont == (TTF_Font *)0 )
 +   ​   {
 +  printf("​Fail to TTF_OpenFont !\n");
 +   ​   }
 +  else
 +  {
 +  printf("​OK to TTF_OpenFont !\n");
 +  ​
 +  /* 한글 출력을 위해 TTF_RenderUTF8_Solid 사용 */
 +  /* For display HanGul using TTF_RenderUTF8_Solid */
 +  pText = TTF_RenderUTF8_Solid( pFont, TEST_DISPLAY_STRING,​ pTextColor ); /* Render the text */
 +  /*
 +  TTF_RenderText_Solid  ​ Draw LATIN1 text in solid mode
 +  TTF_RenderUTF8_Solid  ​ Draw UTF8 text in solid mode
 +  TTF_RenderUNICODE_Solid  ​ Draw UNICODE text in solid mode
 +  TTF_RenderGlyph_Solid  ​ Draw a UNICODE glyph in solid mode
 +  */
 +  /* If there was an error in rendering the text */
 +  if( pText == (SDL_Surface *)0 )
 +  {
 +  printf("​Fail to TTF_RenderText_Solid !\n");
 +  }
 +  else
 +  {
 +  printf("​OK to TTF_RenderText_Solid !\n");
 +  ​
 +  /* Apply the images to the screen */
 +  sdl_copy_surface( pScreen, 0/*X*/, 150/*Y*/, pText );
 +   ​   /* Update the screen */
 +  SDL_Flip( pScreen );
 +  ​
 +  /* Free the text surface */
 +  SDL_FreeSurface( pText );
 +  }
 +  /* Close the font that was used */
 +  TTF_CloseFont( pFont );
 +  }
 +  /* Quit SDL_ttf */
 +  TTF_Quit();​
 +  }
 +  }
 +  break;
 +  case SDLK_F4:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F4\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - F4\n"​);​
 +  if ( sdl_clear_surface( pScreen ) != 0 )
 +  {
 +  printf("​clar scrren fail\n"​);​
 +  }
 +  else
 +  {
 +  printf("​clar scrren OK\n"​);​
 +  }
 +  }
 +  break;
 +  case SDLK_F5:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F5\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - F5\n"​);​
 +  }
 +  break;
 +  case SDLK_F6:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F6\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - F6\n"​);​
 +  if( Brightness != 7 )
 +  {
 +  Brightness ++;
 +  if( bright_set(Brightness) != 0 )
 +  {
 +  printf("​Fail to bright_set\n"​);​
 +  }
 +  printf("​bright -\n");
 +  }
 +  }
 +  break;
 +  case SDLK_F7:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - F7\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - F7\n"​);​
 +  if( Brightness != 0 )
 +  {
 +  Brightness --;
 +  if( bright_set(Brightness) != 0 )
 +  {
 +  printf("​Fail to bright_set\n"​);​
 +  }
 +  printf("​bright +\n");
 +  }
 +  }
 +  break;
 +  default:​
 +  if ( Event.type == SDL_KEYDOWN )
 +  {
 +  printf("​SDL Event Keys pressed! - ??​\n"​);​
 +  }
 +  else
 +  {
 +  printf("​SDL Event Keys release! - ??​\n"​);​
 +  }
 +  break;
 +  }
 +  #​ifdef DEBUG_LOW_LEVEL_KEY_INPUT_INFO
 +  printf("​ The keyboard device index = %d\n", pKeyEvent->​which);​
 +  printf("​ The SDL_PRESSED or SDL_RELEASED = %d\n", pKeyEvent->​state);​
 +  printf("​ hardware specific scancode = %d\n", pKeyEvent->​keysym.scancode);​
 +  printf("​ SDL virtual keysym = %d\n", pKeyEvent->​keysym.sym);​
 +  printf("​ current key modifiers = %d\n", pKeyEvent->​keysym.mod);​
 +  printf("​ translated character = %d\n", pKeyEvent->​keysym.unicode);​
 +  #endif
 +  }
 +  else
 +  {
 +  switch (Event.type)
 +  {
 +  case SDL_ACTIVEEVENT:​ /​**<​ Application loses/gains visibility */
 +  printf("​SDL Event Application loses/gains visibility!\n"​);​
 +  break;
 +  case SDL_KEYDOWN:​ /​**<​ Keys pressed */
 +  printf("​SDL Event Keys pressed!\n"​);​
 +  break;
 +  case SDL_KEYUP:​ /​**<​ Keys released */
 +  printf("​SDL Event Keys released!\n"​);​
 +  break;
 +  case SDL_MOUSEMOTION:​ /​**<​ Mouse moved */
 +  printf("​SDL Event Mouse moved!\n"​);​
 +  break;
 +  case SDL_MOUSEBUTTONDOWN:/​**<​ Mouse button pressed */
 +  printf("​SDL Event Mouse button pressed!\n"​);​
 +  break;
 +  case SDL_MOUSEBUTTONUP:​ /​**<​ Mouse button released */
 +  printf("​SDL Event Mouse button released!\n"​);​
 +  break;
 +  case SDL_JOYAXISMOTION:​ /​**<​ Joystick axis motion */
 +  printf("​SDL Event Joystick axis motion!\n"​);​
 +  break;
 +  case SDL_JOYBALLMOTION:​ /​**<​ Joystick trackball motion */
 +  printf("​SDL Event Joystick trackball motion!\n"​);​
 +  break;
 +  case SDL_JOYHATMOTION:​ /​**<​ Joystick hat position change */
 +  printf("​SDL Event Joystick hat position change!\n"​);​
 +  break;
 +  case SDL_JOYBUTTONDOWN:​ /​**<​ Joystick button pressed */
 +  printf("​SDL Event Joystick button pressed!\n"​);​
 +  break;
 +  case SDL_JOYBUTTONUP:​ /​**<​ Joystick button released */
 +  printf("​SDL Event Joystick button released!\n"​);​
 +  break;
 +  case SDL_QUIT:​ /​**<​ User-requested quit */
 +  printf("​SDL Event User-requested quit!\n"​);​
 +  break;
 +  case SDL_SYSWMEVENT:​ /​**<​ System specific event */
 +  printf("​SDL Event System specific!\n"​);​
 +  break;
 +  case SDL_EVENT_RESERVEDA:/​**<​ Reserved for future use.. */
 +  printf("​SDL Event reserved!\n"​);​
 +  break;
 +  case SDL_EVENT_RESERVEDB:/​**<​ Reserved for future use.. */
 +  printf("​SDL Event reserved!\n"​);​
 +  break;
 +  case SDL_VIDEORESIZE:​ /​**<​ User resized video mode */
 +  printf("​SDL Event User resized video mode!\n"​);​
 +  break;
 +  case SDL_VIDEOEXPOSE:​ /​**<​ Screen needs to be redrawn */
 +  printf("​SDL Event Screen needs to be redrawn!\n"​);​
 +  break;
 +  case SDL_EVENT_RESERVED2:/​**<​ Reserved for future use.. */
 +  case SDL_EVENT_RESERVED3:/​**<​ Reserved for future use.. */
 +  case SDL_EVENT_RESERVED4:/​**<​ Reserved for future use.. */
 +  case SDL_EVENT_RESERVED5:/​**<​ Reserved for future use.. */
 +  case SDL_EVENT_RESERVED6:/​**<​ Reserved for future use.. */
 +  case SDL_EVENT_RESERVED7:/​**<​ Reserved for future use.. */
 +  printf("​SDL Event reserved!\n"​);​
 +  break;
 +  case SDL_USEREVENT:​
 +  printf("​SDL Event user!\n"​);​
 +  break;
 +  default:​
 +  printf("​SDL Event unknown!\n"​);​
 +  break;
 +  }
 +  }
 +  }
 +  ​
 +  SDL_FreeSurface( pScreen );
 +  }
 +  ​
 +  SDL_Quit();​
 +  return 0;
 +  }
 +
 +make
 +
  
sdl_app.1504248975.txt.gz · Last modified: 2017/09/01 15:56 by 1.241.172.144