diff options
Diffstat (limited to 'system/joystick/joystick.diff')
-rw-r--r-- | system/joystick/joystick.diff | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/system/joystick/joystick.diff b/system/joystick/joystick.diff new file mode 100644 index 0000000000..37e21bd07e --- /dev/null +++ b/system/joystick/joystick.diff @@ -0,0 +1,229 @@ +Only in joystick-20051019: debian +Only in /home/kajla/usr/src/joystick/: .svn +diff -ur joystick-20051019/utils/jscal.c /home/kajla/usr/src/joystick/utils/jscal.c +--- joystick-20051019/utils/jscal.c 2004-10-19 09:51:52.000000000 +0200 ++++ /home/kajla/usr/src/joystick/utils/jscal.c 2007-09-26 12:56:33.000000000 +0200 +@@ -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)) { ++ perror("jscal: error getting axis map"); ++ exit(1); ++ } ++ if (ioctl(fd, JSIOCGBTNMAP, &buttonmap)) { ++ 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,107 @@ + 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; ++ } ++ ++ //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; ++ } ++ ++ if (p) { ++ fprintf(stderr, "jscal: too many values\n"); ++ exit(1); ++ } ++ ++ if (ioctl(fd, JSIOCSAXMAP, &axmap)) { ++ perror("jscal: error setting axis map"); ++ exit(1); ++ } ++ if (ioctl(fd, JSIOCSBTNMAP, &buttonmap)) { ++ perror("jscal: error setting button map"); ++ exit(1); ++ } ++} ++ + void set_correction(char *p) + { + int i,j; +@@ -461,14 +606,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 +626,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 +691,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; +Only in /home/kajla/usr/src/joystick/utils: .svn |