Author: jajcus                       Date: Sun Jan  2 17:03:38 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- added patch allowing axes and button remapping
- Release .2

---- Files affected:
packages/joystick:
   joystick.spec (1.17 -> 1.18) , joystick-mapping.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/joystick/joystick.spec
diff -u packages/joystick/joystick.spec:1.17 
packages/joystick/joystick.spec:1.18
--- packages/joystick/joystick.spec:1.17        Tue Feb 13 09:06:36 2007
+++ packages/joystick/joystick.spec     Sun Jan  2 18:03:32 2011
@@ -4,7 +4,8 @@
 Summary(pl.UTF-8):     Narzędzia do obsługi joysticka
 Name:          joystick
 Version:       1.2.15
-Release:       2.%{_snap}.1
+Patch0:                %{name}-mapping.patch
+Release:       2.%{_snap}.2
 License:       GPL
 Group:         Applications
 Source0:       %{name}-%{_snap}.tar.gz
@@ -33,6 +34,7 @@
 
 %prep
 %setup -q -n %{name}
+%patch0 -p1
 
 %build
 %{__make} jstest jscal inputattach evtest ffset fftest\
@@ -61,6 +63,10 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.18  2011/01/02 17:03:32  jajcus
+- added patch allowing axes and button remapping
+- Release .2
+
 Revision 1.17  2007/02/13 08:06:36  glen
 - tabs in preamble
 

