diff options
-rw-r--r-- | src/cmd/devdraw/cocoa-screen.m | 15 | ||||
-rw-r--r-- | src/cmd/devdraw/cocoa-srv.c | 12 |
2 files changed, 15 insertions, 12 deletions
diff --git a/src/cmd/devdraw/cocoa-screen.m b/src/cmd/devdraw/cocoa-screen.m index ae7f5971..9684360c 100644 --- a/src/cmd/devdraw/cocoa-screen.m +++ b/src/cmd/devdraw/cocoa-screen.m @@ -98,7 +98,6 @@ struct struct { NSCursor *bigarrow; - int kalting; int kbuttons; int mbuttons; NSPoint mpos; @@ -593,6 +592,7 @@ interpretdeadkey(NSEvent *e) static void getkeyboard(NSEvent *e) { + static int omod; NSString *s; char c; int k, m; @@ -602,8 +602,6 @@ getkeyboard(NSEvent *e) switch([e type]){ case NSKeyDown: - in.kalting = 0; - s = [e characters]; c = [s UTF8String][0]; @@ -635,15 +633,14 @@ getkeyboard(NSEvent *e) in.kbuttons |= 4; sendmouse(); }else - if(m & NSAlternateKeyMask){ - in.kalting = 1; + if(m&NSAlternateKeyMask && (omod&NSAlternateKeyMask)==0) keystroke(Kalt); - } break; default: panic("getkey: unexpected event type"); } + omod = m; } /* @@ -715,12 +712,8 @@ getmouse(NSEvent *e) if(b == 1){ m = [e modifierFlags]; if(m & NSAlternateKeyMask){ + abortcompose(); b = 2; - // Take the ALT away from the keyboard handler. - if(in.kalting){ - in.kalting = 0; - keystroke(Kalt); - } }else if(m & NSCommandKeyMask) b = 4; diff --git a/src/cmd/devdraw/cocoa-srv.c b/src/cmd/devdraw/cocoa-srv.c index ac6658ef..864aed7a 100644 --- a/src/cmd/devdraw/cocoa-srv.c +++ b/src/cmd/devdraw/cocoa-srv.c @@ -358,15 +358,25 @@ kputc(int c) zunlock(); } +static int alting; + +void +abortcompose(void) +{ + if(alting) + keystroke(Kalt); +} + void keystroke(int c) { static Rune k[10]; - static int alting, nk; + static int nk; int i; if(c == Kalt){ alting = !alting; + nk = 0; return; } if(!alting){ |