83322e0
--- WindowMaker-0.91.0/src/event.c.vns	2005-05-18 22:00:15 +0400
83322e0
+++ WindowMaker-0.91.0/src/event.c	2005-05-18 22:01:18 +0400
83322e0
@@ -1405,6 +1405,21 @@
83322e0
         }
83322e0
         break;
83322e0
 #endif /* !LITE */
83322e0
+     case WKBD_MOVELEFTBOTTOM:
83322e0
+     case WKBD_MOVEBOTTOM:
83322e0
+     case WKBD_MOVERIGHTBOTTOM:
83322e0
+     case WKBD_MOVELEFT:
83322e0
+     case WKBD_MOVECENTER:
83322e0
+     case WKBD_MOVERIGHT:
83322e0
+     case WKBD_MOVELEFTTOP:
83322e0
+     case WKBD_MOVETOP:
83322e0
+     case WKBD_MOVERIGHTTOP:
83322e0
+	if (ISMAPPED(wwin) && ISFOCUSED(wwin) && 
83322e0
+		(!WFLAGP(wwin, no_resizable) || !WFLAGP(wwin, no_movable))) {
83322e0
+	    CloseWindowMenu(scr);
83322e0
+	    wKeyboardMoveWindowAdditional(wwin, command);
83322e0
+	}
83322e0
+	break;
83322e0
     case WKBD_WINDOWMENU:
83322e0
         if (ISMAPPED(wwin) && ISFOCUSED(wwin))
83322e0
             OpenWindowMenu(wwin, wwin->frame_x,
83322e0
--- WindowMaker-0.91.0/src/defaults.c.vns	2005-05-18 22:00:15 +0400
83322e0
+++ WindowMaker-0.91.0/src/defaults.c	2005-05-18 22:00:15 +0400
83322e0
@@ -705,6 +705,33 @@
83322e0
     NULL,				getKeybind,	setKeyGrab
83322e0
     },
83322e0
 #endif /* LITE */
83322e0
+    {"MoveLeftBottomKey", "None",		(void*)WKBD_MOVELEFTBOTTOM,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveBottomKey", "None",		(void*)WKBD_MOVEBOTTOM,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveRightBottomKey", "None",		(void*)WKBD_MOVERIGHTBOTTOM,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveLeftKey", "None",		(void*)WKBD_MOVELEFT,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveCenterKey", "None",		(void*)WKBD_MOVECENTER,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveRightKey", "None",		(void*)WKBD_MOVERIGHT,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveLeftTopKey", "None",		(void*)WKBD_MOVELEFTTOP,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveTopKey", "None",		(void*)WKBD_MOVETOP,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
+    {"MoveRightTopKey", "None",		(void*)WKBD_MOVERIGHTTOP,
83322e0
+    NULL,                               getKeybind,     setKeyGrab
83322e0
+    },
83322e0
     {"AllMinimizeKey", "None",		(void*)WKBD_ALLMINIMIZE,
83322e0
     NULL,                               getKeybind,     setKeyGrab
83322e0
     },
83322e0
--- WindowMaker-0.91.0/src/keybind.h.vns	2005-05-18 22:00:15 +0400
83322e0
+++ WindowMaker-0.91.0/src/keybind.h	2005-05-18 22:02:39 +0400
83322e0
@@ -78,12 +78,21 @@
83322e0
 
83322e0
 #define WKBD_SWITCH_SCREEN      45
83322e0
 #define WKBD_ALLMINIMIZE	46
83322e0
+#define WKBD_MOVELEFTBOTTOM	47
83322e0
+#define WKBD_MOVEBOTTOM		48
83322e0
+#define WKBD_MOVERIGHTBOTTOM	49
83322e0
+#define WKBD_MOVELEFT		50
83322e0
+#define WKBD_MOVECENTER		51
83322e0
+#define WKBD_MOVERIGHT		52
83322e0
+#define WKBD_MOVELEFTTOP	53
83322e0
+#define WKBD_MOVETOP		54
83322e0
+#define WKBD_MOVERIGHTTOP	55
83322e0
 
83322e0
 #ifdef KEEP_XKB_LOCK_STATUS
83322e0
-# define WKBD_TOGGLE		47
83322e0
-# define WKBD_TMP		48
83322e0
+# define WKBD_TOGGLE		56
83322e0
+# define WKBD_TMP		57
83322e0
 #else
83322e0
-# define WKBD_TMP		47
83322e0
+# define WKBD_TMP		56
83322e0
 #endif
83322e0
 
83322e0
 #ifdef VIRTUAL_DESKTOP
83322e0
--- WindowMaker-0.91.0/src/moveres.c.vns	2005-05-18 22:00:15 +0400
83322e0
+++ WindowMaker-0.91.0/src/moveres.c	2005-05-18 22:03:33 +0400
83322e0
@@ -44,6 +44,8 @@
83322e0
 #include "screen.h"
83322e0
 #include "xinerama.h"
83322e0
 
83322e0
+#include "keybind.h"
83322e0
+
83322e0
 #include <WINGs/WINGsP.h>
83322e0
 
83322e0
 
83322e0
@@ -1415,10 +1417,15 @@
83322e0
                 case XK_Escape:
83322e0
                     done=1;
83322e0
                     break;
83322e0
-                case XK_Up:
83322e0
 #ifdef XK_KP_Up
83322e0
                 case XK_KP_Up:
83322e0
 #endif
83322e0
+                case XK_8:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_y=-src_y;
83322e0
+                    }
83322e0
+		    break;
83322e0
+                case XK_Up:
83322e0
                 case XK_k:
83322e0
                     if (ctrlmode){
83322e0
                         if (moment != UP)
83322e0
@@ -1429,10 +1436,15 @@
83322e0
                     }
83322e0
                     else off_y-=kspeed;
83322e0
                     break;
83322e0
-                case XK_Down:
83322e0
 #ifdef XK_KP_Down
83322e0
                 case XK_KP_Down:
83322e0
 #endif
83322e0
+                case XK_2:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_y=-src_y+scr_height-wh;
83322e0
+                    }
83322e0
+		    break;
83322e0
+                case XK_Down:
83322e0
                 case XK_j:
83322e0
                     if (ctrlmode){
83322e0
                         if (moment != DOWN)
83322e0
@@ -1442,10 +1454,15 @@
83322e0
                     }
83322e0
                     else off_y+=kspeed;
83322e0
                     break;
83322e0
-                case XK_Left:
83322e0
 #ifdef XK_KP_Left
83322e0
                 case XK_KP_Left:
83322e0
 #endif
83322e0
+                case XK_4:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_x=-src_x;
83322e0
+                    }
83322e0
+		    break;
83322e0
+                case XK_Left:
83322e0
                 case XK_h:
83322e0
                     if (ctrlmode) {
83322e0
                         if (moment != LEFT)
83322e0
@@ -1456,10 +1473,15 @@
83322e0
                     }
83322e0
                     else off_x-=kspeed;
83322e0
                     break;
83322e0
-                case XK_Right:
83322e0
 #ifdef XK_KP_Right
83322e0
                 case XK_KP_Right:
83322e0
 #endif
83322e0
+                case XK_6:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_x=-src_x+scr_width-ww;
83322e0
+                    }
83322e0
+		    break;
83322e0
+                case XK_Right:
83322e0
                 case XK_l:
83322e0
                     if (ctrlmode) {
83322e0
                         if (moment != RIGHT)
83322e0
@@ -1469,6 +1491,51 @@
83322e0
                     }
83322e0
                     else off_x+=kspeed;
83322e0
                     break;