================================================================
Index: packages/joystick/joystick-mapping.patch
diff -u /dev/null packages/joystick/joystick-mapping.patch:1.1
--- /dev/null   Sun Jan  2 18:03:38 2011
+++ packages/joystick/joystick-mapping.patch    Sun Jan  2 18:03:32 2011
@@ -0,0 +1,254 @@
+diff -dur joystick.orig/jscal.1 joystick/jscal.1
+--- joystick.orig/jscal.1      2006-04-30 19:54:44.000000000 +0200
++++ joystick/jscal.1   2011-01-02 17:39:49.000000000 +0100
+@@ -18,6 +18,9 @@
+ .I \-s <x,y,z...>, --set-correction <x,y,z...>
+ Sets correction to specified values.
+ .TP
++.I \-u, --set-mappings 
<n_of_axes,axmap1,axmap2,...,n_of_buttons,btnmap1,btnmap2,...>
++Sets axis and button mappings.
++.TP
+ .I \-t --test-center
+ Tests if the joystick is corectly calibrated. Returns 2 if the axes are
+ not calibrated, 3 if buttons were pressed, 1 if there was any other
+@@ -29,5 +32,9 @@
+ .I \-p, --print-correction
+ Prints the current correction settings. The format of the output is
+ a jscal command line.
++.TP
++.I \-q, --print-mappings
++Prints the current axis and button mappings. The format of the output is
++a jscal command line.
+ .SH SEE ALSO
+ \fBjstest\fP(1), \fBjsattach\fP(1).
+diff -dur joystick.orig/jscal.c joystick/jscal.c
+--- joystick.orig/jscal.c      2004-10-19 09:51:52.000000000 +0200
++++ joystick/jscal.c   2011-01-02 17:58:15.000000000 +0100
+@@ -61,6 +61,8 @@
+ 
+ int fd;
+ struct js_corr corr[MAX_AXES];
++__u8 axmap[ABS_MAX + 1];
++__u16 buttonmap[(KEY_MAX - BTN_MISC + 1)];
+ char axes, buttons, fuzz;
+ int version;
+ struct correction_data corda[MAX_AXES];
+@@ -163,6 +165,12 @@
+       puts("  -V             --version           Prints the version numbers");
+       puts("  -p             --print-correction  Prints the current settings 
as a jscal");
+       puts("                                       command line");
++      puts("  -q             --print-mappings    Print the current axis and 
button");
++  puts("                                       mappings as a jscal command 
line");
++      puts("  -u <n_of_axes,axmap1,axmap2,...,");
++  puts("      n_of_buttons,btnmap1,btnmap2,");
++  puts("      ...>       --set-mappings      Sets axis and button mappings to 
the");
++  puts("                                        specified values");
+       putchar('\n');
+ }
+ 
+@@ -316,6 +324,42 @@
+               (version >> 8) & 0xff, version & 0xff);
+ }
+ 
++void print_mappings(char *devicename)
++{
++      int i;
++
++      if (ioctl(fd, JSIOCGAXES, &axes)) {
++              perror("jscal: error getting axes");
++              exit(1);
++      }
++      if (ioctl(fd, JSIOCGBUTTONS, &buttons)) {
++              perror("jscal: error getting buttons");
++              exit(1);
++      }
++      if (ioctl(fd, JSIOCGAXMAP, &axmap) < 0) {
++              perror("jscal: error getting axis map");
++              exit(1);
++      }
++      if (ioctl(fd, JSIOCGBTNMAP, &buttonmap) < 0) {
++              perror("jscal: error getting button map");
++              exit(1);
++      }
++
++      printf("jscal -u %d", axes);
++      for (i = 0; i < axes; i++)
++  {
++              printf( ",%d", axmap[i]);
++      }
++
++  printf(",%d", buttons);
++      for (i = 0; i < buttons; i++)
++  {
++              printf( ",%d", buttonmap[i]);
++      }
++
++      printf(" %s\n",devicename);
++}
++
+ void print_settings(char *devicename)
+ {
+       int i,j;
+@@ -342,6 +386,112 @@
+       printf(" %s\n",devicename);
+ }
+ 
++// n axes                      n buttons
++// 
10,0,1,2,5,6,16,17,40,41,42:13,288,289,290,291,292,293,294,295,296,297,298,299,300
++void set_mappings(char *p)
++{
++      int i;
++      int axes_on_cl = 0;
++      int btns_on_cl = 0;
++      int axis_mapping = 0;
++      int btn_mapping = 0;
++
++      if (ioctl(fd, JSIOCGAXES, &axes)) {
++              perror("jscal: error getting axes");
++              exit(1);
++      }
++      if (ioctl(fd, JSIOCGBUTTONS, &buttons)) {
++              perror("jscal: error getting buttons");
++              exit(1);
++      }
++
++      if (axes > MAX_AXES) axes = MAX_AXES;
++
++      if (!p) {
++              fprintf(stderr, "jscal: missing argument for --set-mappings\n");
++              exit(1);
++      }
++
++  //axes
++      sscanf(p, "%d", &axes_on_cl);
++      p = strstr(p, ",");
++
++      if (axes_on_cl != axes) {
++              fprintf(stderr, "jscal: joystick has %d axes and not %d as 
specified on command line\n", 
++                      axes, axes_on_cl);
++              exit(1);
++      }
++
++
++      for (i = 0; i < axes; i++)
++  {
++              if (!p) {
++                      fprintf(stderr, "jscal: missing mapping for axis %d\n", 
i);
++                      exit(1);
++              }
++              sscanf(++p, "%d", &axis_mapping);
++              p = strstr(p, ",");
++
++
++              if (axis_mapping > ABS_MAX + 1) {
++                      fprintf(stderr, "jscal: invalid axis mapping for axis 
%d (max is %d)\n", i, ABS_MAX + 1);
++                      exit(1);
++              }
++              axmap[i] = axis_mapping;
++      }
++
++      if (p) {
++        //buttons
++              sscanf(++p, "%d", &btns_on_cl);
++              p = strstr(p, ",");
++
++              if (btns_on_cl != buttons) {
++                      fprintf(stderr, "jscal: joystick has %d buttons and not 
%d as specified on command line\n", 
++                              buttons, btns_on_cl);
++                      exit(1);
++              }
++
++
++              for (i = 0; i < buttons; i++) {
++                      if (!p) {
++                              fprintf(stderr, "jscal: missing mapping for 
button %d\n", i);
++                              exit(1);
++                      }
++                      sscanf(++p, "%d", &btn_mapping);
++                      p = strstr(p, ",");
++
++
++                      if (btn_mapping > KEY_MAX) {
++                              fprintf(stderr, "jscal: invalid button mapping 
for button %d (max is %d)\n", i, KEY_MAX);
++                              exit(1);
++                      }
++                      if (btn_mapping < BTN_MISC) {
++                              fprintf(stderr, "jscal: invalid button mapping 
for button %d (min is %d)\n", i, BTN_MISC);
++                              exit(1);
++                      }
++                      buttonmap[i] = btn_mapping;
++              }
++       }
++      else {
++              // no mapping for buttons
++              btns_on_cl = 0;
++      }
++
++      if (p) {
++              fprintf(stderr, "jscal: too many values\n");
++              exit(1);
++      }
++      
++      if (ioctl(fd, JSIOCSAXMAP, &axmap) < 0) {
++              perror("jscal: error setting axis map");
++              exit(1);
++      }
++      if (btns_on_cl && ioctl(fd, JSIOCSBTNMAP, &buttonmap) < 0) {
++              perror("jscal: error setting button map");
++              exit(1);
++      }
++}
++
+ void set_correction(char *p)
+ {
+       int i,j;
+@@ -461,14 +610,18 @@
+       char *parameter = NULL;
+       int t;
+ 
++  // /usr/include/getopt.h
+       static struct option long_options[] =
+       {
+               {"calibrate", no_argument, NULL, 'c'},
+               {"help", no_argument, NULL, 'h'},
+               {"set-correction", required_argument, NULL, 's'},
++              {"set-mappings", required_argument, NULL, 'u'},
+               {"test-center", no_argument, NULL, 't'},
+               {"version", no_argument, NULL, 'V'},
+-              {"print-correction", no_argument, NULL, 'p'}
++              {"print-correction", no_argument, NULL, 'p'},
++              {"print-mappings", no_argument, NULL, 'q'},
++    {NULL, no_argument, NULL, 0 }
+       };
+ 
+       if (argc == 1) {
+@@ -477,10 +630,12 @@
+       }
+ 
+       do {
+-              t = getopt_long(argc, argv, "chps:vVt", long_options, 
&option_index);
++              t = getopt_long(argc, argv, "chpqu:s:vVt", long_options, 
&option_index);
+               switch (t) {
+                       case 'p':
++                      case 'q':
+                       case 's':
++                      case 'u':
+                       case 'c':
+                       case 't':
+                       case 'V':
+@@ -540,9 +695,15 @@
+               case 'p':
+                       print_settings(argv[argc -1]);
+                       break;
++              case 'q':
++                      print_mappings(argv[argc -1]);
++                      break;
+               case 's':
+                       set_correction(parameter);
+                       break;
++              case 'u':
++                      set_mappings(parameter);
++                      break;
+               case 't':
+                       test_center();
+                       break;
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/joystick/joystick.spec?r1=1.17&r2=1.18&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to