summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/kbdfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-07-17 18:15:29 +0200
committercinap_lenrek <cinap_lenrek@localhost>2011-07-17 18:15:29 +0200
commit12619cb9a59b292ca68b9eb5543fc6508a5f802b (patch)
tree682005774f94a1739447d05ef01526ce461943e5 /sys/src/cmd/aux/kbdfs
parent3ab76015d7a8113dbf80658e7f6c90e793fd9dd9 (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.c22
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)