[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Numeric wireless keyboard



I think you probably can't get those messages without creating a window, so try creating a window before getting events.

 Also, you don't want to have a separate poll and wait func, which are both called and both check for different messages. Both those functions remove messages from the queue, so if a your poll function gets a SDL_KEYDOWN message, it would end up throwing out the message and then your wait function would never receive it. Just do the Poll thing, and make it's switch statement do the prints for SDL_KEYDOWN as well.

Anyways, once your test program works for your normal keyboard, then you can try it out with the wireless in order to learn how SDL is or is not reading that things key data, which will help you understand where the problem lies and how to solve it.

On Thu, Sep 3, 2009 at 2:05 PM, PierreLafrance1@xxxxxxxxxxxx <PierreLafrance1@xxxxxxxxxxxx> wrote:
#include <stdio.h>
#include <stdlib.h>
#include "/usr/include/SDL/SDL.h"

int MySDL_WaitEvent()
{
   printf("About to call SDL_WaitEvent(&event)\n");
   SDL_Event event;
   SDL_WaitEvent(&event);

   switch (event.type)
   {
       printf("In switch/case of SDL_WaitEvent(&event)\n");
       case SDL_KEYDOWN:
           printf("The %s key was pressed!\n",
               SDL_GetKeyName(event.key.keysym.sym));
           break;
       case SDL_QUIT:
           exit(0);
   }
}


int MySDL_PollEvent()
{
   printf("About to call SDL_PollEvent(&event)\n");
   SDL_Event event;
   while ( SDL_PollEvent(&event) )
   {
       switch (event.type)
       {
           printf("In switch/case of SDL_PollEvent(&event)\n");
           case SDL_MOUSEMOTION:
               printf("Mouse moved by %d,%d to (%d,%d)\n",
                   event.motion.xrel, event.motion.yrel,
                   event.motion.x, event.motion.y);
               break;
           case SDL_MOUSEBUTTONDOWN:
               printf("Mouse button %d pressed at (%d,%d)\n",
                   event.button.button, event.button.x, event.button.y);
               break;
           case SDL_QUIT:
               exit(0);
       }
   }
}

int main(int argc, char *argv[])
{
   printf("About to call SDL_Init()\n");
   if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
   {
       //fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
       printf("Unable to init SDL: %s\n", SDL_GetError());
       exit(1);
   }
   while(1)
   {
       printf("About to call MySDL_PollEvent()\n");
       MySDL_PollEvent();
       printf("About to call MySDL_WaitEvent()\n");
       MySDL_WaitEvent();
   }   //  while

   printf("About to call atexit()\n");
   atexit(SDL_Quit);
}

--
Pierre Lafrance
--