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]);