From 16b269a2c884ea981c3149c14caea2487471dc2a Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Mon, 24 May 2010 23:44:24 -0400 Subject: [PATCH] Added Test Directory. Touch input works in touchSimp for wacom bamboo fun on Ubuntu linux. Not yet integrated into library. Should support other touch devices and other linux distros, but not tested on anything else. --- touchTest/makefile | 3 + touchTest/makefile~ | 3 + touchTest/testIn | Bin 0 -> 7451 bytes touchTest/testIn.c | 69 +++++++++++ touchTest/testIn.c~ | 69 +++++++++++ touchTest/touchPong | Bin 0 -> 28731 bytes touchTest/touchPong.c | 272 +++++++++++++++++++++++++++++++++++++++++ touchTest/touchPong.c~ | 243 ++++++++++++++++++++++++++++++++++++ touchTest/touchSimp | Bin 0 -> 28540 bytes touchTest/touchSimp.c | 238 ++++++++++++++++++++++++++++++++++++ touchTest/touchSimp.c~ | 241 ++++++++++++++++++++++++++++++++++++ 11 files changed, 1138 insertions(+) create mode 100644 touchTest/makefile create mode 100644 touchTest/makefile~ create mode 100755 touchTest/testIn create mode 100644 touchTest/testIn.c create mode 100644 touchTest/testIn.c~ create mode 100755 touchTest/touchPong create mode 100644 touchTest/touchPong.c create mode 100644 touchTest/touchPong.c~ create mode 100755 touchTest/touchSimp create mode 100644 touchTest/touchSimp.c create mode 100644 touchTest/touchSimp.c~ diff --git a/touchTest/makefile b/touchTest/makefile new file mode 100644 index 000000000..820205541 --- /dev/null +++ b/touchTest/makefile @@ -0,0 +1,3 @@ +SDLTest : touchSimp.c touchPong.c + gcc touchSimp.c -o touchSimp `sdl-config --cflags --libs` -g + gcc touchPong.c -o touchPong `sdl-config --cflags --libs` -g diff --git a/touchTest/makefile~ b/touchTest/makefile~ new file mode 100644 index 000000000..f27b5aa3d --- /dev/null +++ b/touchTest/makefile~ @@ -0,0 +1,3 @@ +SDLTest : touchSimp.c touchPong.c + gcc touchSimp.c -o touchSimp `sdl-config --cflags --libs` -gSDLTest : + gcc touchPong.c -o touchPong `sdl-config --cflags --libs` -g diff --git a/touchTest/testIn b/touchTest/testIn new file mode 100755 index 0000000000000000000000000000000000000000..6ec332a5c71551edfb3feba2ed7af05c0bc3080f GIT binary patch literal 7451 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + +int main (int argc, char *argv[]) +{ + struct input_event ev[64]; + int fd, rd, value, size = sizeof (struct input_event); + char name[256] = "Unknown"; + char *device = NULL; + + //Setup check + if (argv[1] == NULL){ + printf("Please specify (on the command line) the path to the dev event interface device\n"); + exit (0); + } + + if ((getuid ()) != 0) + printf ("You are not root! This may not work...\n"); + + if (argc > 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + while (1){ + + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + printf("time: %i\n type: %X\n code: %X\n value: %i\n ",ev[0].time,ev[0].type,ev[0].value,ev[0].value); + + value = ev[0].value; + + if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Only read the key press event + printf ("Code[%d]\n", (ev[1].code)); + } + } + + return 0; +} diff --git a/touchTest/testIn.c~ b/touchTest/testIn.c~ new file mode 100644 index 000000000..73a8364b0 --- /dev/null +++ b/touchTest/testIn.c~ @@ -0,0 +1,69 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + +int main (int argc, char *argv[]) +{ + struct input_event ev[64]; + int fd, rd, value, size = sizeof (struct input_event); + char name[256] = "Unknown"; + char *device = NULL; + + //Setup check + if (argv[1] == NULL){ + printf("Please specify (on the command line) the path to the dev event interface device\n"); + exit (0); + } + + if ((getuid ()) != 0) + printf ("You are not root! This may not work...\n"); + + if (argc > 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + while (1){ + + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + printf("time: %i\n type: %X\n code: %X\n value: %i\n ",ev[0].time,ev[0].type,ev[0].value,ev[0].value); + + value = ev[0].value; + + if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Only read the key press event + printf ("Code[%d]\n", (ev[1].code)); + } + } + + return 0; +} diff --git a/touchTest/touchPong b/touchTest/touchPong new file mode 100755 index 0000000000000000000000000000000000000000..29e892b462ebea82de922f31e41e8095bcd2283e GIT binary patch literal 28731 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 +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +//Pong Code +Point ball,ballv; + + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + ball.x = screen->w/2; + ball.y = screen->h/2; + ballv.x = -3; + ballv.y = 1; + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + + //Pong code + ball.x += ballv.x; + ball.y += ballv.y; + for(i=0;i 0 || finger[i].y > 0) + { + int d2 = (finger[i].x-ball.x)*(finger[i].x-ball.x) + + (finger[i].y-ball.y)*(finger[i].y-ball.y); + ballv.x += (50*(ball.x-finger[i].x))/d2; + ballv.y += (30*(ball.y-finger[i].y))/d2; + } + } + if((unsigned int)ball.x > screen->w){ + ball.x = screen->w/2; + ball.y = screen->h/2; + ballv.x = -3; + ballv.y = 1; + } + if((unsigned int)ball.y > screen->h) ballv.y *= -1; + printf("(%i,%i)\n",ball.x,ball.y); + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} diff --git a/touchTest/touchPong.c~ b/touchTest/touchPong.c~ new file mode 100644 index 000000000..4a60816eb --- /dev/null +++ b/touchTest/touchPong.c~ @@ -0,0 +1,243 @@ +#include +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + +//Pong Code +Point ball,ballv; + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + ball.x = screen->width()/2; + ball.y = screen->height()/2; + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} diff --git a/touchTest/touchSimp b/touchTest/touchSimp new file mode 100755 index 0000000000000000000000000000000000000000..0caf1d15a2bc7b50101c6e91c88fdddeeeac137a GIT binary patch literal 28540 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 Jkf=Ul^}lfpK-~ZU literal 0 HcmV?d00001 diff --git a/touchTest/touchSimp.c b/touchTest/touchSimp.c new file mode 100644 index 000000000..b89f78207 --- /dev/null +++ b/touchTest/touchSimp.c @@ -0,0 +1,238 @@ +#include +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} diff --git a/touchTest/touchSimp.c~ b/touchTest/touchSimp.c~ new file mode 100644 index 000000000..218cb4a8b --- /dev/null +++ b/touchTest/touchSimp.c~ @@ -0,0 +1,241 @@ +#include +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + Point ball,ballv; + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + ball.x = screen->width()/2; + ball.y = screen->height()/2; + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +}