62 lines · 858 B · C
RawDownload
#include <u.h>#include <libc.h>#include <draw.h>#include <memdraw.h>#include "devdraw.h" enum{	Nbutton = 10}; static int debug; static struct{	int b[Nbutton];	int init;} map; static voidinitmap(void){	char *p;	int i; 	p = getenv("mousedebug");	if(p && p[0])		debug = atoi(p); 	for(i=0; i<Nbutton; i++)		map.b[i] = i;	map.init = 1;	p = getenv("mousebuttonmap");	if(p)		for(i=0; i<Nbutton && p[i]; i++)			if('0' <= p[i] && p[i] <= '9')				map.b[i] = p[i] - '1';	if(debug){		fprint(2, "mousemap: ");		for(i=0; i<Nbutton; i++)			fprint(2, " %d", 1+map.b[i]);		fprint(2, "\n");	}} intmouseswap(int but){	int i;	int nbut; 	if(!map.init)		initmap();		nbut = 0;	for(i=0; i<Nbutton; i++)		if((but&(1<<i)) && map.b[i] >= 0)			nbut |= 1<<map.b[i];	if(debug)		fprint(2, "swap %#b -> %#b\n", but, nbut);	return nbut;}