Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv18239/src

Modified Files:
	option.c 
Log Message:
Added ability to change buttonmap via options menu

Index: option.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- option.c	17 Mar 2007 22:40:06 -0000	1.37
+++ option.c	17 Mar 2007 23:16:19 -0000	1.38
@@ -26,6 +26,7 @@
 int notdone;                    /* not done flag */
 
 static char newkeys[14];
+static char newbuttons[10];
 
 char *localmes[] = { "Show owner on local planets",
                      "Show resources on local planets",
@@ -322,6 +323,7 @@
 #endif
     {1, "allow wheel actions", &allowWheelActions, 0, 0, 0, NULL, NULL},
     {1, "new keymap entries: %s", 0, 0, newkeys, 13, NULL, NULL},
+    {1, "new buttonmap entries: %s", 0, 0, newbuttons, 9, NULL, NULL},
     {1, "ignore the capslock key", &ignoreCaps, 0, 0, 0, NULL, NULL},
     {1, "%d updates per second", &updatesPerSec, 0, 0, 0, 0, &updates_range},
     {1, "%d 1/10 sec screen refresh delay", &redrawDelay, 0, 0, 0, 0,
@@ -457,6 +459,7 @@
     notdone = 1;
 
     *newkeys = '\0';
+    *newbuttons = '\0';
     if (FirstMenu == NULL)
     {
         MaxOptions = InitOptionMenus ();
@@ -1010,6 +1013,93 @@
     }
     *newkeys = '\0';
 
+    /* update buttonmap */
+    str = newbuttons;
+    while (*str != '\0' && *(str + 1) != '\0')
+    {
+        switch (*str++)
+        {
+        case '1':
+            buttonmap[1] = getctrlkey (&str);
+            break;
+        case '2':
+            buttonmap[2] = getctrlkey (&str);
+            break;
+        case '3':
+            buttonmap[3] = getctrlkey (&str);
+            break;
+        /* XButton 1 */
+        case '4':
+            buttonmap[4] = getctrlkey (&str);
+            break;
+        /* XButton 2 */
+        case '5':
+            buttonmap[5] = getctrlkey (&str);
+            break;
+        /* Wheel Up */
+        case '6':
+            buttonmap[6] = getctrlkey (&str);
+            break;
+        /* Wheel Down */
+        case '7':
+            buttonmap[7] = getctrlkey (&str);
+            break;
+
+#ifdef SHIFTED_MOUSE
+        case '8':
+            buttonmap[8] = getctrlkey (&str);
+            break;
+        case '9':
+            buttonmap[9] = getctrlkey (&str);
+            break;
+        case 'a':
+            buttonmap[10] = getctrlkey (&str);
+            break;
+        case 'b':
+            buttonmap[11] = getctrlkey (&str);
+            break;
+        case 'c':
+            buttonmap[12] = getctrlkey (&str);
+            break;
+        case 'd':
+            buttonmap[13] = getctrlkey (&str);
+            break;
+        case 'e':
+            buttonmap[14] = getctrlkey (&str);
+            break;
+        case 'f':
+            buttonmap[15] = getctrlkey (&str);
+            break;
+        case 'g':
+            buttonmap[16] = getctrlkey (&str);
+            break;
+        case 'h':
+            buttonmap[17] = getctrlkey (&str);
+            break;
+        case 'i':
+            buttonmap[18] = getctrlkey (&str);
+            break;
+        case 'j':
+            buttonmap[19] = getctrlkey (&str);
+            break;
+        case 'k':
+            buttonmap[20] = getctrlkey (&str);
+            break;
+        case 'l':
+            buttonmap[21] = getctrlkey (&str);
+            break;
+        case 'm':
+            buttonmap[22] = getctrlkey (&str);
+            break;
+#endif /* SHIFTED_MOUSE */
+            
+        default:
+            LineToConsole ("%c ignored in buttonmap\n", *(str - 1));
+            break;
+        }
+    }
+    *newbuttons = '\0';
+
     if (updatesPerSec != lastUpdateSpeed)
     {
         sendUpdatePacket (1000000 / updatesPerSec);