Author: solomax
Date: Mon Dec  7 16:26:46 2015
New Revision: 1718420

URL: http://svn.apache.org/viewvc?rev=1718420&view=rev
Log:
[OPENMEETINGS-1237] keyboard input is not duplicated

Modified:
    
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
    
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java

Modified: 
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Mon Dec  7 16:26:46 2015
@@ -202,14 +202,12 @@ public class ScopeApplicationAdapter ext
        }
 
        public Map<String, String> screenSharerAction(Map<String, Object> map) {
+               Map<String, String> returnMap = new HashMap<String, String>();
                try {
                        log.debug("-----------  screenSharerAction ENTER");
                        IConnection current = Red5.getConnectionLocal();
 
-                       Client control = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-                       Client client = 
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
-
-                       Map<String, String> returnMap = new HashMap<String, 
String>();
+                       Client client = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
 
                        if (client != null) {
                                boolean changed = false;
@@ -250,11 +248,10 @@ public class ScopeApplicationAdapter ext
                                }
                        }
                        log.debug("-----------  screenSharerAction, return: " + 
returnMap);
-                       return returnMap;
                } catch (Exception err) {
                        log.error("[screenSharerAction]", err);
                }
-               return null;
+               return returnMap;
        }
 
        public List<Client> checkScreenSharing() {
@@ -293,8 +290,7 @@ public class ScopeApplicationAdapter ext
                        log.debug("-----------  setConnectionAsSharingClient");
                        IConnection current = Red5.getConnectionLocal();
 
-                       Client control = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-                       Client client = 
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
+                       Client client = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
 
                        if (client != null) {
                                boolean startRecording = Boolean.valueOf("" + 
map.get("startRecording"));
@@ -317,6 +313,7 @@ public class ScopeApplicationAdapter ext
                                
client.setVY(Integer.parseInt(map.get("screenY").toString()));
                                
client.setVWidth(Integer.parseInt(map.get("screenWidth").toString()));
                                
client.setVHeight(Integer.parseInt(map.get("screenHeight").toString()));
+                               
client.setStreamPublishName(map.get("publishName").toString());
                                
sessionManager.updateClientByStreamId(current.getClient().getId(), client, 
false, null);
 
                                Map<String, Object> returnMap = new 
HashMap<String, Object>();
@@ -803,7 +800,7 @@ public class ScopeApplicationAdapter ext
 
                        @SuppressWarnings("rawtypes")
                        Map cursor = (Map) item;
-                       cursor.put("publicSID", c.getStreamPublishName());
+                       cursor.put("streamPublishName", 
c.getStreamPublishName());
 
                        sendMessageToCurrentScope("newRed5ScreenCursor", 
cursor, true, false);
                } catch (Exception err) {
@@ -1974,7 +1971,7 @@ public class ScopeApplicationAdapter ext
                        @Override
                        public boolean filter(IConnection conn) {
                                IClient client = conn.getClient();
-                               return 
SessionVariablesUtil.isScreenClient(client) && 
conn.getClient().getId().equals(streamid);
+                               return 
!SessionVariablesUtil.isScreenClient(client) || 
!conn.getClient().getId().equals(streamid);
                        }
                }.start();
                return null;

Modified: 
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
 Mon Dec  7 16:26:46 2015
@@ -212,570 +212,517 @@
                                </method>
                                
                                <handler name="onkeydown" reference="lz.Keys" 
args="k">
-                                       <![CDATA[
-                                               if (this.isMouseOverActive) {
-                                                       if ($debug) 
Debug.write("onkeydown ",k);
-                                                       
-                                                       var tObject = new 
Object();
-                                                       tObject["action"] = 
"onkeydown";
-                                                       tObject["k"] = k;
-                                                       
-                                                       var downkeys = 
lz.Keys.downKeysArray;
-                                                       
-                                                       if ($debug) 
Debug.write("downkeys ",downkeys,downkeys.length);
-                               
-                                                       if (this.isWindows) {
-                                                       
-                                                               if 
(downkeys.length==2 && downkeys[0]==16) {
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "*";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "'";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "_";
-                                                                       } else 
if (k == 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "?";
-                                                                       } else 
if (k == 226) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = ">";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "°";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ä";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ö";
-                                                                       }
-                                                                       
-                                                                       
-                                                               } else if 
(downkeys.length==2 && downkeys[0]==18) {
-                                                                       
-                                                                       if (k 
== 81) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "@";
-                                                                       } else 
if (k == 226) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "|";
-                                                                       }
-                                                                       
-                                                               } else {
-                                                                       
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "+";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "#";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "-";
-                                                                       } else 
if (k == 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ß";
-                                                                       } else 
if (k == 226) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "<";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "^";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ä";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ö";
-                                                                       }
-                                                                       
+                               <![CDATA[
+                                       if (this.isMouseOverActive) {
+                                               if ($debug) 
Debug.write("onkeydown ",k);
+                                               
+                                               var tObject = new Object();
+                                               tObject["action"] = "onkeydown";
+                                               tObject["k"] = k;
+                                               
+                                               var downkeys = 
lz.Keys.downKeysArray;
+                                               
+                                               if ($debug) 
Debug.write("downkeys ",downkeys,downkeys.length);
+                                               if (this.isWindows) {
+                                                       if (downkeys.length==2 
&& downkeys[0]==16) {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "*";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "'";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "_";
+                                                               } else if (k == 
221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "?";
+                                                               } else if (k == 
226) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = ">";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "°";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ä";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ö";
                                                                }
-                                                       
-                                                       } else if (this.isMac) {
-                                                               
-                                                               if 
(downkeys.length==2 && downkeys[0]==16) {
-                                                                       if (k 
== 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "*";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "'";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "_";
-                                                                       } else 
if (k == 225) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "?";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = ">";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "°";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ä";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ö";
-                                                                       }
-                                                                       
-                                                                       
-                                                               } else if 
(downkeys.length==2 && downkeys[0]==18) {
-                                                                       
-                                                                       if (k 
== 50) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "@";
-                                                                       } else 
if (k == 55) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "|";
-                                                                       }
-                                                                       
-                                                               } else {
-                                                                       
-                                                                       if (k 
== 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "+";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "#";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "-";
-                                                                       } else 
if (k == 225) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ß";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "<";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "^";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ä";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ö";
-                                                                       }
-                                                                       
-                                                               }
-                                                               
-                                                       } else if 
(this.isLinux) {
-                                                               
-                                                               if 
(downkeys.length==2 && downkeys[0]==16) {
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "*";
-                                                                       } else 
if (k == 51) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "'";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "_";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 223) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "?";
-                                                                       } else 
if (k == 188) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = ">";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "°";
-                                                                       } else 
if (k == 252) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ü";
-                                                                       } else 
if (k == 228) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ä";
-                                                                       } else 
if (k == 246) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ö";
-                                                                       }
-                                                                       
-                                                                       
-                                                               } else if 
(downkeys.length==2 && downkeys[0]==18) {
-                                                                       
-                                                                       if (k 
== 50) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "@";
-                                                                       } else 
if (k == 55) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "|";
-                                                                       }
-                                                                       
-                                                               } else {
-                                                                       
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "+";
-                                                                       } else 
if (k == 51) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "#";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "-";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 223) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ß";
-                                                                       } else 
if (k == 188) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "<";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "^";
-                                                                       } else 
if (k == 246) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ü";
-                                                                       } else 
if (k == 228) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ä";
-                                                                       } else 
if (k == 246) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ö";
-                                                                       }
-                                                                       
+                                                       } else if 
(downkeys.length==2 && downkeys[0]==18) {
+                                                               if (k == 81) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "@";
+                                                               } else if (k == 
226) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "|";
+                                                               }
+                                                       } else {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "+";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "#";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "-";
+                                                               } else if (k == 
221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ß";
+                                                               } else if (k == 
226) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "<";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "^";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ä";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ö";
                                                                }
