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