83322e0
+#ifdef XK_KP_Home
83322e0
+                case XK_KP_Home:
83322e0
+#endif
83322e0
+                case XK_7:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_x=-src_x;
83322e0
+                        off_y=-src_y;
83322e0
+                    }
83322e0
+		    break;
83322e0
+#ifdef XK_KP_Prior
83322e0
+                case XK_KP_Prior:
83322e0
+#endif
83322e0
+		case XK_9:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_y=-src_y;
83322e0
+                        off_x=-src_x+scr_width-ww;
83322e0
+                    }
83322e0
+		    break;
83322e0
+#ifdef XK_KP_Next
83322e0
+                case XK_KP_Next:
83322e0
+#endif
83322e0
+		case XK_3:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_y=-src_y+scr_height-wh;
83322e0
+                        off_x=-src_x+scr_width-ww;
83322e0
+                    }
83322e0
+		    break;
83322e0
+#ifdef XK_KP_End
83322e0
+                case XK_KP_End:
83322e0
+#endif
83322e0
+		case XK_1:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_y=-src_y+scr_height-wh;
83322e0
+                        off_x=-src_x;
83322e0
+                    }
83322e0
+		    break;
83322e0
+#ifdef XK_KP_Begin
83322e0
+                case XK_KP_Begin:
83322e0
+#endif
83322e0
+		case XK_5:
83322e0
+	            if (!ctrlmode){
83322e0
+                        off_y=-src_y+(scr_height-wh)/2;
83322e0
+                        off_x=-src_x+(scr_width-ww)/2;
83322e0
+                    }
83322e0
+		    break;
83322e0
                 }
83322e0
 
83322e0
                 ww=w;wh=h;
83322e0
@@ -2426,3 +2493,59 @@
83322e0
     }
83322e0
 }
83322e0
 
83322e0
+int
83322e0
+wKeyboardMoveWindowAdditional(WWindow *wwin, int command)
83322e0
+{
83322e0
+    WScreen *scr = wwin->screen_ptr;
83322e0
+    int w = wwin->frame->core->width;
83322e0
+    int h = wwin->frame->core->height;
83322e0
+    int scr_width = wwin->screen_ptr->scr_width;
83322e0
+    int scr_height = wwin->screen_ptr->scr_height;
83322e0
+    int src_x = wwin->frame_x;
83322e0
+    int src_y = wwin->frame_y;
83322e0
+    int rc = scr_width - w;
83322e0
+    int bc = scr_height - h;
83322e0
+    int new_x = src_x;
83322e0
+    int new_y = src_y;
83322e0
+
83322e0
+    switch (command) {
83322e0
+     case WKBD_MOVELEFTBOTTOM:
83322e0
+        new_x = 0;
83322e0
+        new_y = bc;
83322e0
+        break;
83322e0
+     case WKBD_MOVEBOTTOM:
83322e0
+        new_y = bc;
83322e0
+        break;
83322e0
+     case WKBD_MOVERIGHTBOTTOM:
83322e0
+        new_x = rc;
83322e0
+        new_y = bc;
83322e0
+        break;
83322e0
+     case WKBD_MOVELEFT:
83322e0
+        new_x = 0;
83322e0
+        break;
83322e0
+     case WKBD_MOVECENTER:
83322e0
+        new_x = rc/2;
83322e0
+        new_y = bc/2;
83322e0
+        break;
83322e0
+     case WKBD_MOVERIGHT:
83322e0
+        new_x = rc;
83322e0
+        break;
83322e0
+     case WKBD_MOVELEFTTOP:
83322e0
+        new_x = 0;
83322e0
+        new_y = 0;
83322e0
+        break;
83322e0
+     case WKBD_MOVETOP:
83322e0
+        new_y = 0;
83322e0
+        break;
83322e0
+     case WKBD_MOVERIGHTTOP:
83322e0
+        new_x = rc;
83322e0
+        new_y = 0;
83322e0
+    }
83322e0
+
83322e0
+    if (!scr->selected_windows) {
83322e0
+        wWindowMove(wwin, new_x, new_y);
83322e0
+        wWindowSynthConfigureNotify(wwin);
83322e0
+    }
83322e0
+    return 1;
83322e0
+}
83322e0
+