#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 void | |
initmap(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"); | |
} | |
} | |
int | |
mouseswap(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; | |
} |