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

Print this page




 117         // invert the wheelRotation for the peer
 118         peer.dispatchMouseWheelEvent(when, x, y, modifiers, scrollType,
 119                                      scrollAmount, -wheelRotation, -delta, null);
 120     }
 121 
 122     /**
 123      * Handles key events.
 124      */
 125     void handleKeyEvent(int eventType, int modifierFlags, String chars,
 126                         short keyCode, boolean needsKeyTyped) {
 127         boolean isFlagsChangedEvent =
 128             isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) :
 129                               (eventType == CocoaConstants.NSFlagsChanged);
 130 
 131         int jeventType = KeyEvent.KEY_PRESSED;
 132         int jkeyCode = KeyEvent.VK_UNDEFINED;
 133         int jkeyLocation = KeyEvent.KEY_LOCATION_UNKNOWN;
 134         boolean postsTyped = false;
 135 
 136         char testChar = KeyEvent.CHAR_UNDEFINED;
 137         char testDeadChar = 0;
 138 
 139         if (isFlagsChangedEvent) {
 140             int[] in = new int[] {modifierFlags, keyCode};
 141             int[] out = new int[3]; // [jkeyCode, jkeyLocation, jkeyType]
 142 
 143             NSEvent.nsKeyModifiersToJavaKeyInfo(in, out);
 144 
 145             jkeyCode = out[0];
 146             jkeyLocation = out[1];
 147             jeventType = out[2];
 148         } else {
 149             if (chars != null && chars.length() > 0) {
 150                 testChar = chars.charAt(0);
 151             }
 152 
 153             int[] in = new int[] {testChar, testDeadChar, modifierFlags, keyCode};
 154             int[] out = new int[2]; // [jkeyCode, jkeyLocation]
 155 
 156             postsTyped = NSEvent.nsToJavaKeyInfo(in, out);
 157             if (!postsTyped) {
 158                 testChar = KeyEvent.CHAR_UNDEFINED;
 159             }
 160 




 161             jkeyCode = out[0];
 162             jkeyLocation = out[1];
 163             jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) :
 164                                            NSEvent.nsToJavaEventType(eventType);
 165         }
 166 
 167         char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags);
 168         // Some keys may generate a KEY_TYPED, but we can't determine
 169         // what that character is. That's likely a bug, but for now we
 170         // just check for CHAR_UNDEFINED.
 171         if (javaChar == KeyEvent.CHAR_UNDEFINED) {
 172             postsTyped = false;
 173         }
 174 
 175 
 176         int jmodifiers = NSEvent.nsToJavaKeyModifiers(modifierFlags);
 177         long when = System.currentTimeMillis();
 178 
 179         peer.dispatchKeyEvent(jeventType, when, jmodifiers,
 180                               jkeyCode, javaChar, jkeyLocation);




 117         // invert the wheelRotation for the peer
 118         peer.dispatchMouseWheelEvent(when, x, y, modifiers, scrollType,
 119                                      scrollAmount, -wheelRotation, -delta, null);
 120     }
 121 
 122     /**
 123      * Handles key events.
 124      */
 125     void handleKeyEvent(int eventType, int modifierFlags, String chars,
 126                         short keyCode, boolean needsKeyTyped) {
 127         boolean isFlagsChangedEvent =
 128             isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) :
 129                               (eventType == CocoaConstants.NSFlagsChanged);
 130 
 131         int jeventType = KeyEvent.KEY_PRESSED;
 132         int jkeyCode = KeyEvent.VK_UNDEFINED;
 133         int jkeyLocation = KeyEvent.KEY_LOCATION_UNKNOWN;
 134         boolean postsTyped = false;
 135 
 136         char testChar = KeyEvent.CHAR_UNDEFINED;
 137         boolean isDeadChar = (chars!= null && chars.length() == 0);
 138 
 139         if (isFlagsChangedEvent) {
 140             int[] in = new int[] {modifierFlags, keyCode};
 141             int[] out = new int[3]; // [jkeyCode, jkeyLocation, jkeyType]
 142 
 143             NSEvent.nsKeyModifiersToJavaKeyInfo(in, out);
 144 
 145             jkeyCode = out[0];
 146             jkeyLocation = out[1];
 147             jeventType = out[2];
 148         } else {
 149             if (chars != null && chars.length() > 0) {
 150                 testChar = chars.charAt(0);
 151             }
 152 
 153             int[] in = new int[] {testChar, isDeadChar ? 1 : 0, modifierFlags, keyCode};
 154             int[] out = new int[3]; // [jkeyCode, jkeyLocation, deadChar]
 155 
 156             postsTyped = NSEvent.nsToJavaKeyInfo(in, out);
 157             if (!postsTyped) {
 158                 testChar = KeyEvent.CHAR_UNDEFINED;
 159             }
 160 
 161             if(isDeadChar){
 162                 testChar = (char) out[2];
 163             }
 164 
 165             jkeyCode = out[0];
 166             jkeyLocation = out[1];
 167             jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) :
 168                                            NSEvent.nsToJavaEventType(eventType);
 169         }
 170 
 171         char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags);
 172         // Some keys may generate a KEY_TYPED, but we can't determine
 173         // what that character is. That's likely a bug, but for now we
 174         // just check for CHAR_UNDEFINED.
 175         if (javaChar == KeyEvent.CHAR_UNDEFINED) {
 176             postsTyped = false;
 177         }
 178 
 179 
 180         int jmodifiers = NSEvent.nsToJavaKeyModifiers(modifierFlags);
 181         long when = System.currentTimeMillis();
 182 
 183         peer.dispatchKeyEvent(jeventType, when, jmodifiers,
 184                               jkeyCode, javaChar, jkeyLocation);