make stack requirements more explicit.
diff --git a/src/libdraw/x11-itrans.c b/src/libdraw/x11-itrans.c
index 4c33a0e..37fd856 100644
--- a/src/libdraw/x11-itrans.c
+++ b/src/libdraw/x11-itrans.c
@@ -21,6 +21,7 @@
 
 	if(e->xany.type != KeyPress)
 		return -1;
+	needstack(20*1024);	/* X has some *huge* buffers in openobject */
 	XLookupString((XKeyEvent*)e,NULL,0,&k,NULL);
 	if(k == XK_Multi_key || k == NoSymbol)
 		return -1;
diff --git a/src/libdraw/x11-keyboard.c b/src/libdraw/x11-keyboard.c
index 08d6f08..bee0f41 100644
--- a/src/libdraw/x11-keyboard.c
+++ b/src/libdraw/x11-keyboard.c
@@ -74,7 +74,7 @@
 	if(kc == nil)
 		return nil;
 	kc->c = chancreate(sizeof(Rune), 20);
-	threadcreate(_ioproc, kc, 16384);
+	threadcreate(_ioproc, kc, 32768);
 	return kc;
 }
 
diff --git a/src/libdraw/x11-mouse.c b/src/libdraw/x11-mouse.c
index 92a099b..df5bf7e 100644
--- a/src/libdraw/x11-mouse.c
+++ b/src/libdraw/x11-mouse.c
@@ -139,7 +139,7 @@
 		mc->display = i->display;
 	mc->c = chancreate(sizeof(Mouse), 0);
 	mc->resizec = chancreate(sizeof(int), 2);
-	threadcreate(_ioproc, mc, 16384);
+	threadcreate(_ioproc, mc, 32768);
 	return mc;
 }