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 1703)
+++ /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/commands/CMDgenerateJacaretoReplay.java	(revision 1704)
@@ -22,4 +22,5 @@
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -91,6 +92,11 @@
     private JFCGUIElement currentFocus;
     private StructureNode structure;
+
     private StructureNode lastKeySequenceEvent;
     private StructureNode lastKeyTypedEvent;
+    private int currentKeyModifiers;
+
+    private HashMap<VirtualKey, Integer> modifiers;
+    
     private StructureNode lastMouseClickEvent;
     private StructureNode lastFocusChangeEvent;
@@ -138,4 +144,12 @@
         sequences = (Collection<List<Event>>) dataObject;
 
+        // map which maps VirtualKeys back to awt key modifier codes
+        modifiers = new HashMap<>();
+        modifiers.put(VirtualKey.SHIFT, 1);
+        modifiers.put(VirtualKey.CONTROL, 2);
+        modifiers.put(VirtualKey.ALT, 8);
+        modifiers.put(VirtualKey.ALT_GRAPH, 32);
+        currentKeyModifiers = 0;
+        
         writeJacaretoXML(sequences, filename);
     }
@@ -438,5 +452,8 @@
         KeyInteraction info = (KeyInteraction) event.getType();
         JFCGUIElement target = (JFCGUIElement) event.getTarget();
-
+        int keyCode = info.getKey().getVirtualKeyCode();
+
+        applyKeyModifier(info.getKey(), jacId == 401);
+        
         //@formatter:off
         writeLine(writer,
@@ -459,7 +476,7 @@
         writeLine(writer,
             "<KeyInfo "
-            + "keyCode=\"" + info.getKey().getVirtualKeyCode() + "\" "
-            + "keyChar=\"" + getKeyChar(info.getKey().getVirtualKeyCode()) + "\" "
-            + "modifiers=\"0\" />"
+            + "keyCode=\"" + keyCode + "\" "
+            + "keyChar=\"" + getKeyChar(keyCode) + "\" "
+            + "modifiers=\"" + currentKeyModifiers + "\" />"
         );
         
@@ -477,3 +494,15 @@
         }
     }
+    
+    private void applyKeyModifier (VirtualKey key, boolean set) {
+        Integer modifier = modifiers.get(key);
+        if (modifier != null) {
+            if (set) {
+                currentKeyModifiers |= modifier;
+            }
+            else {
+                currentKeyModifiers &= ~modifier;
+            }
+        }
+    }
 }
