Index: trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/commands/CMDgenerateJacaretoReplay.java
===================================================================
--- trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/commands/CMDgenerateJacaretoReplay.java	(revision 1834)
+++ trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/commands/CMDgenerateJacaretoReplay.java	(revision 1836)
@@ -32,4 +32,6 @@
 import java.util.UUID;
 import java.util.logging.Level;
+
+import javax.swing.UIManager;
 
 import de.ugoe.cs.autoquest.CommandHelpers;
@@ -227,5 +229,7 @@
         );
         writeLine(writer,
-                  "<SystemInfo procTime=\"0\" duration=\"0\" screenWidth=\"2646\" screenHeight=\"1024\" javaVersion=\"1.7.0_65\" lookAndFeel=\"javax.swing.plaf.metal.MetalLookAndFeel\" uuid=\"720f430f-52cf-4d8b-9fbe-58434f766efe\" />");
+                  "<SystemInfo procTime=\"0\" duration=\"0\" screenWidth=\"2646\" screenHeight=\"1024\" javaVersion=\"1.7.0_65\" "
+                  + "lookAndFeel=\"" + UIManager.getLookAndFeel().getClass().getName() + "\" "
+                  + "uuid=\"720f430f-52cf-4d8b-9fbe-58434f766efe\" />");
         writeLine(writer,
                   "<KeyboardState procTime=\"0\" duration=\"0\" isNumLockOn=\"false\" isScrollLockOn=\"false\" isCapsLockOn=\"false\" applyIsNumLockOn=\"true\" applyIsScrollLockOn=\"true\" applyIsCapsLockOn=\"true\" uuid=\"28146f79-9fc7-49f9-b4a8-5866a7625683\" />");
@@ -300,10 +304,8 @@
                 }
                 else if (event.getType() instanceof MouseClick) {
-                    // if a menu file was provided, use the improved event
-                    // generation
-                    // TODO: check how much of this is still necessary with
-                    // the new menu index system
-                    if (menuList != null) {
-                        if (event.getTarget() instanceof JFCMenuButton) {
+                    if (event.getTarget() instanceof JFCMenuButton) {
+                        // if a menu file was provided, use the improved event
+                        // generation
+                        if (menuList != null) {
                             if (menuElements.isEmpty()) {
                                 // parse the menu structure
@@ -378,17 +380,43 @@
                 }
                 else if (event.getType() instanceof KeyPressed) {
-                    commitFocusEvent();
-
-                    if (lastKeySequenceEvent == null) {
-                        lastKeySequenceEvent = structure.add("KeySequence");
-                    }
-                    lastKeyTypedEvent = lastKeySequenceEvent.add("KeyTyped");
-                    writeKeyEvent(writer, event, 401);
+                    handleKeyPressed(writer, event);
                 }
                 else if (event.getType() instanceof KeyReleased) {
-                    commitFocusEvent();
-
-                    writeKeyEvent(writer, event, 402);
+                    handleKeyReleased(writer, event);
                 }
+                else if (event.getType() instanceof TextInput) {
+                    handleTextInput(writer, event);
+                }
+            }
+        }
+    }
+
+    private void handleKeyPressed(BufferedWriter writer, Event event) throws IOException {
+        commitFocusEvent();
+
+        if (lastKeySequenceEvent == null) {
+            lastKeySequenceEvent = structure.add("KeySequence");
+        }
+        lastKeyTypedEvent = lastKeySequenceEvent.add("KeyTyped");
+
+        writeKeyEvent(writer, event, 401);
+    }
+
+    private void handleKeyReleased(BufferedWriter writer, Event event) throws IOException {
+        commitFocusEvent();
+
+        writeKeyEvent(writer, event, 402);
+    }
+
+    private void handleTextInput(BufferedWriter writer, Event event) throws IOException {
+        List<Event> textEvents = ((TextInput) event.getType()).getTextInputEvents();
+
+        // just split the text event into its key events again
+        for (Event textEvent : textEvents) {
+            if (textEvent.getType() instanceof KeyPressed) {
+                handleKeyPressed(writer, textEvent);
+            }
+            else if (textEvent.getType() instanceof KeyReleased) {
+                handleKeyReleased(writer, textEvent);
             }
         }
