commit - 8cb7983083a94e2bdedcd24ca4ba0ccbefcf61b8
commit + 81a90f898bf58852ca414ae612751e6cff06566c
blob - 9dded63285467e139e2c28a35bfba0dd57ac88da
blob + fc943d166a24785d5b26ed35e5d338ffce2c4a58
--- src/cmd/devdraw/osx-srv.c
+++ src/cmd/devdraw/osx-srv.c
matchmouse();
zunlock();
}
-
+
void
-keystroke(int c)
+kputc(int c)
{
zlock();
kbd.r[kbd.wi++] = c;
kbd.stall = 1;
matchkbd();
zunlock();
+}
+
+void
+keystroke(int c)
+{
+ static Rune k[10];
+ static int alting, nk;
+ int i;
+
+ if(c == Kalt){
+ alting = !alting;
+ return;
+ }
+ if(!alting){
+ kputc(c);
+ return;
+ }
+ if(nk >= nelem(k)) // should not happen
+ nk = 0;
+ k[nk++] = c;
+ c = _latin1(k, nk);
+ if(c > 0){
+ alting = 0;
+ kputc(c);
+ nk = 0;
+ return;
+ }
+ if(c == -1){
+ alting = 0;
+ for(i=0; i<nk; i++)
+ kputc(k[i]);
+ nk = 0;
+ return;
+ }
+ // need more input
+ return;
}