Blame


1 50e6d00c 2008-10-08 rsc #include <u.h>
2 50e6d00c 2008-10-08 rsc #include <libc.h>
3 50e6d00c 2008-10-08 rsc #include <draw.h>
4 50e6d00c 2008-10-08 rsc #include <memdraw.h>
5 50e6d00c 2008-10-08 rsc #include "devdraw.h"
6 50e6d00c 2008-10-08 rsc
7 50e6d00c 2008-10-08 rsc enum
8 50e6d00c 2008-10-08 rsc {
9 50e6d00c 2008-10-08 rsc Nbutton = 10
10 50e6d00c 2008-10-08 rsc };
11 50e6d00c 2008-10-08 rsc
12 50e6d00c 2008-10-08 rsc static int debug;
13 50e6d00c 2008-10-08 rsc
14 50e6d00c 2008-10-08 rsc static struct
15 50e6d00c 2008-10-08 rsc {
16 50e6d00c 2008-10-08 rsc int b[Nbutton];
17 50e6d00c 2008-10-08 rsc int init;
18 50e6d00c 2008-10-08 rsc } map;
19 50e6d00c 2008-10-08 rsc
20 50e6d00c 2008-10-08 rsc static void
21 50e6d00c 2008-10-08 rsc initmap(void)
22 50e6d00c 2008-10-08 rsc {
23 50e6d00c 2008-10-08 rsc char *p;
24 50e6d00c 2008-10-08 rsc int i;
25 50e6d00c 2008-10-08 rsc
26 50e6d00c 2008-10-08 rsc p = getenv("mousedebug");
27 50e6d00c 2008-10-08 rsc if(p && p[0])
28 50e6d00c 2008-10-08 rsc debug = atoi(p);
29 50e6d00c 2008-10-08 rsc
30 50e6d00c 2008-10-08 rsc for(i=0; i<Nbutton; i++)
31 50e6d00c 2008-10-08 rsc map.b[i] = i;
32 50e6d00c 2008-10-08 rsc map.init = 1;
33 50e6d00c 2008-10-08 rsc p = getenv("mousebuttonmap");
34 50e6d00c 2008-10-08 rsc if(p)
35 50e6d00c 2008-10-08 rsc for(i=0; i<Nbutton && p[i]; i++)
36 50e6d00c 2008-10-08 rsc if('0' <= p[i] && p[i] <= '9')
37 50e6d00c 2008-10-08 rsc map.b[i] = p[i] - '1';
38 50e6d00c 2008-10-08 rsc if(debug){
39 50e6d00c 2008-10-08 rsc fprint(2, "mousemap: ");
40 50e6d00c 2008-10-08 rsc for(i=0; i<Nbutton; i++)
41 50e6d00c 2008-10-08 rsc fprint(2, " %d", 1+map.b[i]);
42 50e6d00c 2008-10-08 rsc fprint(2, "\n");
43 50e6d00c 2008-10-08 rsc }
44 50e6d00c 2008-10-08 rsc }
45 50e6d00c 2008-10-08 rsc
46 50e6d00c 2008-10-08 rsc int
47 50e6d00c 2008-10-08 rsc mouseswap(int but)
48 50e6d00c 2008-10-08 rsc {
49 50e6d00c 2008-10-08 rsc int i;
50 50e6d00c 2008-10-08 rsc int nbut;
51 50e6d00c 2008-10-08 rsc
52 50e6d00c 2008-10-08 rsc if(!map.init)
53 50e6d00c 2008-10-08 rsc initmap();
54 50e6d00c 2008-10-08 rsc
55 50e6d00c 2008-10-08 rsc nbut = 0;
56 50e6d00c 2008-10-08 rsc for(i=0; i<Nbutton; i++)
57 50e6d00c 2008-10-08 rsc if((but&(1<<i)) && map.b[i] >= 0)
58 50e6d00c 2008-10-08 rsc nbut |= 1<<map.b[i];
59 50e6d00c 2008-10-08 rsc if(debug)
60 50e6d00c 2008-10-08 rsc fprint(2, "swap %#b -> %#b\n", but, nbut);
61 50e6d00c 2008-10-08 rsc return nbut;
62 50e6d00c 2008-10-08 rsc }