summaryrefslogtreecommitdiff
path: root/system/joystick/joystick.diff
diff options
context:
space:
mode:
Diffstat (limited to 'system/joystick/joystick.diff')
-rw-r--r--system/joystick/joystick.diff229
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