< prev index next >

src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java

Print this page




 117         }
 118         // invert the wheelRotation for the peer
 119         eventNotifier.notifyMouseWheelEvent(when, x, y, absX, absY, modifiers,
 120                                             scrollType, scrollAmount,
 121                                             -wheelRotation, -delta, null);
 122     }
 123 
 124     /**
 125      * Handles key events.
 126      */
 127     void handleKeyEvent(int eventType, int modifierFlags, String chars, String charsIgnoringModifiers,
 128                         short keyCode, boolean needsKeyTyped, boolean needsKeyReleased) {
 129         boolean isFlagsChangedEvent =
 130             isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) :
 131                               (eventType == CocoaConstants.NSFlagsChanged);
 132 
 133         int jeventType = KeyEvent.KEY_PRESSED;
 134         int jkeyCode = KeyEvent.VK_UNDEFINED;
 135         int jkeyLocation = KeyEvent.KEY_LOCATION_UNKNOWN;
 136         boolean postsTyped = false;

 137 
 138         char testChar = KeyEvent.CHAR_UNDEFINED;
 139         boolean isDeadChar = (chars!= null && chars.length() == 0);
 140 
 141         if (isFlagsChangedEvent) {
 142             int[] in = new int[] {modifierFlags, keyCode};
 143             int[] out = new int[3]; // [jkeyCode, jkeyLocation, jkeyType]
 144 
 145             NSEvent.nsKeyModifiersToJavaKeyInfo(in, out);
 146 
 147             jkeyCode = out[0];
 148             jkeyLocation = out[1];
 149             jeventType = out[2];
 150         } else {
 151             if (chars != null && chars.length() > 0) {
 152                 testChar = chars.charAt(0);





 153             }
 154 
 155             char testCharIgnoringModifiers = charsIgnoringModifiers != null && charsIgnoringModifiers.length() > 0 ?
 156                     charsIgnoringModifiers.charAt(0) : KeyEvent.CHAR_UNDEFINED;
 157 
 158             int[] in = new int[] {testCharIgnoringModifiers, isDeadChar ? 1 : 0, modifierFlags, keyCode};
 159             int[] out = new int[3]; // [jkeyCode, jkeyLocation, deadChar]
 160 
 161             postsTyped = NSEvent.nsToJavaKeyInfo(in, out);
 162             if (!postsTyped) {
 163                 testChar = KeyEvent.CHAR_UNDEFINED;
 164             }
 165 
 166             if(isDeadChar){
 167                 testChar = (char) out[2];
 168                 if(testChar == 0){
 169                     return;
 170                 }
 171             }
 172 
 173             jkeyCode = out[0];
 174             jkeyLocation = out[1];
 175             jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) :
 176                                            NSEvent.nsToJavaEventType(eventType);
 177         }
 178 
 179         char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags);
 180         // Some keys may generate a KEY_TYPED, but we can't determine
 181         // what that character is. That's likely a bug, but for now we
 182         // just check for CHAR_UNDEFINED.
 183         if (javaChar == KeyEvent.CHAR_UNDEFINED) {
 184             postsTyped = false;
 185         }
 186 
 187         int jmodifiers = NSEvent.nsToJavaModifiers(modifierFlags);
 188         long when = System.currentTimeMillis();
 189 
 190         if (jeventType == KeyEvent.KEY_PRESSED) {
 191             lastKeyPressCode = jkeyCode;
 192         }
 193         eventNotifier.notifyKeyEvent(jeventType, when, jmodifiers,
 194                 jkeyCode, javaChar, jkeyLocation);
 195 
 196         // Current browser may be sending input events, so don't
 197         // post the KEY_TYPED here.
 198         postsTyped &= needsKeyTyped;
 199 




 117         }
 118         // invert the wheelRotation for the peer
 119         eventNotifier.notifyMouseWheelEvent(when, x, y, absX, absY, modifiers,
 120                                             scrollType, scrollAmount,
 121                                             -wheelRotation, -delta, null);
 122     }
 123 
 124     /**
 125      * Handles key events.
 126      */
 127     void handleKeyEvent(int eventType, int modifierFlags, String chars, String charsIgnoringModifiers,
 128                         short keyCode, boolean needsKeyTyped, boolean needsKeyReleased) {
 129         boolean isFlagsChangedEvent =
 130             isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) :
 131                               (eventType == CocoaConstants.NSFlagsChanged);
 132 
 133         int jeventType = KeyEvent.KEY_PRESSED;
 134         int jkeyCode = KeyEvent.VK_UNDEFINED;
 135         int jkeyLocation = KeyEvent.KEY_LOCATION_UNKNOWN;
 136         boolean postsTyped = false;
 137         boolean spaceKeyTyped = false;
 138 
 139         char testChar = KeyEvent.CHAR_UNDEFINED;
 140         boolean isDeadChar = (chars!= null && chars.length() == 0);
 141 
 142         if (isFlagsChangedEvent) {
 143             int[] in = new int[] {modifierFlags, keyCode};
 144             int[] out = new int[3]; // [jkeyCode, jkeyLocation, jkeyType]
 145 
 146             NSEvent.nsKeyModifiersToJavaKeyInfo(in, out);
 147 
 148             jkeyCode = out[0];
 149             jkeyLocation = out[1];
 150             jeventType = out[2];
 151         } else {
 152             if (chars != null && chars.length() > 0) {
 153                 testChar = chars.charAt(0);
 154                                 
 155                 //Check if String chars contains SPACE character.
 156                 if ("".equals(chars.trim())) {
 157                     spaceKeyTyped = true;
 158                 }
 159             }
 160 
 161             char testCharIgnoringModifiers = charsIgnoringModifiers != null && charsIgnoringModifiers.length() > 0 ?
 162                     charsIgnoringModifiers.charAt(0) : KeyEvent.CHAR_UNDEFINED;
 163 
 164             int[] in = new int[] {testCharIgnoringModifiers, isDeadChar ? 1 : 0, modifierFlags, keyCode};
 165             int[] out = new int[3]; // [jkeyCode, jkeyLocation, deadChar]
 166 
 167             postsTyped = NSEvent.nsToJavaKeyInfo(in, out);
 168             if (!postsTyped) {
 169                 testChar = KeyEvent.CHAR_UNDEFINED;
 170             }
 171 
 172             if(isDeadChar){
 173                 testChar = (char) out[2];
 174                 if(testChar == 0){
 175                     return;
 176                 }
 177             }
 178 
 179             jkeyCode = out[0];
 180             jkeyLocation = out[1];
 181             jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) :
 182                                            NSEvent.nsToJavaEventType(eventType);
 183         }
 184 
 185         char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags, spaceKeyTyped);
 186         // Some keys may generate a KEY_TYPED, but we can't determine
 187         // what that character is. That's likely a bug, but for now we
 188         // just check for CHAR_UNDEFINED.
 189         if (javaChar == KeyEvent.CHAR_UNDEFINED) {
 190             postsTyped = false;
 191         }
 192 
 193         int jmodifiers = NSEvent.nsToJavaModifiers(modifierFlags);
 194         long when = System.currentTimeMillis();
 195 
 196         if (jeventType == KeyEvent.KEY_PRESSED) {
 197             lastKeyPressCode = jkeyCode;
 198         }
 199         eventNotifier.notifyKeyEvent(jeventType, when, jmodifiers,
 200                 jkeyCode, javaChar, jkeyLocation);
 201 
 202         // Current browser may be sending input events, so don't
 203         // post the KEY_TYPED here.
 204         postsTyped &= needsKeyTyped;
 205 


< prev index next >