-                                                               
                                                        }
-                                                       
-                                                       if 
(lz.Keys.downKeysArray.length > 1) {
-                                                               for (var 
i=0;i<lz.Keys.downKeysArray.length;i++) {
-                                                                       if 
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
-                                                                               
lz.Keys.downKeysArray = new Array();
-                                                                               
break;
-                                                                       }
+                                               } else if (this.isMac) {
+                                                       if (downkeys.length==2 
&& downkeys[0]==16) {
+                                                               if (k == 221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "*";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "'";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "_";
+                                                               } else if (k == 
225) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "?";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = ">";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "°";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ä";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ö";
+                                                               }
+                                                       } else if 
(downkeys.length==2 && downkeys[0]==18) {
+                                                               if (k == 50) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "@";
+                                                               } else if (k == 
55) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "|";
+                                                               }
+                                                       } else {
+                                                               if (k == 221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "+";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "#";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "-";
+                                                               } else if (k == 
225) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ß";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "<";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "^";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ä";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ö";
                                                                }
                                                        }
-                                                       
-                                                       
-                                                       
-                                                       if (k == 18 || k == 17) 
{
-                                                               return;
+                                               } else if (this.isLinux) {
+                                                       if (downkeys.length==2 
&& downkeys[0]==16) {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "*";
+                                                               } else if (k == 
51) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "'";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "_";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
223) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "?";
+                                                               } else if (k == 
188) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = ">";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "°";
+                                                               } else if (k == 
252) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ü";
+                                                               } else if (k == 
228) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ä";
+                                                               } else if (k == 
246) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ö";
+                                                               }
+                                                       } else if 
(downkeys.length==2 && downkeys[0]==18) {
+                                                               if (k == 50) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "@";
+                                                               } else if (k == 
55) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "|";
+                                                               }
+                                                       } else {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "+";
+                                                               } else if (k == 
51) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "#";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "-";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
223) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ß";
+                                                               } else if (k == 
188) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "<";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "^";
+                                                               } else if (k == 
246) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ü";
+                                                               } else if (k == 
228) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ä";
+                                                               } else if (k == 
246) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ö";
+                                                               }
                                                        }
-                                                       
-                                                       
this.sendRemoteCursorEvent.tObject = tObject;
-                                                       if 
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
-                                                               
this.sendRemoteCursorEvent.doCall();
+                                               }
+                                               if 
(lz.Keys.downKeysArray.length > 1) {
+                                                       for (var 
i=0;i<lz.Keys.downKeysArray.length;i++) {
+                                                               if 
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
+                                                                       
lz.Keys.downKeysArray = new Array();
+                                                                       break;
+                                                               }
                                                        }
-                                                       
                                                }
-                                       ]]>
+                                               
+                                               if (k == 18 || k == 17) {
+                                                       return;
+                                               }
+                                               
+                                               if ($debug) 
Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
+                                               
this.sendRemoteCursorEvent.tObject = tObject;
+                                               if 
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+                                                       
this.sendRemoteCursorEvent.doCall();
+                                               }
+                                       }
+                               ]]>
                                </handler>
                                
                                <handler name="onkeyup" reference="lz.Keys" 
