diff -u -r WindowMaker-0.17.5/src/WindowMaker.h WindowMaker-0.17.5.patch/src/WindowMaker.h
--- WindowMaker-0.17.5/src/WindowMaker.h	Fri Jul 24 03:11:37 1998
+++ WindowMaker-0.17.5.patch/src/WindowMaker.h	Fri Jul 31 13:11:22 1998
@@ -219,6 +219,14 @@
     char on_top_transients;	       /* transient windows are kept on top
 					* of their owners */
     char title_justification;	       /* titlebar text alignment */
+#ifdef DROPSHADOW
+    char title_shadow;                 /* shadow text */
+    int title_shadow_width;            /* shadow text width */
+    int title_shadow_height;
+#endif
+#ifdef MULTILOCK
+    char modelock;
+#endif
 
     char no_dithering;		       /* use dithering or not */
     
diff -u -r WindowMaker-0.17.5/src/defaults.c WindowMaker-0.17.5.patch/src/defaults.c
--- WindowMaker-0.17.5/src/defaults.c	Sat Jul 25 11:13:08 1998
+++ WindowMaker-0.17.5.patch/src/defaults.c	Fri Jul 31 13:18:21 1998
@@ -132,6 +132,10 @@
 static int setMenuDisabledColor();
 static int setMenuTitleBack();
 static int setMenuTextBack();
+#ifdef DROPSHADOW
+static int setShadowColor();
+static int setShadow();
+#endif /* DROPSHADOW */
 static int setHightlight();
 static int setHightlightText();
 static int setKeyGrab();
@@ -359,6 +363,20 @@
     {"UTitleColor",	"black",		(void*)WS_UNFOCUSED,
 	  NULL,				getColor,	setWTitleColor
     },
+#ifdef DROPSHADOW
+    {"ShadowColor",     "black",                NULL,
+          NULL,                         getColor,       setShadowColor
+    },
+    {"Shadow", "Yes",                    NULL,
+         &wPreferences.title_shadow, getBool,  setShadow
+    },
+    {"ShadowWidth", "2",                    NULL,
+         &wPreferences.title_shadow_width, getInt,  setShadow
+    },
+    {"ShadowHeight", "2",                    NULL,
+         &wPreferences.title_shadow_height, getInt,  setShadow
+    },
+#endif /* DROPSHADOW */
     {"FTitleBack",	"(solid, black)",      	NULL,
 	  NULL,				getTexture,	setFTitleBack
     },
@@ -478,6 +496,14 @@
     {"Workspace10Key", "None",			(void*)WKBD_WORKSPACE10,
 	  NULL,				getKeybind,	setKeyGrab
     },
+#ifdef MULTILOCK
+    {"ToggleKey", "None",                      (void*)WKBD_TOGGLE,
+          NULL,                         getKeybind,     setKeyGrab
+    },
+    {"ModeLock", "Yes",                    NULL,
+          &wPreferences.modelock, getBool,  NULL
+    },
+#endif
 };
 
 
@@ -2595,6 +2621,24 @@
     return REFRESH_MENU_TEXTURES;
 }
 
+#ifdef DROPSHADOW
+static int
+setShadowColor(WScreen *scr, WDefaultEntry *entry, XColor *color, void *foo)
+{
+    if (scr->shadow_title_pixel!=scr->white_pixel &&
+        scr->shadow_title_pixel!=scr->black_pixel) {
+       wFreeColor(scr, scr->select_text_pixel);
+    }
+    scr->shadow_title_pixel = color->pixel;
+    return REFRESH_FORE_COLOR;
+}
+
+static int
+setShadow(void *foo, void *foo2, void *foo3, void *foo4)
+{
+           return REFRESH_FORE_COLOR;
+}
+#endif /* DROPSHADOW */
 
 static int
 setKeyGrab(WScreen *scr, WDefaultEntry *entry, WShortKey *shortcut, long index)
diff -u -r WindowMaker-0.17.5/src/event.c WindowMaker-0.17.5.patch/src/event.c
--- WindowMaker-0.17.5/src/event.c	Wed Jul 22 05:23:55 1998
+++ WindowMaker-0.17.5.patch/src/event.c	Fri Jul 31 13:27:57 1998
@@ -31,6 +31,9 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
+#ifdef MULTILOCK
+#include <X11/XKBlib.h>
+#endif
 #ifdef SHAPE
 #include <X11/extensions/shape.h>
 #endif
@@ -1370,6 +1373,14 @@
         if (!wPreferences.flags.noclip)
             wDockRaiseLower(wScreen->workspaces[wScreen->current_workspace]->clip);
         break;
+#ifdef MULTILOCK
+     case WKBD_TOGGLE:
+        if(wPreferences.modelock){
+            XkbLockGroup(dpy,XkbUseCoreKbd,!wwin->frame->languagemode);
+            wwin->frame->languagemode= !wwin->frame->languagemode;
+        }
+        break;
+#endif
     }
 }
 
diff -u -r WindowMaker-0.17.5/src/framewin.c WindowMaker-0.17.5.patch/src/framewin.c
--- WindowMaker-0.17.5/src/framewin.c	Sun Jul 19 11:38:31 1998
+++ WindowMaker-0.17.5.patch/src/framewin.c	Fri Jul 31 13:28:19 1998
@@ -762,6 +762,31 @@
 		x = (fwin->titlebar->width - w) / 2;
 	    break;
 	}
