< prev index next >

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

Print this page

        

@@ -258,13 +258,39 @@
 JNIEXPORT void JNICALL
 Java_sun_lwawt_macosx_CRobot_keyEvent
 (JNIEnv *env, jobject peer, jint javaKeyCode, jboolean keyPressed)
 {
     CGKeyCode keyCode = GetCGKeyCode(javaKeyCode);
-
     CGEventRef event = CGEventCreateKeyboardEvent(NULL, keyCode, keyPressed);
+
+    if (event != NULL) {
+        CGEventPost(kCGSessionEventTap, event);
+        CFRelease(event);
+    }
+}
+
+/*
+ * Class:     sun_lwawt_macosx_CRobot
+ * Method:    keyEventUnicode
+ * Signature: (IZ)V
+ */
+JNIEXPORT void JNICALL
+Java_sun_lwawt_macosx_CRobot_keyEventUnicode
+(JNIEnv *env, jobject peer, jint key, jboolean keyPressed)
+{
+    CGEventRef event;
+    UniChar uCh = key;
+
+    // create a null keyboard event
+    event = CGEventCreateKeyboardEvent(NULL, 0, keyPressed);
+
     if (event != NULL) {
+        /* Note that application frameworks may ignore the Unicode string in a
+           keyboard event and do their own translation based on the
+           virtual keycode and perceived event state.
+        */
+        CGEventKeyboardSetUnicodeString(event, 1, &uCh);
         CGEventPost(kCGSessionEventTap, event);
         CFRelease(event);
     }
 }
 
< prev index next >