summary refs log tree commit diff
path: root/kbfunc.c
diff options
context:
space:
mode:
authortodd <todd>2007-11-13 23:08:49 +0000
committertodd <todd>2007-11-13 23:08:49 +0000
commit576d299095ac1a0aec7fef700d94f6c1a53c2bcb (patch)
tree87db35baa2c14d5c49a3f73125b18b49bbcc518e /kbfunc.c
parentdc39e11ff9da56fe22f9c29eb90be8508e50d0be (diff)
downloadcwm-576d299095ac1a0aec7fef700d94f6c1a53c2bcb.tar.gz
cwm-576d299095ac1a0aec7fef700d94f6c1a53c2bcb.tar.xz
cwm-576d299095ac1a0aec7fef700d94f6c1a53c2bcb.zip
enable pointer movement in cwm via C-<arrowkeys>
looked over by oga@
Diffstat (limited to 'kbfunc.c')
-rw-r--r--kbfunc.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/kbfunc.c b/kbfunc.c
index 05e8d93..1275a83 100644
--- a/kbfunc.c
+++ b/kbfunc.c
@@ -113,6 +113,44 @@ kbfunc_client_resize(struct client_ctx *cc, void *arg)
 }
 
 void
+kbfunc_ptrmove(struct client_ctx *cc, void *arg)
+{
+	int px,py,mx,my,flags,amt;
+	struct screen_ctx *sc = screen_current();
+	my = mx = 0;
+
+	flags = (int)arg;
+	amt = MOVE_AMOUNT;
+
+	if (flags & CWM_BIGMOVE) {
+		flags -= CWM_BIGMOVE;
+		amt = amt * 10;
+	}
+	switch(flags) {
+	case CWM_UP:
+		my -= amt;
+		break;
+	case CWM_DOWN: 
+		my += amt;
+		break;
+	case CWM_RIGHT:
+		mx += amt;
+		break;
+	case CWM_LEFT:
+		mx -= amt;
+		break;
+	}
+
+	if (cc) {
+		xu_ptr_getpos(cc->pwin, &px, &py);
+		xu_ptr_setpos(cc->pwin, px + mx, py + my);
+	} else {
+		xu_ptr_getpos(sc->rootwin, &px, &py);
+		xu_ptr_setpos(sc->rootwin, px + mx, py + my);
+	}
+}
+
+void
 kbfunc_client_search(struct client_ctx *scratch, void *arg)
 {
 	struct menu_q menuq;