Index: trunk/EventBenchConsole/rules/rules.xml
===================================================================
--- trunk/EventBenchConsole/rules/rules.xml	(revision 59)
+++ trunk/EventBenchConsole/rules/rules.xml	(revision 62)
@@ -3,30 +3,28 @@
 <rules xmlns="ul:rules" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ul:rules ruleSchema.xsd">
 
-
-
   <!-- rules regarding mouse clicks -->
-<rule name="LeftClickButton">
- <msg type="&WM_LBUTTONDOWN;">
-  <store var="clicked"/>
- </msg>
- <msg type="&WM_LBUTTONUP;">
-  <equals>
-   <constValue value="Button"/>
-   <winInfoValue obj="this" winParam="class"/>
-  </equals>
-  <equals>
-   <paramValue obj="clicked" param="window.hwnd"/>
-   <paramValue obj="this" param="window.hwnd"/>
-  </equals>
- </msg>
- <genMsg delay="100">
-  <type>
-   <constValue value="&BM_CLICK;"/>
-  </type>
-  <target>
-   <msgInfoValue obj="clicked" msgParam="target"/>
-  </target>
- </genMsg>
-</rule>
+  <rule name="LeftClickButton">
+    <msg type="&WM_LBUTTONDOWN;">
+      <store var="clicked"/>
+    </msg>
+    <msg type="&WM_LBUTTONUP;">
+      <equals>
+        <constValue value="Button"/>
+        <winInfoValue obj="this" winParam="class"/>
+      </equals>
+      <equals>
+        <paramValue obj="clicked" param="window.hwnd"/>
+        <paramValue obj="this" param="window.hwnd"/>
+      </equals>
+    </msg>
+    <genMsg delay="100">
+      <type>
+        <constValue value="&BM_CLICK;"/>
+      </type>
+      <target>
+        <msgInfoValue obj="clicked" msgParam="target"/>
+      </target>
+    </genMsg>
+  </rule>
 
   <rule name="LeftClickListBox">
@@ -59,5 +57,5 @@
 
   
-  <!--TabChange funktioniert, allerdings wird der Content darunter nicht aktualisiert -->
+  <!-- The tab change itself works, but the content of the tab is not refreshed. -->
   <rule name="TabChange">
     <msg type="&WM_LBUTTONDOWN;">
@@ -436,8 +434,5 @@
   </rule>
   
-
-  
-  <!-- Wenn eine Scrollbar benutzt wurde, die kein eigenes Handle hat, also eine StandardScrollbar in einer ListBox zb
-       Muss noch auf Sequenz erweitert werden, im Moment wird der Thumb der Scrollbar nur auf die erste Position gesetzt (normalerweise also 0) -->
+  <!-- Does not work correctly, if a scrollbar has no handle of its own, e.g., a standard scrollbar of a listbox -->
   <rule name="VScrollNC">
     <msg type="&WM_NCLBUTTONDOWN;">
@@ -501,5 +496,5 @@
   </rule>-->
 
-  <!-- copy of set focus without kill-foxus -->
+  <!-- Copy of set focus without kill-focus -->
   <rule name="LeftClickSetFocus">
     <msg type="&WM_LBUTTONDOWN;">
@@ -557,5 +552,5 @@
   </rule>
   
-  <!-- if nothing else, at least switch focus, works only partially -->
+  <!-- Works only partially! -->
   <rule name="LeftClickChangeFocus">
     <msg type="&WM_LBUTTONDOWN;">
@@ -632,17 +627,11 @@
 
 
-  <!-- rules regarding keyboard input -->
-  <!-- <rule name="KeyPressed">
+  <!-- Rules for keyboard input -->
+  <rule name="KeyDown">
     <msg type="&WM_KEYDOWN;">
       <store var="keydown"/>
     </msg>
-    <msg type="&WM_KEYUP;">
-      <store var="keyup"/>
-    </msg>
     <genMsg delay="20">
       <storedVar obj="keydown"/>
-    </genMsg>
-    <genMsg delay="100">
-      <storedVar obj="keyup"/>
     </genMsg>
     <idinfo>
@@ -651,37 +640,30 @@
   </rule>
 
-  <rule name="SysKeyPressed">
+  <rule name="KeyUp">
+    <msg type="&WM_KEYUP;">
+      <store var="keyup"/>
+    </msg>
+    <genMsg delay="20">
+      <storedVar obj="keyup"/>
+    </genMsg>
+    <idinfo>
+      <paramValue obj="keyup" param="key"/>
+    </idinfo>
+  </rule>
+
+  <rule name="SysKeyDown">
     <msg type="&WM_SYSKEYDOWN;">
       <store var="keydown"/>
     </msg>
-    <msg type="&WM_SYSKEYUP;">
-      <store var="keyup"/>
-    </msg>
     <genMsg delay="20">
       <storedVar obj="keydown"/>
-    </genMsg>
-    <genMsg delay="100">
-      <storedVar obj="keyup"/>
     </genMsg>
     <idinfo>
       <paramValue obj="keydown" param="key"/>
     </idinfo>
