plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

mouseswap.c (963B)


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