args="k">
-                                       <![CDATA[
-                                               if (this.isMouseOverActive) {
-                                                       if ($debug) 
Debug.write("onkeyup ",k);
-                                                       
-                                                       var tObject = new 
Object();
-                                                       tObject["action"] = 
"onkeyup";
-                                                       tObject["k"] = k;
-                                                       
-                                                       var downkeys = 
lz.Keys.downKeysArray;
-                                                       
-                                                       if (this.isWindows) {
-                                                               
-                                                               if 
(downkeys.length==2 && downkeys[0]==16) {
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "*";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "'";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "_";
-                                                                       } else 
if (k == 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "?";
-                                                                       } else 
if (k == 226) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = ">";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "°";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ä";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ö";
-                                                                       }
-                                                                       
-                                                                       
-                                                               } else if 
(downkeys.length==2 && downkeys[0]==18) {
-                                                                       
-                                                                       if (k 
== 81) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "@";
-                                                                       } else 
if (k == 226) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "|";
-                                                                       }
-                                                                       
-                                                               } else {
-                                                                       
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "+";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "#";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "-";
-                                                                       } else 
if (k == 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ß";
-                                                                       } else 
if (k == 226) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "<";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "^";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ä";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ö";
-                                                                       }
-                                                                       
+                               <![CDATA[
+                                       if (this.isMouseOverActive) {
+                                               if ($debug) 
Debug.write("onkeyup ",k);
+                                               
+                                               var tObject = new Object();
+                                               tObject["action"] = "onkeyup";
+                                               tObject["k"] = k;
+                                               
+                                               var downkeys = 
lz.Keys.downKeysArray;
+                                               if (this.isWindows) {
+                                                       if (downkeys.length==2 
&& downkeys[0]==16) {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "*";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "'";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "_";
+                                                               } else if (k == 
221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "?";
+                                                               } else if (k == 
226) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = ">";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "°";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ä";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ö";
                                                                }
-                                                       
-                                                       } else if (this.isMac) {
-                                                       
-                                                               if 
(downkeys.length==2 && downkeys[0]==16) {
-                                                                       if (k 
== 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "*";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "'";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "_";
-                                                                       } else 
if (k == 225) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "?";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = ">";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "°";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ä";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ö";
-                                                                       }
-                                                                       
-                                                                       
-                                                               } else if 
(downkeys.length==2 && downkeys[0]==18) {
-                                                                       
-                                                                       if (k 
== 50) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "@";
-                                                                       } else 
if (k == 55) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "|";
-                                                                       }
-                                                                       
-                                                               } else {
-                                                                       
-                                                                       if (k 
== 221) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "+";
-                                                                       } else 
if (k == 220) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "#";
-                                                                       } else 
if (k == 191) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "-";
-                                                                       } else 
if (k == 225) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ß";
-                                                                       } else 
if (k == 192) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "<";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "^";
-                                                                       } else 
if (k == 219) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ü";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ä";
-                                                                       } else 
if (k == 186) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ö";
-                                                                       }
-                                                                       
-                                                               }
-                                                               
-                                                       } else if 
(this.isLinux) {
-                                                               
-                                                               if 
(downkeys.length==2 && downkeys[0]==16) {
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "*";
-                                                                       } else 
if (k == 51) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "'";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "_";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 223) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "?";
-                                                                       } else 
if (k == 188) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = ">";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "°";
-                                                                       } else 
if (k == 252) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ü";
-                                                                       } else 
if (k == 228) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ä";
-                                                                       } else 
if (k == 246) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "Ö";
-                                                                       }
-                                                                       
-                                                                       
-                                                               } else if 
(downkeys.length==2 && downkeys[0]==18) {
-                                                                       
-                                                                       if (k 
== 50) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "@";
-                                                                       } else 
if (k == 55) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "|";
-                                                                       }
-                                                                       
-                                                               } else {
-                                                                       
-                                                                       if (k 
== 187) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "+";
-                                                                       } else 
if (k == 51) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "#";
-                                                                       } else 
if (k == 189) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "-";
-                                                                       } else 
if (k == 222) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "`";
-                                                                       } else 
if (k == 223) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ß";
-                                                                       } else 
if (k == 188) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "<";
-                                                                       } else 
if (k == 176) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "^";
-                                                                       } else 
if (k == 246) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ü";
-                                                                       } else 
if (k == 228) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ä";
-                                                                       } else 
if (k == 246) {
-                                                                               
tObject["k"] = -1;
-                                                                               
tObject["c"] = "ö";
-                                                                       }
-                                                                       
+                                                       } else if 
(downkeys.length==2 && downkeys[0]==18) {
+                                                               if (k == 81) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "@";
+                                                               } else if (k == 
226) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "|";
+                                                               }
+                                                       } else {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "+";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "#";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "-";
+                                                               } else if (k == 
221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ß";
+                                                               } else if (k == 
226) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "<";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "^";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ä";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ö";
+                                                               }
+                                                       }
+                                               } else if (this.isMac) {
+                                                       if (downkeys.length==2 
&& downkeys[0]==16) {
+                                                               if (k == 221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "*";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "'";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "_";
+                                                               } else if (k == 
225) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "?";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = ">";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "°";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ä";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ö";
+                                                               }
+                                                       } else if 
(downkeys.length==2 && downkeys[0]==18) {
+                                                               if (k == 50) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "@";
+                                                               } else if (k == 
55) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "|";
+                                                               }
+                                                       } else {
+                                                               if (k == 221) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "+";
+                                                               } else if (k == 
220) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "#";
+                                                               } else if (k == 
191) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "-";
+                                                               } else if (k == 
225) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ß";
+                                                               } else if (k == 
192) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "<";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "^";
+                                                               } else if (k == 
219) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ü";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ä";
+                                                               } else if (k == 
186) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ö";
                                                                }
-                                                               
                                                        }
