[PD-cvs] externals/hcs/hid Makefile,1.1,1.2 hid.c,1.1,1.2 make-arrays-from-input.h.pl,1.1,1.2

Hans-Christoph Steiner eighthave at users.sourceforge.net
Mon Oct 18 23:10:54 CEST 2004


Update of /cvsroot/pure-data/externals/hcs/hid
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6592

Modified Files:
	Makefile hid.c make-arrays-from-input.h.pl 
Log Message:
[hid] now outputs downcased event names from input.h and Makefile should work on MacOSX and GNU/Linux

Index: Makefile
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/hid/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Makefile	18 Oct 2004 03:55:33 -0000	1.1
--- Makefile	18 Oct 2004 21:10:48 -0000	1.2
***************
*** 1,14 ****
  CC=gcc
  
! all: input_arrays pd_darwin
  
- pd_darwin: hid.pd_darwin macosxhid.pd_darwin
  
! clean: ; rm -f *.pd_darwin *.o *~ input_arrays.h
  
! # ----------------------- DARWIN i386 -----------------------
  
  .SUFFIXES: .pd_darwin
  
  PDEXECUTABLE = ../../../pd/bin/pd
  
--- 1,29 ----
  CC=gcc
  
! OS_NAME = $(shell uname -s)
  
  
! # ----------------------- GNU/LINUX i386 -----------------------
! ifeq ($(OS_NAME),Linux)
! LDFLAGS = -export_dynamic  -shared
! .SUFFIXES: .pd_linux
  
! all: input_arrays pd_linux
! pd_linux: hid.pd_linux
  
+ endif
+ 
+ # ----------------------- DARWIN -----------------------
+ ifeq ($(OS_NAME),Darwin)
+ LDFLAGS = -bundle  -bundle_loader $(PDEXECUTABLE) -L/sw/lib
  .SUFFIXES: .pd_darwin
  
+ all: input_arrays pd_darwin
+ pd_darwin: hid.pd_darwin
+ 
+ endif
+ 
+ # ----------------------- GENERAL -----------------------
+ 
  PDEXECUTABLE = ../../../pd/bin/pd
  
***************
*** 19,28 ****
  INCLUDE =  -I../ -I../../../pd/src -I/usr/local/include -I./HID\ Utilities\ Source
  
- LDFLAGS = -bundle  -bundle_loader $(PDEXECUTABLE) -L/sw/lib
- 
  .c.pd_darwin:
  	$(CC) $(CFLAGS) $(INCLUDE) -o $*.o -c $*.c
  	$(CC) $(LDFLAGS) -o "$*.pd_darwin" "$*.o" -lc -lm 
  
  input_arrays:
  	./make-arrays-from-input.h.pl > input_arrays.h
--- 34,51 ----
  INCLUDE =  -I../ -I../../../pd/src -I/usr/local/include -I./HID\ Utilities\ Source
  
  .c.pd_darwin:
  	$(CC) $(CFLAGS) $(INCLUDE) -o $*.o -c $*.c
  	$(CC) $(LDFLAGS) -o "$*.pd_darwin" "$*.o" -lc -lm 
  
+ .c.pd_linux:
+ 	$(CC) $(CFLAGS) $(INCLUDE) -o $*.o -c $*.c
+ 	ld $(LDFLAGS) -o $*.pd_linux $*.o -lc -lm
+ 	strip --strip-unneeded $*.pd_linux
+ 	rm $*.o
+ 
  input_arrays:
  	./make-arrays-from-input.h.pl > input_arrays.h
+ 
+ 
+ clean: ; rm -f *.pd_* *.o *~ input_arrays.h
+ 

Index: make-arrays-from-input.h.pl
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/hid/make-arrays-from-input.h.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** make-arrays-from-input.h.pl	18 Oct 2004 03:55:33 -0000	1.1
--- make-arrays-from-input.h.pl	18 Oct 2004 21:10:49 -0000	1.2
***************
*** 31,35 ****
  		  {
  				$returnArray[0] = $index;
! 				$returnArray[1] = "$1";
  				return @returnArray;
  		  }