+
+#ifdef DROPSHADOW
+       if(wPreferences.title_shadow){
+           int shadowx,shadowy,shadoww;
+           shadoww=wPreferences.title_shadow_width;
+           XSetForeground(dpy, *fwin->title_gc,
+           fwin->screen_ptr->shadow_title_pixel);
+           for(shadowx=0;shadowx<shadoww;shadowx++)
+           for(shadowy=0;shadowy<shadoww;shadowy++)
+#ifdef I18N_MB
+               XmbDrawString(dpy, fwin->titlebar->window, (*fwin->font)->font,
+                              *fwin->title_gc,
+                              x+shadowx+wPreferences.title_shadow_height,
+                             (*fwin->font)->y + 4 + shadowy +
+                             wPreferences.title_shadow_height,
+                             title, titlelen);
+#else /* !I18N_MB */
+               XDrawString(dpy, fwin->titlebar->window, *fwin->title_gc,
+                           x+shadowx+wPreferences.title_shadow_height,
+                           (*fwin->font)->y + 4 + shadowy +
+                           wPreferences.title_shadow_height,
+                           title, titlelen);
+#endif /* !I18N_MB */
+       }
+#endif /* DROPSHADOW */
 	
 	XSetForeground(dpy, *fwin->title_gc, 
 		       fwin->title_pixel[fwin->flags.state]);
diff -u -r WindowMaker-0.17.5/src/framewin.h WindowMaker-0.17.5.patch/src/framewin.h
--- WindowMaker-0.17.5/src/framewin.h	Sat Jul 18 08:52:42 1998
+++ WindowMaker-0.17.5.patch/src/framewin.h	Fri Jul 31 13:28:29 1998
@@ -70,6 +70,9 @@
     short resizebar_corner_width;
 
     char *title;		       /* window name (title) */
+#ifdef MULTILOCK
+    int languagemode;
+#endif
 
     /* thing that uses this frame. passed as data to callbacks */
     void *child;
diff -u -r WindowMaker-0.17.5/src/keybind.h WindowMaker-0.17.5.patch/src/keybind.h
--- WindowMaker-0.17.5/src/keybind.h	Sat Jul 18 08:52:43 1998
+++ WindowMaker-0.17.5.patch/src/keybind.h	Fri Jul 31 13:28:38 1998
@@ -59,7 +59,12 @@
 #define WKBD_NEXTWSLAYER	32
 #define WKBD_PREVWSLAYER	33
 
+#ifdef MULTILOCK
+#define WKBD_TOGGLE             34
+#define WKBD_LAST               35
+#else
 #define WKBD_LAST               34
+#endif
 
 
 typedef struct WShortKey {
diff -u -r WindowMaker-0.17.5/src/screen.h WindowMaker-0.17.5.patch/src/screen.h
--- WindowMaker-0.17.5/src/screen.h	Thu Jul 23 09:46:04 1998
+++ WindowMaker-0.17.5.patch/src/screen.h	Fri Jul 31 13:22:28 1998
@@ -123,6 +123,9 @@
     unsigned long select_text_pixel;
     /* foreground colors */
     unsigned long window_title_pixel[3];/* window titlebar text (foc, unfoc, pfoc)*/
+#ifdef DROPSHADOW
+    unsigned long shadow_title_pixel;   /* shadow titlebar text */
+#endif
     unsigned long menu_title_pixel[3];  /* menu titlebar text */
     unsigned long clip_title_pixel[2];  /* clip title text */
     unsigned long mtext_pixel;	        /* menu item text */
diff -u -r WindowMaker-0.17.5/src/window.c WindowMaker-0.17.5.patch/src/window.c
--- WindowMaker-0.17.5/src/window.c	Sun Jul 26 04:09:40 1998
+++ WindowMaker-0.17.5.patch/src/window.c	Fri Jul 31 13:26:17 1998
@@ -24,6 +24,9 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
+#ifdef MULTILOCK
+#include <X11/XKBlib.h>
+#endif
 #ifdef SHAPE
 #include <X11/extensions/shape.h>
 #endif
@@ -1243,6 +1246,13 @@
 void
 wWindowFocus(WWindow *wwin)
 {    
+#ifdef MULTILOCK
+    if(wPreferences.modelock){
+        if(!wwin->flags.focused){
+            XkbLockGroup(dpy,XkbUseCoreKbd,wwin->frame->languagemode);
+        }
+    }
+#endif
     wFrameWindowChangeState(wwin->frame, WS_FOCUSED);
 
     wwin->flags.focused=1;
@@ -1261,6 +1271,11 @@
 void
 wWindowUnfocus(WWindow *wwin)
 {
+#ifdef MULTILOCK
+    XkbGetIndicatorState(dpy,XkbUseCoreKbd,&wwin->frame->languagemode);
+    if(wwin->frame->languagemode>=16)wwin->frame->languagemode=1;
+    else wwin->frame->languagemode=0;
+#endif
     CloseWindowMenu(wwin->screen_ptr);
 
     wFrameWindowChangeState(wwin->frame, wwin->flags.semi_focused 
diff -u -r WindowMaker-0.17.5/util/getstyle.c WindowMaker-0.17.5.patch/util/getstyle.c
--- WindowMaker-0.17.5/util/getstyle.c	Tue Jun 30 20:16:57 1998
+++ WindowMaker-0.17.5.patch/util/getstyle.c	Fri Jul 31 13:30:08 1998
@@ -33,6 +33,10 @@
     "MenuDisabledColor", 
     "MenuTitleBack",	
     "MenuTextBack",
+    "Shadow",
+    "ShadowWidth",
+    "ShadowHeight",
+    "ShadowColor",
     NULL
 };
 
