You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/09/16 06:14:25 UTC

svn commit: r1760998 - in /openmeetings/application: branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/ branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/ trunk/ope...

Author: solomax
Date: Fri Sep 16 06:14:25 2016
New Revision: 1760998

URL: http://svn.apache.org/viewvc?rev=1760998&view=rev
Log:
[OPENMEETINGS-1468] umlauts on Mac should work as expected

Modified:
    openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
    openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
    openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
    openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
    openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
    openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java

Modified: openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java?rev=1760998&r1=1760997&r2=1760998&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java Fri Sep 16 06:14:25 2016
@@ -44,7 +44,7 @@ public class OmKeyEvent {
 	private static final Logger log = getLogger(OmKeyEvent.class);
 	private static final Map<Integer, Integer> KEY_MAP = new HashMap<>();
 	private static final Map<Character, Integer> CHAR_MAP = new HashMap<>();
-	private static final Set<Character> UNPRINTABLE = Collections.unmodifiableSet(Stream.of('§', 'ö', 'ä', 'ü', 'ß', 'Ö', 'Ä' , 'Ü').collect(Collectors.toSet()));
+	private static final Set<Character> UNPRINTABLE = Collections.unmodifiableSet(Stream.of('§', 'ö', 'ä', 'ü', 'ß', 'Ö', 'Ä', 'Ü').collect(Collectors.toSet()));
 	static {
 		KEY_MAP.put(13, KeyEvent.VK_ENTER);
 		KEY_MAP.put(16, 0);
@@ -119,13 +119,36 @@ public class OmKeyEvent {
 		if (UNPRINTABLE.contains(ch)) {
 			if (SystemUtils.IS_OS_LINUX) {
 				r.press(KeyEvent.VK_CONTROL, KeyEvent.VK_SHIFT, KeyEvent.VK_U);
-				String hex = String.format("%04X", (int)ch);
+				//String hex = String.format("%04X", (int)ch);
+				String hex = Integer.toHexString((int)ch);
 				log.debug("sequence:: hex {}", hex);
 				for (int i = 0; i < hex.length(); ++i) {
 					r.press(KeyStroke.getKeyStroke(toUpperCase(hex.charAt(i)), 0).getKeyCode());
 				}
 				r.press(KeyEvent.VK_ENTER);
 			}
+			if (SystemUtils.IS_OS_MAC) {
+				if (ch == 'ß') {
+					r.press(KeyEvent.VK_ALT, KeyEvent.VK_S);
+				} else {
+					char uch = toUpperCase(ch);
+					if (uch == 'Ö' || uch == 'Ä' || uch == 'Ü') {
+						r.press(KeyEvent.VK_ALT, KeyEvent.VK_U);
+						List<Integer> list = new ArrayList<>();
+						if (Character.isUpperCase(ch)) {
+							list.add(KeyEvent.VK_SHIFT);
+						}
+						if (uch == 'Ö') {
+							list.add(KeyEvent.VK_O);
+						} else if (uch == 'Ä') {
+							list.add(KeyEvent.VK_A);
+						} else if (uch == 'Ü') {
+							list.add(KeyEvent.VK_U);
+						}
+						r.press(list);
+					}
+				}
+			}
 		} else {
 			List<Integer> list = new ArrayList<>();
 			if (shift) {
@@ -140,8 +163,7 @@ public class OmKeyEvent {
 			if (key != 0) {
 				list.add(key);
 			}
-			log.debug("sequence:: list {}", list);
-			r.press(list.stream().mapToInt(Integer::intValue).toArray());
+			r.press(list);
 		}
 	}
 }

Modified: openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java?rev=1760998&r1=1760997&r2=1760998&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java Fri Sep 16 06:14:25 2016
@@ -39,6 +39,7 @@ import java.awt.datatransfer.Transferabl
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -119,6 +120,11 @@ public class RemoteJob implements Job {
 		}
 	}
 
+	public void press(List<Integer> codes) throws InterruptedException {
+		log.debug("sequence:: codes {}", codes);
+		press(codes.stream().mapToInt(Integer::intValue).toArray());
+	}
+
 	public void press(int... codes) throws InterruptedException {
 		for (int i = 0; i < codes.length; ++i) {
 			robot.keyPress(codes[i]);

Modified: openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java?rev=1760998&r1=1760997&r2=1760998&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java Fri Sep 16 06:14:25 2016
@@ -44,7 +44,7 @@ public class OmKeyEvent {
 	private static final Logger log = getLogger(OmKeyEvent.class);
 	private static final Map<Integer, Integer> KEY_MAP = new HashMap<>();
 	private static final Map<Character, Integer> CHAR_MAP = new HashMap<>();
-	private static final Set<Character> UNPRINTABLE = Collections.unmodifiableSet(Stream.of('§', 'ö', 'ä', 'ü', 'ß', 'Ö', 'Ä' , 'Ü').collect(Collectors.toSet()));
+	private static final Set<Character> UNPRINTABLE = Collections.unmodifiableSet(Stream.of('§', 'ö', 'ä', 'ü', 'ß', 'Ö', 'Ä', 'Ü').collect(Collectors.toSet()));
 	static {
 		KEY_MAP.put(13, KeyEvent.VK_ENTER);
 		KEY_MAP.put(16, 0);
@@ -119,13 +119,36 @@ public class OmKeyEvent {
 		if (UNPRINTABLE.contains(ch)) {
 			if (SystemUtils.IS_OS_LINUX) {
 				r.press(KeyEvent.VK_CONTROL, KeyEvent.VK_SHIFT, KeyEvent.VK_U);
-				String hex = String.format("%04X", (int)ch);
+				//String hex = String.format("%04X", (int)ch);
+				String hex = Integer.toHexString((int)ch);
 				log.debug("sequence:: hex {}", hex);
 				for (int i = 0; i < hex.length(); ++i) {
 					r.press(KeyStroke.getKeyStroke(toUpperCase(hex.charAt(i)), 0).getKeyCode());
 				}
 				r.press(KeyEvent.VK_ENTER);
 			}
+			if (SystemUtils.IS_OS_MAC) {
+				if (ch == 'ß') {
+					r.press(KeyEvent.VK_ALT, KeyEvent.VK_S);
+				} else {
+					char uch = toUpperCase(ch);
+					if (uch == 'Ö' || uch == 'Ä' || uch == 'Ü') {
+						r.press(KeyEvent.VK_ALT, KeyEvent.VK_U);
+						List<Integer> list = new ArrayList<>();
+						if (Character.isUpperCase(ch)) {
+							list.add(KeyEvent.VK_SHIFT);
+						}
+						if (uch == 'Ö') {
+							list.add(KeyEvent.VK_O);
+						} else if (uch == 'Ä') {
+							list.add(KeyEvent.VK_A);
+						} else if (uch == 'Ü') {
+							list.add(KeyEvent.VK_U);
+						}
+						r.press(list);
+					}
+				}
+			}
 		} else {
 			List<Integer> list = new ArrayList<>();
 			if (shift) {
@@ -140,8 +163,7 @@ public class OmKeyEvent {
 			if (key != 0) {
 				list.add(key);
 			}
-			log.debug("sequence:: list {}", list);
-			r.press(list.stream().mapToInt(Integer::intValue).toArray());
+			r.press(list);
 		}
 	}
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java?rev=1760998&r1=1760997&r2=1760998&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java Fri Sep 16 06:14:25 2016
@@ -39,6 +39,7 @@ import java.awt.datatransfer.Transferabl
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -119,6 +120,11 @@ public class RemoteJob implements Job {
 		}
 	}
 
+	public void press(List<Integer> codes) throws InterruptedException {
+		log.debug("sequence:: codes {}", codes);
+		press(codes.stream().mapToInt(Integer::intValue).toArray());
+	}
+
 	public void press(int... codes) throws InterruptedException {
 		for (int i = 0; i < codes.length; ++i) {
 			robot.keyPress(codes[i]);

Modified: openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java?rev=1760998&r1=1760997&r2=1760998&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java (original)
+++ openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java Fri Sep 16 06:14:25 2016
@@ -44,7 +44,7 @@ public class OmKeyEvent {
 	private static final Logger log = getLogger(OmKeyEvent.class);
 	private static final Map<Integer, Integer> KEY_MAP = new HashMap<>();
 	private static final Map<Character, Integer> CHAR_MAP = new HashMap<>();
-	private static final Set<Character> UNPRINTABLE = Collections.unmodifiableSet(Stream.of('§', 'ö', 'ä', 'ü', 'ß', 'Ö', 'Ä' , 'Ü').collect(Collectors.toSet()));
+	private static final Set<Character> UNPRINTABLE = Collections.unmodifiableSet(Stream.of('§', 'ö', 'ä', 'ü', 'ß', 'Ö', 'Ä', 'Ü').collect(Collectors.toSet()));
 	static {
 		KEY_MAP.put(13, KeyEvent.VK_ENTER);
 		KEY_MAP.put(16, 0);
@@ -119,13 +119,36 @@ public class OmKeyEvent {
 		if (UNPRINTABLE.contains(ch)) {
 			if (SystemUtils.IS_OS_LINUX) {
 				r.press(KeyEvent.VK_CONTROL, KeyEvent.VK_SHIFT, KeyEvent.VK_U);
-				String hex = String.format("%04X", (int)ch);
+				//String hex = String.format("%04X", (int)ch);
+				String hex = Integer.toHexString((int)ch);
 				log.debug("sequence:: hex {}", hex);
 				for (int i = 0; i < hex.length(); ++i) {
 					r.press(KeyStroke.getKeyStroke(toUpperCase(hex.charAt(i)), 0).getKeyCode());
 				}
 				r.press(KeyEvent.VK_ENTER);
 			}
+			if (SystemUtils.IS_OS_MAC) {
+				if (ch == 'ß') {
+					r.press(KeyEvent.VK_ALT, KeyEvent.VK_S);
+				} else {
+					char uch = toUpperCase(ch);
+					if (uch == 'Ö' || uch == 'Ä' || uch == 'Ü') {
+						r.press(KeyEvent.VK_ALT, KeyEvent.VK_U);
+						List<Integer> list = new ArrayList<>();
+						if (Character.isUpperCase(ch)) {
+							list.add(KeyEvent.VK_SHIFT);
+						}
+						if (uch == 'Ö') {
+							list.add(KeyEvent.VK_O);
+						} else if (uch == 'Ä') {
+							list.add(KeyEvent.VK_A);
+						} else if (uch == 'Ü') {
+							list.add(KeyEvent.VK_U);
+						}
+						r.press(list);
+					}
+				}
+			}
 		} else {
 			List<Integer> list = new ArrayList<>();
 			if (shift) {
@@ -140,8 +163,7 @@ public class OmKeyEvent {
 			if (key != 0) {
 				list.add(key);
 			}
-			log.debug("sequence:: list {}", list);
-			r.press(list.stream().mapToInt(Integer::intValue).toArray());
+			r.press(list);
 		}
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java?rev=1760998&r1=1760997&r2=1760998&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java (original)
+++ openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java Fri Sep 16 06:14:25 2016
@@ -39,6 +39,7 @@ import java.awt.datatransfer.Transferabl
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -119,6 +120,11 @@ public class RemoteJob implements Job {
 		}
 	}
 
+	public void press(List<Integer> codes) throws InterruptedException {
+		log.debug("sequence:: codes {}", codes);
+		press(codes.stream().mapToInt(Integer::intValue).toArray());
+	}
+
 	public void press(int... codes) throws InterruptedException {
 		for (int i = 0; i < codes.length; ++i) {
 			robot.keyPress(codes[i]);