--- 31,35 ----
  		  {
  				$returnArray[0] = $index;
! 				$returnArray[1] = lc("$1");
  				return @returnArray;
  		  }
***************
*** 48,52 ****
  #	 print("$arrayToPrint[0] $#arrayToPrint \n");
  
! 	 print("int ${arrayToPrint[0]}_TOTAL = $#arrayToPrint;  /* # of elements in array */\n");
  	 print("char *${arrayToPrint[0]}[$#arrayToPrint] = {");
  
--- 48,52 ----
  #	 print("$arrayToPrint[0] $#arrayToPrint \n");
  
! 	 print("int ${arrayToPrint[0]}_total = $#arrayToPrint;  /* # of elements in array */\n");
  	 print("char *${arrayToPrint[0]}[$#arrayToPrint] = {");
  
***************
*** 71,86 ****
  open(INPUT_H, "<$FILENAME");
  
! while(<INPUT_H>)
  {
! 	 if (m/#define (FF_STATUS|[A-Z_]*?)_/)
  	 {
  # filter EV_VERSION and *_MAX
! 		  m/#define\s+(EV_VERSION|[A-Z_]+_MAX)\s+/;
  #		  print "$1 \n";
  		  switch ($1) 
  		  {
! 		  # types
  				case "EV"        { ($index, $value) = getDataFromHeaderLine($_); $EV[$index] = $value; }
!         # codes
  				case "SYN"       { ($index, $value) = getDataFromHeaderLine($_); $SYN[$index] = $value; }
  				case "KEY"       { ($index, $value) = getDataFromHeaderLine($_); $KEY[$index] = $value; }
--- 71,86 ----
  open(INPUT_H, "<$FILENAME");
  
! while (<INPUT_H>)
  {
! 	 if (m/\#define (FF_STATUS|[A-Z_]*?)_/)
  	 {
  # filter EV_VERSION and *_MAX
! 		  m/\#define\s+(EV_VERSION|[A-Z_]+_MAX)\s+/;
  #		  print "$1 \n";
  		  switch ($1) 
  		  {
! 				# types
  				case "EV"        { ($index, $value) = getDataFromHeaderLine($_); $EV[$index] = $value; }
! 				# codes
  				case "SYN"       { ($index, $value) = getDataFromHeaderLine($_); $SYN[$index] = $value; }
  				case "KEY"       { ($index, $value) = getDataFromHeaderLine($_); $KEY[$index] = $value; }
***************
*** 95,99 ****
  				case "FF"        { ($index, $value) = getDataFromHeaderLine($_); $FF[$index] = $value; }
  # there doesn't seem to be any PWR events yet...
! 				case "PWR"       { ($index, $value) = getDataFromHeaderLine($_); $PWR[$index] = $value; }
  				case "FF_STATUS" { ($index, $value) = getDataFromHeaderLine($_); $FF_STATUS[$index] = $value; }
  #				else { print " none $_"; } 
--- 95,99 ----
  				case "FF"        { ($index, $value) = getDataFromHeaderLine($_); $FF[$index] = $value; }
  # there doesn't seem to be any PWR events yet...
! #				case "PWR"       { ($index, $value) = getDataFromHeaderLine($_); $PWR[$index] = $value; }
  				case "FF_STATUS" { ($index, $value) = getDataFromHeaderLine($_); $FF_STATUS[$index] = $value; }
  #				else { print " none $_"; } 
***************
*** 102,120 ****
  }
  
! printCArray("EV", at EV);
! printCArray("SYN", at SYN);
! printCArray("KEY", at KEY);
! printCArray("REL", at REL);
! printCArray("ABS", at ABS);
! printCArray("MSC", at MSC);
! printCArray("LED", at LED);
! printCArray("SND", at SND);
! printCArray("REP", at REP);
! printCArray("FF", at FF);
! printCArray("PWR", at PWR);
! printCArray("FF_STATUS", at FF_STATUS);
  
  # print array of arrays
! print("char **EVENTNAMES[",$#EV+1,"] = {");
  for($i = 0; $i < $#EV; $i++)
  {
--- 102,122 ----
  }
  
! printCArray("ev", at EV);
! printCArray("ev_syn", at SYN);
! printCArray("ev_key", at KEY);
! printCArray("ev_rel", at REL);
! printCArray("ev_abs", at ABS);
! printCArray("ev_msc", at MSC);
! printCArray("ev_led", at LED);
! printCArray("ev_snd", at SND);
! printCArray("ev_rep", at REP);
! printCArray("ev_ff", at FF);
! # there doesn't seem to be any PWR events yet...
! #printCArray("pwr", at PWR);
! print("char *ev_pwr[1] = { NULL };\n\n");
! printCArray("ev_ff_status", at FF_STATUS);
  
  # print array of arrays
! print("char **event_names[",$#EV+1,"] = {");
  for($i = 0; $i < $#EV; $i++)
  {
***************
*** 126,130 ****
  	 { 
  		  $_ = $EV[$i];
! 		  m/EV_([A-Z_]+)/;
  		  print("$1,");  
  	 }
--- 128,132 ----
  	 { 
  		  $_ = $EV[$i];
! 		  m/(ev_[a-z_]+)/;
  		  print("$1,");  
  	 }
***************
*** 132,136 ****
  }
  $_ = $EV[$#EV];
! m/EV_([A-Z_]+)/;
  print("$1\n };\n");
  
--- 134,138 ----
  }
  $_ = $EV[$#EV];
! m/(ev_[a-z_]+)/;
  print("$1\n };\n");
  

Index: hid.c
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/hid/hid.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** hid.c	18 Oct 2004 03:55:33 -0000	1.1
--- hid.c	18 Oct 2004 21:10:48 -0000	1.2
***************
*** 157,206 ****
      
    /* cycle through all possible event types */
!   for (eventType = 0; eventType < EV_MAX; eventType++) {
!     if (test_bit(eventType, bitmask[0])) {
!       post(" %s (type %d) ", events[eventType] ? events[eventType] : "?", eventType);
!       //	post("Event type %d",eventType);
! 
!       /* get bitmask representing supported button types */
!       ioctl(x->x_fd, EVIOCGBIT(eventType, KEY_MAX), bitmask[eventType]);
! 
!       /* cycle through all possible event codes (axes, keys, etc.) 
!        * testing to see which are supported  
!        */
!       for (eventCode = 0; eventCode < KEY_MAX; eventCode++) 
! 	if (test_bit(eventCode, bitmask[eventType])) {
! 	  post("    Event code %d (%s)", eventCode, names[eventType] ? (names[eventType][eventCode] ? names[eventType][eventCode] : "?") : "?");
! 
! 	  switch(eventType) {
  // the API changed at some point...
  #ifdef EV_RST
! 	  case EV_RST:
! 	    break;
  #else 
! 	  case EV_SYN:
! 	    break;
  #endif
! 	  case EV_KEY:
! 	    buttons++;
! 	    break;
! 	  case EV_REL:
! 	    rel_axes++;
! 	    break;
! 	  case EV_ABS:
! 	    abs_axes++;
! 	    break;
! 	  case EV_MSC:
! 	    break;
! 	  case EV_LED:
! 	    break;
! 	  case EV_SND:
! 	    break;
! 	  case EV_REP:
! 	    break;
! 	  case EV_FF:
! 	    ff++;
! 	    break;
! 	  }
! 	}
      }        
    }
--- 157,210 ----
      
    /* cycle through all possible event types */
!   for (eventType = 0; eventType < EV_MAX; eventType++) 
!   {
!     if (test_bit(eventType, bitmask[0])) 
! 	 {
! 		 post(" %s (type %d) ", ev[eventType] ? ev[eventType] : "?", eventType);
! 		 //	post("Event type %d",eventType);
! 		 
! 		 /* get bitmask representing supported button types */
! 		 ioctl(x->x_fd, EVIOCGBIT(eventType, KEY_MAX), bitmask[eventType]);
! 		 
! 		 /* cycle through all possible event codes (axes, keys, etc.) 
! 		  * testing to see which are supported  
! 		  */
! 		 for (eventCode = 0; eventCode < KEY_MAX; eventCode++) 
! 			 if (test_bit(eventCode, bitmask[eventType])) 
! 			 {
! 				 post("    Event code %s (%d)", event_names[eventType] ? (event_names[eventType][eventCode] ? event_names[eventType][eventCode] : "?") : "?", eventCode);
! /* 	  post("    Event code %d (%s)", eventCode, names[eventType] ? (names[eventType][eventCode] ? names[eventType][eventCode] : "?") : "?"); */
! 				
! 				switch(eventType) {
  // the API changed at some point...
  #ifdef EV_RST
! 					case EV_RST:
! 						break;
  #else 
! 					case EV_SYN:
! 						break;
  #endif
! 					case EV_KEY:
! 						buttons++;
! 						break;
! 					case EV_REL:
! 						rel_axes++;
! 						break;
! 					case EV_ABS:
! 						abs_axes++;
! 						break;
! 					case EV_MSC:
! 						break;
! 					case EV_LED:
! 						break;
! 					case EV_SND:
! 						break;
! 					case EV_REP:
! 						break;
! 					case EV_FF:
! 						ff++;
! 						break;
! 				}
! 			}
      }        
    }
***************
*** 224,233 ****
  	while (read (x->x_fd, &(x->x_input_event), sizeof(struct input_event)) > -1) {
  		outlet_float (x->x_input_event_value_outlet, (int)x->x_input_event.value);
! 		outlet_float (x->x_input_event_code_outlet, x->x_input_event.code);
! 		outlet_float (x->x_input_event_type_outlet, x->x_input_event.type);
  		/* input_event.time is a timeval struct from <sys/time.h> */
  		/*   outlet_float (x->x_input_event_time_outlet, x->x_input_event.time); */
  	}
! #else defined (__APPLE__)
  	pRecDevice pCurrentHIDDevice = GetSetCurrentDevice (gWindow);
  	pRecElement pCurrentHIDElement = GetSetCurrentElement (gWindow);
--- 228,238 ----
  	while (read (x->x_fd, &(x->x_input_event), sizeof(struct input_event)) > -1) {
  		outlet_float (x->x_input_event_value_outlet, (int)x->x_input_event.value);
! 		outlet_symbol (x->x_input_event_code_outlet, gensym(event_names[x->x_input_event.type][x->x_input_event.code]));
! 		outlet_symbol (x->x_input_event_type_outlet, gensym(ev[x->x_input_event.type]));
  		/* input_event.time is a timeval struct from <sys/time.h> */
  		/*   outlet_float (x->x_input_event_time_outlet, x->x_input_event.time); */
  	}
! #endif
! #ifdef __APPLE__
  	pRecDevice pCurrentHIDDevice = GetSetCurrentDevice (gWindow);
  	pRecElement pCurrentHIDElement = GetSetCurrentElement (gWindow);
***************
*** 308,312 ****
    x->x_started = 0;
    x->x_delay = DEFAULT_DELAY;
!   x->x_devname = gensym(HID_DEVICE);
  
    x->x_clock = clock_new(x, (t_method)hid_read);
--- 313,317 ----
    x->x_started = 0;
    x->x_delay = DEFAULT_DELAY;
!   x->x_devname = gensym("/dev/input/event0");
  
    x->x_clock = clock_new(x, (t_method)hid_read);





More information about the Pd-cvs mailing list