-                                                               
-                                                       if (k == 18 || k == 17) 
{
-                                                               return;
+                                               } else if (this.isLinux) {
+                                                       if (downkeys.length==2 
&& downkeys[0]==16) {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "*";
+                                                               } else if (k == 
51) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "'";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "_";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
223) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "?";
+                                                               } else if (k == 
188) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = ">";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "°";
+                                                               } else if (k == 
252) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ü";
+                                                               } else if (k == 
228) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ä";
+                                                               } else if (k == 
246) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "Ö";
+                                                               }
+                                                       } else if 
(downkeys.length==2 && downkeys[0]==18) {
+                                                               if (k == 50) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "@";
+                                                               } else if (k == 
55) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "|";
+                                                               }
+                                                       } else {
+                                                               if (k == 187) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "+";
+                                                               } else if (k == 
51) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "#";
+                                                               } else if (k == 
189) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "-";
+                                                               } else if (k == 
222) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "`";
+                                                               } else if (k == 
223) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ß";
+                                                               } else if (k == 
188) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "<";
+                                                               } else if (k == 
176) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "^";
+                                                               } else if (k == 
246) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ü";
+                                                               } else if (k == 
228) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ä";
+                                                               } else if (k == 
246) {
+                                                                       
tObject["k"] = -1;
+                                                                       
tObject["c"] = "ö";
+                                                               }
                                                        }
+                                               }
                                                        
-                                                       if 
(lz.Keys.downKeysArray.length > 1) {
-                                                               for (var 
i=0;i<lz.Keys.downKeysArray.length;i++) {
-                                                                       if 
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
-                                                                               
lz.Keys.downKeysArray = new Array();
-                                                                               
break;
-                                                                       }
+                                               if (k == 18 || k == 17) {
+                                                       return;
+                                               }
+                                               
+                                               if 
(lz.Keys.downKeysArray.length > 1) {
+                                                       for (var 
i=0;i<lz.Keys.downKeysArray.length;i++) {
+                                                               if 
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
+                                                                       
lz.Keys.downKeysArray = new Array();
+                                                                       break;
                                                                }
                                                        }
+                                               }
+                                       
+                                               if ($debug) 
Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
                                                
-                                                       if ($debug) 
Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
-                                                       
-                                                       
this.sendRemoteCursorEvent.tObject = tObject;
-                                                       if 
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
-                                                               
this.sendRemoteCursorEvent.doCall();
-                                                       }
+                                               
this.sendRemoteCursorEvent.tObject = tObject;
+                                               if 
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+                                                       
this.sendRemoteCursorEvent.doCall();
                                                }
-                                       ]]>
+                                       }
+                               ]]>
                                </handler>
                                
                                <handler name="onmouseover">

Modified: 
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
 Mon Dec  7 16:26:46 2015
@@ -64,7 +64,6 @@ public class CoreScreenShare implements
                rtmp, rtmpt, rtmpe, rtmps
        }
        private IScreenShare instance = null;
-       private IScreenShare controlInstance = null;
        private Protocol protocol;
        private String host;
        private String app;
@@ -145,28 +144,21 @@ public class CoreScreenShare implements
                                switch (protocol) {
                                        case rtmp:
                                                instance = new 
RTMPScreenShare(this);
-                                               controlInstance = new 
RTMPScreenShare(this);
                                                break;
                                        case rtmpt:
                                                instance = new 
RTMPTScreenShare(this);
-                                               controlInstance = new 
RTMPTScreenShare(this);
                                                break;
                                        case rtmps:
                                                RTMPSScreenShare client = new 
RTMPSScreenShare(this);
                                                
client.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
                                                
client.setKeyStorePassword(args[14]);
                                                instance = client;
-                                               RTMPSScreenShare controlClient 
= new RTMPSScreenShare(this);
-                                               
controlClient.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
-                                               
controlClient.setKeyStorePassword(args[14]);
-                                               controlInstance = controlClient;
                                                break;
                                        case rtmpe:
                                        default:
                                                throw new 
Exception("Unsupported protocol");
                                }
                                instance.setServiceProvider(this);
