63 lines
858 B
C
63 lines
858 B
C
|
|
#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;
|
||
|
|
}
|