git: 9front

ref: f5595b832b2be50d7d641fbaa7085d07f649feb2
dir: /sys/src/libdraw/eenter.c/

View raw version
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <event.h>
#include <keyboard.h>

extern int genenter(char *ask, char *buf, int len, Mouse *m, void *kc, int (*_input)(Mouse*, void*, Rune*), Screen *scr);

static int
_input(Mouse *m, void *kc, Rune *k)
{
	Event ev;

	switch(eread(Ekeyboard|Emouse, &ev)){
	case Emouse:
		*m = ev.mouse;
		return 0;
	case Ekeyboard:
		*k = ev.kbdc;
		return 1;
	}
	return -1;
}

int
eenter(char *ask, char *buf, int len, Mouse *m)
{
	while(ecankbd())
		ekbd();
	return genenter(ask, buf, len, m, nil, _input, nil);
}