diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-07-17 18:15:29 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-07-17 18:15:29 +0200 |
commit | 12619cb9a59b292ca68b9eb5543fc6508a5f802b (patch) | |
tree | 682005774f94a1739447d05ef01526ce461943e5 /sys/src/cmd/aux/kbdfs | |
parent | 3ab76015d7a8113dbf80658e7f6c90e793fd9dd9 (diff) |
kbdfs: mouse button 2 emulation by changing mouse buttonmap when shift is pressed
Diffstat (limited to 'sys/src/cmd/aux/kbdfs')
-rw-r--r-- | sys/src/cmd/aux/kbdfs/kbdfs.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/sys/src/cmd/aux/kbdfs/kbdfs.c b/sys/src/cmd/aux/kbdfs/kbdfs.c index 36c635dbe..397eba9e8 100644 --- a/sys/src/cmd/aux/kbdfs/kbdfs.c +++ b/sys/src/cmd/aux/kbdfs/kbdfs.c @@ -88,6 +88,7 @@ char Eintr[] = "interrupted"; int scanfd; int ledsfd; int consfd; +int mctlfd; int kbdopen; int consctlopen; @@ -391,10 +392,21 @@ keyproc(void *) } rb[0] = 'k'; } - if(rb[0] && kbdopen){ - s = utfconv(rb, nb+1); - if(nbsendp(kbdchan, s) <= 0) - free(s); + if(rb[0]){ + if(key.r == Kshift && mctlfd >= 0){ + if(key.down){ + fprint(mctlfd, "buttonmap 132"); + } else { + fprint(mctlfd, "swap"); + fprint(mctlfd, "swap"); + } + } + + if(kbdopen){ + s = utfconv(rb, nb+1); + if(nbsendp(kbdchan, s) <= 0) + free(s); + } } } } @@ -1259,6 +1271,8 @@ threadmain(int argc, char** argv) fprint(2, "%s: warning: can't open /dev/scancode: %r\n", argv0); if((ledsfd = open("/dev/leds", OWRITE)) < 0) fprint(2, "%s: warning: can't open /dev/leds: %r\n", argv0); + if((mctlfd = open("/dev/mousectl", OWRITE)) < 0) + fprint(2, "%s: warning: can't open /dev/mousectl: %r\n", argv0); if(*argv) if((consfd = open(*argv, OREAD)) < 0) |