< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m

Print this page




 261         NSShiftKeyMask,
 262         //kCGSFlagsMaskAppleShiftKey,
 263         //kCGSFlagsMaskAppleRightShiftKey,
 264         56,
 265         60,
 266         java_awt_event_InputEvent_SHIFT_DOWN_MASK,
 267         java_awt_event_InputEvent_SHIFT_MASK,
 268         java_awt_event_KeyEvent_VK_SHIFT
 269     },
 270     {
 271         NSControlKeyMask,
 272         //kCGSFlagsMaskAppleControlKey,
 273         //kCGSFlagsMaskAppleRightControlKey,
 274         59,
 275         62,
 276         java_awt_event_InputEvent_CTRL_DOWN_MASK,
 277         java_awt_event_InputEvent_CTRL_MASK,
 278         java_awt_event_KeyEvent_VK_CONTROL
 279     },
 280     {










 281         NSAlternateKeyMask,
 282         //kCGSFlagsMaskAppleLeftAlternateKey,
 283         //kCGSFlagsMaskAppleRightAlternateKey,
 284         58,
 285         0,
 286         java_awt_event_InputEvent_ALT_DOWN_MASK,
 287         java_awt_event_InputEvent_ALT_MASK,
 288         java_awt_event_KeyEvent_VK_ALT
 289     },
 290     {
 291         NSAlternateKeyMask,
 292         0,
 293         61,
 294         java_awt_event_InputEvent_ALT_DOWN_MASK | java_awt_event_InputEvent_ALT_GRAPH_DOWN_MASK,
 295         java_awt_event_InputEvent_ALT_MASK | java_awt_event_InputEvent_ALT_GRAPH_MASK,
 296         java_awt_event_KeyEvent_VK_ALT | java_awt_event_KeyEvent_VK_ALT_GRAPH
 297     },
 298         {
 299                 NSCommandKeyMask,
 300                 //kCGSFlagsMaskAppleLeftCommandKey,
 301                 //kCGSFlagsMaskAppleRightCommandKey,
 302                 55,
 303                 54,
 304                 java_awt_event_InputEvent_META_DOWN_MASK,
 305                 java_awt_event_InputEvent_META_MASK,
 306                 java_awt_event_KeyEvent_VK_META
 307         },
 308     // NSNumericPadKeyMask
 309     {
 310         NSHelpKeyMask,
 311         0,
 312         0,
 313         0, // no Java equivalent
 314         0, // no Java equivalent
 315         java_awt_event_KeyEvent_VK_HELP
 316     },
 317     // NSFunctionKeyMask
 318     {0, 0, 0, 0, 0, 0}
 319 };
 320 
 321 static BOOL leftAltKeyPressed;

 322 
 323 /*
 324  * Almost all unicode characters just go from NS to Java with no translation.
 325  *  For the few exceptions, we handle it here with this small table.
 326  */
 327 #define ALL_NS_KEY_MODIFIERS_MASK \
 328     (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask)
 329 
 330 static struct _char {
 331     NSUInteger modifier;
 332     unichar nsChar;
 333     unichar javaChar;
 334 }
 335 const charTable[] = {
 336     // map enter on keypad to same as return key
 337     {0,                         NSEnterCharacter,          NSNewlineCharacter},
 338 
 339     // [3134616] return newline instead of carriage return
 340     {0,                         NSCarriageReturnCharacter, NSNewlineCharacter},
 341 


 542                 continue;
 543             }
 544             *javaKeyType = (cur->nsMask & nsFlags) ?
 545             java_awt_event_KeyEvent_KEY_PRESSED :
 546             java_awt_event_KeyEvent_KEY_RELEASED;
 547             break;
 548         }
 549     }
 550 }
 551 
 552 /*
 553  * This returns the java modifiers for a key NSEvent.
 554  */
 555 jint NsKeyModifiersToJavaModifiers(NSUInteger nsFlags, BOOL isExtMods)
 556 {
 557         jint javaModifiers = 0;
 558         const struct _nsKeyToJavaModifier* cur;
 559         
 560         for (cur = nsKeyToJavaModifierTable; cur->nsMask != 0; ++cur) {
 561                 if ((cur->nsMask & nsFlags) != 0) {
 562                                 javaModifiers |= isExtMods ? cur->javaExtMask : cur->javaMask;
 563                                 if (cur->nsMask == NSAlternateKeyMask && leftAltKeyPressed == NO) {







 564                                         continue;
 565                         }
 566                         break;

 567                 }
 568         }
 569 
 570         return javaModifiers;
 571 }
 572 
 573 /*
 574  * This returns the NSEvent flags for java key modifiers.
 575  */
 576 NSUInteger JavaModifiersToNsKeyModifiers(jint javaModifiers, BOOL isExtMods)
 577 {
 578     NSUInteger nsFlags = 0;
 579     const struct _nsKeyToJavaModifier* cur;
 580 
 581     for (cur = nsKeyToJavaModifierTable; cur->nsMask != 0; ++cur) {
 582         jint mask = isExtMods? cur->javaExtMask : cur->javaMask;
 583         if ((mask & javaModifiers) != 0) {
 584             nsFlags |= cur->nsMask;
 585         }
 586     }




 261         NSShiftKeyMask,
 262         //kCGSFlagsMaskAppleShiftKey,
 263         //kCGSFlagsMaskAppleRightShiftKey,
 264         56,
 265         60,
 266         java_awt_event_InputEvent_SHIFT_DOWN_MASK,
 267         java_awt_event_InputEvent_SHIFT_MASK,
 268         java_awt_event_KeyEvent_VK_SHIFT
 269     },
 270     {
 271         NSControlKeyMask,
 272         //kCGSFlagsMaskAppleControlKey,
 273         //kCGSFlagsMaskAppleRightControlKey,
 274         59,
 275         62,
 276         java_awt_event_InputEvent_CTRL_DOWN_MASK,
 277         java_awt_event_InputEvent_CTRL_MASK,
 278         java_awt_event_KeyEvent_VK_CONTROL
 279     },
 280     {
 281         NSCommandKeyMask,
 282         //kCGSFlagsMaskAppleLeftCommandKey,
 283         //kCGSFlagsMaskAppleRightCommandKey,
 284         55,
 285         54,
 286         java_awt_event_InputEvent_META_DOWN_MASK,
 287         java_awt_event_InputEvent_META_MASK,
 288         java_awt_event_KeyEvent_VK_META
 289     },
 290     {
 291         NSAlternateKeyMask,
 292         //kCGSFlagsMaskAppleLeftAlternateKey,
 293         //kCGSFlagsMaskAppleRightAlternateKey,
 294         58,
 295         0,
 296         java_awt_event_InputEvent_ALT_DOWN_MASK,
 297         java_awt_event_InputEvent_ALT_MASK,
 298         java_awt_event_KeyEvent_VK_ALT
 299     },
 300     {
 301         NSAlternateKeyMask,
 302         0,
 303         61,
 304         java_awt_event_InputEvent_ALT_DOWN_MASK | java_awt_event_InputEvent_ALT_GRAPH_DOWN_MASK,
 305         java_awt_event_InputEvent_ALT_MASK | java_awt_event_InputEvent_ALT_GRAPH_MASK,
 306         java_awt_event_KeyEvent_VK_ALT | java_awt_event_KeyEvent_VK_ALT_GRAPH
 307     },










 308     // NSNumericPadKeyMask
 309     {
 310         NSHelpKeyMask,
 311         0,
 312         0,
 313         0, // no Java equivalent
 314         0, // no Java equivalent
 315         java_awt_event_KeyEvent_VK_HELP
 316     },
 317     // NSFunctionKeyMask
 318     {0, 0, 0, 0, 0, 0}
 319 };
 320 
 321 static BOOL leftAltKeyPressed;
 322 static BOOL altGRPressed = NO;
 323 
 324 /*
 325  * Almost all unicode characters just go from NS to Java with no translation.
 326  *  For the few exceptions, we handle it here with this small table.
 327  */
 328 #define ALL_NS_KEY_MODIFIERS_MASK \
 329     (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask)
 330 
 331 static struct _char {
 332     NSUInteger modifier;
 333     unichar nsChar;
 334     unichar javaChar;
 335 }
 336 const charTable[] = {
 337     // map enter on keypad to same as return key
 338     {0,                         NSEnterCharacter,          NSNewlineCharacter},
 339 
 340     // [3134616] return newline instead of carriage return
 341     {0,                         NSCarriageReturnCharacter, NSNewlineCharacter},
 342 


 543                 continue;
 544             }
 545             *javaKeyType = (cur->nsMask & nsFlags) ?
 546             java_awt_event_KeyEvent_KEY_PRESSED :
 547             java_awt_event_KeyEvent_KEY_RELEASED;
 548             break;
 549         }
 550     }
 551 }
 552 
 553 /*
 554  * This returns the java modifiers for a key NSEvent.
 555  */
 556 jint NsKeyModifiersToJavaModifiers(NSUInteger nsFlags, BOOL isExtMods)
 557 {
 558     jint javaModifiers = 0;
 559     const struct _nsKeyToJavaModifier* cur;
 560         
 561     for (cur = nsKeyToJavaModifierTable; cur->nsMask != 0; ++cur) {
 562         if ((cur->nsMask & nsFlags) != 0) {
 563                         
 564             if (cur->nsMask == NSAlternateKeyMask) {
 565                 if (leftAltKeyPressed == YES) {
 566                     javaModifiers |= isExtMods? cur->javaExtMask : cur->javaMask;
 567                     if (altGRPressed == NO)
 568                         break;
 569                     } else {
 570                         leftAltKeyPressed = YES;
 571                         altGRPressed = YES;
 572                         continue;
 573                     }
 574                 }
 575             javaModifiers |= isExtMods ? cur->javaExtMask : cur->javaMask;
 576         }
 577     }
 578 
 579     return javaModifiers;
 580 }
 581 
 582 /*
 583  * This returns the NSEvent flags for java key modifiers.
 584  */
 585 NSUInteger JavaModifiersToNsKeyModifiers(jint javaModifiers, BOOL isExtMods)
 586 {
 587     NSUInteger nsFlags = 0;
 588     const struct _nsKeyToJavaModifier* cur;
 589 
 590     for (cur = nsKeyToJavaModifierTable; cur->nsMask != 0; ++cur) {
 591         jint mask = isExtMods? cur->javaExtMask : cur->javaMask;
 592         if ((mask & javaModifiers) != 0) {
 593             nsFlags |= cur->nsMask;
 594         }
 595     }


< prev index next >