-                               controlInstance.setServiceProvider(this);
                                log.debug(String.format("host: %s, app: %s, 
port: %s, publish: %s", host, port, app, publishName));
                        } else {
                                System.exit(0);
@@ -210,15 +202,15 @@ public class CoreScreenShare implements
                        int y = (int)(Ampl_factor * (mouseP.getY() - spinnerY) 
* scaleFactor);
 
                        Map<String, Object> cursorPosition = new 
HashMap<String, Object>();
-                       cursorPosition.put("streamPublishName", publishName);
+                       cursorPosition.put("publicSID", publishName);
                        cursorPosition.put("cursor_x", x);
                        cursorPosition.put("cursor_y", y);
 
-                       if (controlInstance.getConnection() != null) {
+                       if (instance.getConnection() != null) {
                                if (Red5.getConnectionLocal() == null) {
-                                       
Red5.setConnectionLocal(controlInstance.getConnection());
+                                       
Red5.setConnectionLocal(instance.getConnection());
                                }
-                               controlInstance.invoke("setNewCursorPosition", 
new Object[] { cursorPosition }, this);
+                               instance.invoke("setNewCursorPosition", new 
Object[] { cursorPosition }, this);
                        }
                } catch (NullPointerException npe) {
                        //noop
@@ -232,7 +224,7 @@ public class CoreScreenShare implements
                log.debug("########## setConnectionAsSharingClient");
                try {
                        if (Red5.getConnectionLocal() == null) {
-                               
Red5.setConnectionLocal(controlInstance.getConnection());
+                               
Red5.setConnectionLocal(instance.getConnection());
                        }
                        Map<String, Object> map = new HashMap<String, Object>();
                        map.put("screenX", spinnerX);
@@ -243,7 +235,7 @@ public class CoreScreenShare implements
 
                        map.put("screenWidth", scaledWidth);
                        map.put("screenHeight", scaledHeight);
-
+                       map.put("publishName", publishName);
                        map.put("startRecording", startRecording);
                        map.put("startStreaming", startStreaming);
                        map.put("startPublishing", startPublishing);
@@ -251,9 +243,9 @@ public class CoreScreenShare implements
                        map.put("publishingApp", frame.getPublishApp());
                        map.put("publishingId", frame.getPublishId());
                        if (Red5.getConnectionLocal() == null) {
-                               
Red5.setConnectionLocal(controlInstance.getConnection());
+                               
Red5.setConnectionLocal(instance.getConnection());
                        }
-                       controlInstance.invoke("setConnectionAsSharingClient", 
new Object[] { map }, this);
+                       instance.invoke("setConnectionAsSharingClient", new 
Object[] { map }, this);
                } catch (Exception err) {
                        frame.setStatus("Error: " + err.getLocalizedMessage());
                        log.error("[setConnectionAsSharingClient]", err);
@@ -275,12 +267,12 @@ public class CoreScreenShare implements
                captureScreenStart();
        }
        
-       private void connect(String parentSid, boolean control) {
+       private void connect(String parentSid) {
                Map<String, Object> map = 
instance.makeDefaultConnectionParams(host, port, app);
                map.put("screenClient", true);
                map.put("userId", userId);
                map.put("parentSid", parentSid);
-               (control ? controlInstance : instance).connect(host, port, map, 
this);
+               instance.connect(host, port, map, this);
        }
        
        private void captureScreenStart() {
@@ -288,7 +280,7 @@ public class CoreScreenShare implements
                        log.debug("captureScreenStart");
                        
                        if (!isConnected) {
-                               connect(publishName, false);
+                               connect(publishName);
                        } else {
                                setConnectionAsSharingClient();
                        }
@@ -321,9 +313,9 @@ public class CoreScreenShare implements
                        map.put(action, true);
 
                        if (Red5.getConnectionLocal() == null) {
-                               
Red5.setConnectionLocal(controlInstance.getConnection());
+                               
Red5.setConnectionLocal(instance.getConnection());
                        }
-                       controlInstance.invoke("screenSharerAction", new 
Object[] { map }, this);
+                       instance.invoke("screenSharerAction", new Object[] { 
map }, this);
                } catch (Exception err) {
                        log.error("captureScreenStop Exception: ", err);
                        frame.setStatus("Exception: " + err);
@@ -367,11 +359,7 @@ public class CoreScreenShare implements
                }
                
                String method = invoke.getCall().getServiceMethodName();
-               if ("stopStream".equals(method)) {
-                       stopStream();
-               } else if ("sendRemoteCursorEvent".equals(method)) {
-                       
sendRemoteCursorEvent(invoke.getCall().getArguments()[0]);
-               } else if ("screenSharerAction".equals(method)) {
+               if ("screenSharerAction".equals(method)) {
                        Object[] args = invoke.getCall().getArguments();
                        if (args != null && args.length > 0) {
                                @SuppressWarnings("unchecked")
@@ -396,7 +384,6 @@ public class CoreScreenShare implements
                        isConnected = false;
 
                        instance.disconnect();
-                       controlInstance.disconnect();
                        setReadyToRecord(false);
                        getCapture().setStartPublish(false);
                        getCapture().release();
@@ -404,7 +391,6 @@ public class CoreScreenShare implements
                } catch (Exception e) {
                        log.error("ScreenShare stopStream exception " + e);
                }
-
        }
 
        public void onStreamEvent(Notify notify) {
@@ -477,7 +463,7 @@ public class CoreScreenShare implements
 
                                int key = getInt(returnMap, "k");
 
-                               // logger.debug("key onkeydown -1 "+key);
+                               log.trace("KEY EVENT!!!!!  key onkeydown -1 " + 
key);
                                boolean doAction = true;
 
                                if (key == 221) {
@@ -492,7 +478,7 @@ public class CoreScreenShare implements
                                                robot.keyRelease(storedKey);
                                        }
 
-                                       currentPressedKeys = new 
HashMap<Integer, Boolean>();
+                                       currentPressedKeys.clear();
 
                                        pressSpecialSign(charValue, robot);
                                } else if (key == 188) {
@@ -535,7 +521,7 @@ public class CoreScreenShare implements
                                        key = KeyEvent.VK_ENTER;
                                }
 
-                               // logger.debug("key onkeyup 2- "+key);
+                               log.trace("KEY EVENT!!!!!  key onkeyup 2- " + 
key);
 
                                if (doAction) {
                                        if 
(currentPressedKeys.containsKey(key)) {
@@ -561,7 +547,7 @@ public class CoreScreenShare implements
 
                                String clientId = 
returnMap.get("clientId").toString();
 
-                               
controlInstance.invoke("sendMessageWithClientById", new Object[]{map, 
clientId}, this);
+                               instance.invoke("sendMessageWithClientById", 
new Object[]{map, clientId}, this);
                        } else if (action.equals("show")) {
                                String paste = getClipboardText();
 
@@ -571,7 +557,7 @@ public class CoreScreenShare implements
 
                                String clientId = 
returnMap.get("clientId").toString();
 
-                               
controlInstance.invoke("sendMessageWithClientById", new Object[]{map, 
clientId}, this);
+                               instance.invoke("sendMessageWithClientById", 
new Object[]{map, clientId}, this);
                        }
                } catch (Exception err) {
                        log.error("[sendRemoteCursorEvent]", err);
@@ -609,8 +595,12 @@ public class CoreScreenShare implements
        }
 
        private void pressSequence(Robot robot, long delay, int... codes) 
throws InterruptedException {
-               for (int code : codes) {
-                       robot.keyPress(code);
+               for (int i = 0; i < codes.length; ++i) {
+                       robot.keyPress(codes[i]);
+                       Thread.sleep(delay);
+               }
+               for (int i = codes.length - 1; i >= 0; --i) {
+                       robot.keyRelease(codes[i]);
                        Thread.sleep(delay);
                }
        }
@@ -619,10 +609,10 @@ public class CoreScreenShare implements
                try {
                        if 
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
                                // pressing STRG+C == copy
-                               pressSequence(robot, 200, KeyEvent.VK_CONTROL, 
KeyEvent.VK_C, KeyEvent.VK_C, KeyEvent.VK_CONTROL);
+                               pressSequence(robot, 200, KeyEvent.VK_CONTROL, 
KeyEvent.VK_C);
                        } else {
                                // Macintosh simulate Copy
-                               pressSequence(robot, 200, 157, 67, 67, 157);
+                               pressSequence(robot, 200, 157, 67);
                        }
                        return getClipboardText();
                } catch (Exception e) {
@@ -637,12 +627,12 @@ public class CoreScreenShare implements
                        Transferable transferableText = new 
StringSelection(charValue);
                        clippy.setContents(transferableText, null);
 
-                       if 
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
+                       if 
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") > -1) {
                                // pressing STRG+V == insert-mode
-                               pressSequence(robot, 100, KeyEvent.VK_CONTROL, 
KeyEvent.VK_V, KeyEvent.VK_V, KeyEvent.VK_CONTROL);
+                               pressSequence(robot, 100, KeyEvent.VK_CONTROL, 
KeyEvent.VK_V);
                        } else {
                                // Macintosh simulate Insert
-                               pressSequence(robot, 100, 157, 86, 86, 157);
+                               pressSequence(robot, 100, 157, 86);
                        }
                } catch (Exception e) {
                        log.error("Unexpected exception while 
pressSpecialSign", e);
@@ -667,14 +657,8 @@ public class CoreScreenShare implements
                                                return;
                                        }
                                }
-                               if (!isConnected) {
-                                       instance.invoke("getPublicSID", null, 
this);
-                               } else {
-                                       setConnectionAsSharingClient();
-                               }
                                isConnected = true;
-                       } else if ("getPublicSID".equals(method)) {
-                               connect((String)o, true);
+                               setConnectionAsSharingClient();
                        } else if 
("setConnectionAsSharingClient".equals(method)) {
                                @SuppressWarnings("unchecked")
                                Map<String, Object> returnMap = (Map<String, 
Object>) o;
@@ -725,6 +709,7 @@ public class CoreScreenShare implements
                        } else if ("screenSharerAction".equals(method)) {
                                if (log.isTraceEnabled()) {
                                        log.trace("Result Map Type " + (o == 
null ? null : o.getClass().getName()));
+                                       log.trace("" + o);
                                }
 
                                @SuppressWarnings("unchecked")

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Mon Dec  7 16:26:46 2015
@@ -193,14 +193,12 @@ public class ScopeApplicationAdapter ext
        }
 
        public Map<String, String> screenSharerAction(Map<String, Object> map) {
+               Map<String, String> returnMap = new HashMap<String, String>();
                try {
                        log.debug("-----------  screenSharerAction ENTER");
                        IConnection current = Red5.getConnectionLocal();
 
-                       Client control = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-                       Client client = 
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
-
-                       Map<String, String> returnMap = new HashMap<String, 
String>();
+                       Client client = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
 
                        if (client != null) {
                                boolean changed = false;
@@ -241,11 +239,10 @@ public class ScopeApplicationAdapter ext
                                }
                        }
                        log.debug("-----------  screenSharerAction, return: " + 
returnMap);
-                       return returnMap;
                } catch (Exception err) {
                        log.error("[screenSharerAction]", err);
                }
-               return null;
+               return returnMap;
        }
 
        public List<Client> checkScreenSharing() {
@@ -284,8 +281,7 @@ public class ScopeApplicationAdapter ext
                        log.debug("-----------  setConnectionAsSharingClient");
                        IConnection current = Red5.getConnectionLocal();
 
-                       Client control = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-                       Client client = 
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
+                       Client client = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
 
                        if (client != null) {
                                boolean startRecording = Boolean.valueOf("" + 
map.get("startRecording"));
@@ -308,6 +304,7 @@ public class ScopeApplicationAdapter ext
                                
client.setVY(Integer.parseInt(map.get("screenY").toString()));
                                
client.setVWidth(Integer.parseInt(map.get("screenWidth").toString()));
                                
client.setVHeight(Integer.parseInt(map.get("screenHeight").toString()));
+                               
client.setStreamPublishName(map.get("publishName").toString());
                                
sessionManager.updateClientByStreamId(current.getClient().getId(), client, 
false, null);
 
                                Map<String, Object> returnMap = new 
HashMap<String, Object>();
@@ -794,7 +791,7 @@ public class ScopeApplicationAdapter ext
 
                        @SuppressWarnings("rawtypes")
                        Map cursor = (Map) item;
-                       cursor.put("publicSID", c.getStreamPublishName());
+                       cursor.put("streamPublishName", 
c.getStreamPublishName());
 
                        sendMessageToCurrentScope("newRed5ScreenCursor", 
cursor, true, false);
                } catch (Exception err) {
@@ -1965,7 +1962,7 @@ public class ScopeApplicationAdapter ext
                        @Override
                        public boolean filter(IConnection conn) {
                                IClient client = conn.getClient();
-                               return 
SessionVariablesUtil.isScreenClient(client) && 
conn.getClient().getId().equals(streamid);
+                               return 
!SessionVariablesUtil.isScreenClient(client) || 
!conn.getClient().getId().equals(streamid);
                        }
                }.start();
                return null;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
 Mon Dec  7 16:26:46 2015
@@ -64,7 +64,6 @@ public class CoreScreenShare implements
                rtmp, rtmpt, rtmpe, rtmps
        }
        private IScreenShare instance = null;
-       private IScreenShare controlInstance = null;
        private Protocol protocol;
        private String host;
        private String app;
@@ -145,28 +144,21 @@ public class CoreScreenShare implements
                                switch (protocol) {
                                        case rtmp:
                                                instance = new 
RTMPScreenShare(this);
-                                               controlInstance = new 
RTMPScreenShare(this);
                                                break;
                                        case rtmpt:
                                                instance = new 
RTMPTScreenShare(this);
-                                               controlInstance = new 
RTMPTScreenShare(this);
                                                break;
                                        case rtmps:
                                                RTMPSScreenShare client = new 
RTMPSScreenShare(this);
                                                
client.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
                                                
client.setKeyStorePassword(args[14]);
                                                instance = client;
-                                               RTMPSScreenShare controlClient 
= new RTMPSScreenShare(this);
-                                               
controlClient.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
-                                               
controlClient.setKeyStorePassword(args[14]);
-                                               controlInstance = controlClient;
                                                break;
                                        case rtmpe:
                                        default:
                                                throw new 
Exception("Unsupported protocol");
                                }
                                instance.setServiceProvider(this);
-                               controlInstance.setServiceProvider(this);
                                log.debug(String.format("host: %s, app: %s, 
port: %s, publish: %s", host, port, app, publishName));
                        } else {
                                System.exit(0);
@@ -210,15 +202,15 @@ public class CoreScreenShare implements
                        int y = (int)(Ampl_factor * (mouseP.getY() - spinnerY) 
* scaleFactor);
 
                        Map<String, Object> cursorPosition = new 
HashMap<String, Object>();
-                       cursorPosition.put("streamPublishName", publishName);
+                       cursorPosition.put("publicSID", publishName);
                        cursorPosition.put("cursor_x", x);
                        cursorPosition.put("cursor_y", y);
 
-                       if (controlInstance.getConnection() != null) {
+                       if (instance.getConnection() != null) {
                                if (Red5.getConnectionLocal() == null) {
-                                       
Red5.setConnectionLocal(controlInstance.getConnection());
+                                       
Red5.setConnectionLocal(instance.getConnection());
                                }
-                               controlInstance.invoke("setNewCursorPosition", 
new Object[] { cursorPosition }, this);
+                               instance.invoke("setNewCursorPosition", new 
Object[] { cursorPosition }, this);
                        }
                } catch (NullPointerException npe) {
                        //noop
@@ -232,7 +224,7 @@ public class CoreScreenShare implements
                log.debug("########## setConnectionAsSharingClient");
                try {
                        if (Red5.getConnectionLocal() == null) {
-                               
Red5.setConnectionLocal(controlInstance.getConnection());
+                               
Red5.setConnectionLocal(instance.getConnection());
                        }
                        Map<String, Object> map = new HashMap<String, Object>();
                        map.put("screenX", spinnerX);
@@ -243,7 +235,7 @@ public class CoreScreenShare implements
 
                        map.put("screenWidth", scaledWidth);
                        map.put("screenHeight", scaledHeight);
-
+                       map.put("publishName", publishName);
                        map.put("startRecording", startRecording);
                        map.put("startStreaming", startStreaming);
                        map.put("startPublishing", startPublishing);
@@ -251,9 +243,9 @@ public class CoreScreenShare implements
                        map.put("publishingApp", frame.getPublishApp());
                        map.put("publishingId", frame.getPublishId());
                        if (Red5.getConnectionLocal() == null) {
-                               
Red5.setConnectionLocal(controlInstance.getConnection());
+                               
Red5.setConnectionLocal(instance.getConnection());
                        }
-                       controlInstance.invoke("setConnectionAsSharingClient", 
new Object[] { map }, this);
+                       instance.invoke("setConnectionAsSharingClient", new 
Object[] { map }, this);
                } catch (Exception err) {
                        frame.setStatus("Error: " + err.getLocalizedMessage());
                        log.error("[setConnectionAsSharingClient]", err);
@@ -275,12 +267,12 @@ public class CoreScreenShare implements
                captureScreenStart();
        }
        
-       private void connect(String parentSid, boolean control) {
+       private void connect(String parentSid) {
                Map<String, Object> map = 
instance.makeDefaultConnectionParams(host, port, app);
                map.put("screenClient", true);
                map.put("userId", userId);
                map.put("parentSid", parentSid);
-               (control ? controlInstance : instance).connect(host, port, map, 
this);
+               instance.connect(host, port, map, this);
        }
        
        private void captureScreenStart() {
@@ -288,7 +280,7 @@ public class CoreScreenShare implements
                        log.debug("captureScreenStart");
                        
                        if (!isConnected) {
-                               connect(publishName, false);
+                               connect(publishName);
                        } else {
                                setConnectionAsSharingClient();
                        }
@@ -321,9 +313,9 @@ public class CoreScreenShare implements
                        map.put(action, true);
 
                        if (Red5.getConnectionLocal() == null) {
-                               
Red5.setConnectionLocal(controlInstance.getConnection());
+                               
Red5.setConnectionLocal(instance.getConnection());
                        }
-                       controlInstance.invoke("screenSharerAction", new 
Object[] { map }, this);
+                       instance.invoke("screenSharerAction", new Object[] { 
map }, this);
                } catch (Exception err) {
                        log.error("captureScreenStop Exception: ", err);
                        frame.setStatus("Exception: " + err);
@@ -367,11 +359,7 @@ public class CoreScreenShare implements
                }
                
                String method = invoke.getCall().getServiceMethodName();
-               if ("stopStream".equals(method)) {
-                       stopStream();
-               } else if ("sendRemoteCursorEvent".equals(method)) {
-                       
sendRemoteCursorEvent(invoke.getCall().getArguments()[0]);
-               } else if ("screenSharerAction".equals(method)) {
+               if ("screenSharerAction".equals(method)) {
                        Object[] args = invoke.getCall().getArguments();
                        if (args != null && args.length > 0) {
                                @SuppressWarnings("unchecked")
@@ -396,7 +384,6 @@ public class CoreScreenShare implements
                        isConnected = false;
 
                        instance.disconnect();
-                       controlInstance.disconnect();
                        setReadyToRecord(false);
                        getCapture().setStartPublish(false);
                        getCapture().release();
@@ -404,7 +391,6 @@ public class CoreScreenShare implements
                } catch (Exception e) {
                        log.error("ScreenShare stopStream exception " + e);
                }
-
        }
 
        public void onStreamEvent(Notify notify) {
@@ -477,7 +463,7 @@ public class CoreScreenShare implements
 
                                int key = getInt(returnMap, "k");
 
-                               // logger.debug("key onkeydown -1 "+key);
+                               log.trace("KEY EVENT!!!!!  key onkeydown -1 " + 
key);
                                boolean doAction = true;
 
                                if (key == 221) {
@@ -492,7 +478,7 @@ public class CoreScreenShare implements
                                                robot.keyRelease(storedKey);
                                        }
 
-                                       currentPressedKeys = new 
HashMap<Integer, Boolean>();
+                                       currentPressedKeys.clear();
 
                                        pressSpecialSign(charValue, robot);
                                } else if (key == 188) {
@@ -535,7 +521,7 @@ public class CoreScreenShare implements
                                        key = KeyEvent.VK_ENTER;
                                }
 
-                               // logger.debug("key onkeyup 2- "+key);
+                               log.trace("KEY EVENT!!!!!  key onkeyup 2- " + 
key);
 
                                if (doAction) {
                                        if 
(currentPressedKeys.containsKey(key)) {
@@ -561,7 +547,7 @@ public class CoreScreenShare implements
 
                                String clientId = 
returnMap.get("clientId").toString();
 
-                               
controlInstance.invoke("sendMessageWithClientById", new Object[]{map, 
clientId}, this);
+                               instance.invoke("sendMessageWithClientById", 
new Object[]{map, clientId}, this);
                        } else if (action.equals("show")) {
                                String paste = getClipboardText();
 
@@ -571,7 +557,7 @@ public class CoreScreenShare implements
 
                                String clientId = 
returnMap.get("clientId").toString();
 
-                               
controlInstance.invoke("sendMessageWithClientById", new Object[]{map, 
clientId}, this);
+                               instance.invoke("sendMessageWithClientById", 
new Object[]{map, clientId}, this);
                        }
                } catch (Exception err) {
                        log.error("[sendRemoteCursorEvent]", err);
@@ -609,8 +595,12 @@ public class CoreScreenShare implements
        }
 
        private void pressSequence(Robot robot, long delay, int... codes) 
throws InterruptedException {
-               for (int code : codes) {
-                       robot.keyPress(code);
+               for (int i = 0; i < codes.length; ++i) {
+                       robot.keyPress(codes[i]);
+                       Thread.sleep(delay);
+               }
+               for (int i = codes.length - 1; i >= 0; --i) {
+                       robot.keyRelease(codes[i]);
                        Thread.sleep(delay);
                }
        }
@@ -619,10 +609,10 @@ public class CoreScreenShare implements
                try {
                        if 
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
                                // pressing STRG+C == copy
-                               pressSequence(robot, 200, KeyEvent.VK_CONTROL, 
KeyEvent.VK_C, KeyEvent.VK_C, KeyEvent.VK_CONTROL);
+                               pressSequence(robot, 200, KeyEvent.VK_CONTROL, 
KeyEvent.VK_C);
                        } else {
                                // Macintosh simulate Copy
-                               pressSequence(robot, 200, 157, 67, 67, 157);
+                               pressSequence(robot, 200, 157, 67);
                        }
                        return getClipboardText();
                } catch (Exception e) {
@@ -637,12 +627,12 @@ public class CoreScreenShare implements
                        Transferable transferableText = new 
StringSelection(charValue);
                        clippy.setContents(transferableText, null);
 
-                       if 
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
+                       if 
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") > -1) {
                                // pressing STRG+V == insert-mode
-                               pressSequence(robot, 100, KeyEvent.VK_CONTROL, 
KeyEvent.VK_V, KeyEvent.VK_V, KeyEvent.VK_CONTROL);
+                               pressSequence(robot, 100, KeyEvent.VK_CONTROL, 
KeyEvent.VK_V);
                        } else {
                                // Macintosh simulate Insert
-                               pressSequence(robot, 100, 157, 86, 86, 157);
+                               pressSequence(robot, 100, 157, 86);
                        }
                } catch (Exception e) {
                        log.error("Unexpected exception while 
pressSpecialSign", e);
@@ -667,14 +657,8 @@ public class CoreScreenShare implements
                                                return;
                                        }
                                }
-                               if (!isConnected) {
-                                       instance.invoke("getPublicSID", null, 
this);
-                               } else {
-                                       setConnectionAsSharingClient();
-                               }
                                isConnected = true;
-                       } else if ("getPublicSID".equals(method)) {
-                               connect((String)o, true);
+                               setConnectionAsSharingClient();
                        } else if 
("setConnectionAsSharingClient".equals(method)) {
                                @SuppressWarnings("unchecked")
                                Map<String, Object> returnMap = (Map<String, 
Object>) o;
@@ -725,6 +709,7 @@ public class CoreScreenShare implements
                        } else if ("screenSharerAction".equals(method)) {
                                if (log.isTraceEnabled()) {
                                        log.trace("Result Map Type " + (o == 
null ? null : o.getClass().getName()));
+                                       log.trace("" + o);
                                }
 
                                @SuppressWarnings("unchecked")


Reply via email to