-  </rule> -->
-  
-  <!-- Alternate rules -->
-  <rule name="KeyDown">
-    <msg type="&WM_KEYDOWN;">
-      <store var="keydown"/>
-    </msg>
-    <genMsg delay="20">
-      <storedVar obj="keydown"/>
-    </genMsg>
-    <idinfo>
-      <paramValue obj="keydown" param="key"/>
-    </idinfo>
-  </rule>
-
-  <rule name="KeyUp">
-    <msg type="&WM_KEYUP;">
+  </rule>
+
+  <rule name="SysKeyUp">
+    <msg type="&WM_SYSKEYUP;">
       <store var="keyup"/>
     </msg>
@@ -694,35 +676,7 @@
   </rule>
 
-  <rule name="SysKeyDown">
-    <msg type="&WM_SYSKEYDOWN;">
-      <store var="keydown"/>
-    </msg>
-    <genMsg delay="20">
-      <storedVar obj="keydown"/>
-    </genMsg>
-    <idinfo>
-      <paramValue obj="keydown" param="key"/>
-    </idinfo>
-  </rule>
-
-  <rule name="SysKeyUp">
-    <msg type="&WM_SYSKEYUP;">
-      <store var="keyup"/>
-    </msg>
-    <genMsg delay="20">
-      <storedVar obj="keyup"/>
-    </genMsg>
-    <idinfo>
-      <paramValue obj="keyup" param="key"/>
-    </idinfo>
-  </rule>
-
-
-
-  <!--Diese Regel basiert auf relativen Koordinaten...wird nicht funktionieren, wenn sich zb das zu klickende Element in einer Symbolleiste
-  verschoben hat. Die Regel sendet ein WM_LBUTTONDOWN und WM_LBUTTONUP mit den relativen Koordinaten, die beim Aufzeichnen des Logs berechnet und
-  in WM_LBUTTONUP übergeben wurden-->
-
-  <rule name ="LeftClickRelativ">
+
+  <!-- What follows are coordinate-based rules. They are "hail mary" rules that try to salvage events that cannot be matched or replayed in a coordinate independent way (yet). -->
+  <rule name ="LeftClickCoordinates">
     <msg type="&WM_LBUTTONDOWN;">
       <store var="clicked"/>
@@ -735,5 +689,5 @@
       <store var="up"/>
     </msg>
-    <genMsg delay="0">
+    <genMsg delay="20">
       <type>
         <constValue value="&WM_LBUTTONDOWN;"/>
@@ -741,4 +695,23 @@
       <target>
         <msgInfoValue obj="clicked" msgParam="target"/>
+      </target>
+      <LPARAM>
+        <LOWORD>
+          <paramValue obj="clicked" param="point.x"/>
+        </LOWORD>
+        <HIWORD>
+          <paramValue obj="clicked" param="point.y"/>
+        </HIWORD>
+      </LPARAM>
+      <WPARAM>
+        <paramValue obj="clicked" param="WPARAM"/>
+      </WPARAM>
+    </genMsg>
+    <genMsg delay="20">
+      <type>
+        <constValue value="&WM_LBUTTONUP;"/>
+      </type>
+      <target>
+        <msgInfoValue obj="up" msgParam="target"/>
       </target>
       <LPARAM>
@@ -751,9 +724,57 @@
       </LPARAM>
       <WPARAM>
-        <constValue value="1"/>
-      </WPARAM>
-    </genMsg>
-    <genMsg delay="0">
-      <storedVar obj="up"/>
+        <paramValue obj="up" param="WPARAM"/>
+      </WPARAM>
+    </genMsg>
+  </rule>
+  
+  <rule name ="NCLeftClickCoordinates">
+    <msg type="&WM_NCLBUTTONDOWN;">
+      <store var="clicked"/>
+    </msg>
+    <msg type="&WM_LBUTTONUP;">
+      <equals>
+        <paramValue obj="clicked" param="window.hwnd"/>
+        <paramValue obj="this" param="window.hwnd"/>
+      </equals>
+      <store var="up"/>
+    </msg>
+    <genMsg delay="20">
+      <type>
+        <constValue value="&WM_NCLBUTTONDOWN;"/>
+      </type>
+      <target>
+        <msgInfoValue obj="clicked" msgParam="target"/>
+      </target>
+      <LPARAM>
+        <LOWORD>
+          <paramValue obj="clicked" param="point.x"/>
+        </LOWORD>
+        <HIWORD>
+          <paramValue obj="clicked" param="point.y"/>
+        </HIWORD>
+      </LPARAM>
+      <WPARAM>
+        <paramValue obj="clicked" param="WPARAM"/>
+      </WPARAM>
+    </genMsg>
+    <genMsg delay="20">
+      <type>
+        <constValue value="&WM_LBUTTONUP;"/>
+      </type>
+      <target>
+        <msgInfoValue obj="up" msgParam="target"/>
+      </target>
+      <LPARAM>
+        <LOWORD>
+          <paramValue obj="up" param="point.x"/>
+        </LOWORD>
+        <HIWORD>
+          <paramValue obj="up" param="point.y"/>
+        </HIWORD>
+      </LPARAM>
+      <WPARAM>
+        <paramValue obj="up" param="WPARAM"/>
+      </WPARAM>
     </genMsg>
   </rule>
