commit - a995f469b3e412ae39a57efa4472592a55248aac
commit + 73b0f029e107c2d015ebb48d59d32f264973de49
blob - ae7f5971436d24d8da436b666c29f740d33baae2
blob + 9684360c3643127d34afa4d375434f4bc514bc26
--- src/cmd/devdraw/cocoa-screen.m
+++ src/cmd/devdraw/cocoa-screen.m
struct
{
NSCursor *bigarrow;
- int kalting;
int kbuttons;
int mbuttons;
NSPoint mpos;
static void
getkeyboard(NSEvent *e)
{
+ static int omod;
NSString *s;
char c;
int k, m;
switch([e type]){
case NSKeyDown:
- in.kalting = 0;
-
s = [e characters];
c = [s UTF8String][0];
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;
}
/*
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;
blob - ac6658efd668616da9a16b1b87b2d8daeb05e2d6
blob + 864aed7abd2d237ffb57259b6a6f3d4f48a53655
--- src/cmd/devdraw/cocoa-srv.c
+++ src/cmd/devdraw/cocoa-srv.c
kbd.stall = 1;
matchkbd();
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){