|
From: <cr...@us...> - 2008-10-03 11:06:49
|
Revision: 4598
http://jnode.svn.sourceforge.net/jnode/?rev=4598&view=rev
Author: crawley
Date: 2008-10-03 11:06:43 +0000 (Fri, 03 Oct 2008)
Log Message:
-----------
Applied patch to use 0xffff as the unmapped character code in keypoard events.
Modified Paths:
--------------
trunk/core/src/driver/org/jnode/driver/console/textscreen/KeyboardReader.java
trunk/core/src/driver/org/jnode/driver/input/Key.java
trunk/core/src/driver/org/jnode/driver/input/KeyboardEvent.java
trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java
trunk/distr/src/apps/org/jnode/apps/editor/TextEditor.java
trunk/gui/src/driver/org/jnode/driver/textscreen/swing/SwingPcTextScreen.java
Modified: trunk/core/src/driver/org/jnode/driver/console/textscreen/KeyboardReader.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/console/textscreen/KeyboardReader.java 2008-10-02 13:45:02 UTC (rev 4597)
+++ trunk/core/src/driver/org/jnode/driver/console/textscreen/KeyboardReader.java 2008-10-03 11:06:43 UTC (rev 4598)
@@ -5,6 +5,7 @@
import java.io.Reader;
import java.io.Writer;
+import org.apache.log4j.Logger;
import org.jnode.driver.console.InputCompleter;
import org.jnode.driver.console.TextConsole;
import org.jnode.driver.input.KeyboardEvent;
@@ -52,7 +53,7 @@
private int pos;
private int lim;
- private static final char NO_CHAR = 0;
+ private static final char NO_CHAR = KeyEvent.CHAR_UNDEFINED;
private final Line currentLine;
private final TextConsole console;
@@ -128,11 +129,11 @@
KeyboardEvent event = keyboardHandler.getEvent();
if (!event.isConsumed()) {
char ch = event.getKeyChar();
+ int kc = event.getKeyCode();
if (ch != NO_CHAR) {
event.consume();
return !processChar(ch);
} else {
- int kc = event.getKeyCode();
int mods = event.getModifiers();
if (processVirtualKeystroke(kc, mods)) {
event.consume();
Modified: trunk/core/src/driver/org/jnode/driver/input/Key.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/Key.java 2008-10-02 13:45:02 UTC (rev 4597)
+++ trunk/core/src/driver/org/jnode/driver/input/Key.java 2008-10-03 11:06:43 UTC (rev 4598)
@@ -92,10 +92,6 @@
this.lowerVirtuelKey = virtuelKey;
this.upperVirtuelKey = virtuelKey;
this.altGrVirtuelKey = virtuelKey;
-
- lowerChar = 0;
- upperChar = 0;
- altGrChar = 0;
}
public char getLowerChar() {
Modified: trunk/core/src/driver/org/jnode/driver/input/KeyboardEvent.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/KeyboardEvent.java 2008-10-02 13:45:02 UTC (rev 4597)
+++ trunk/core/src/driver/org/jnode/driver/input/KeyboardEvent.java 2008-10-03 11:06:43 UTC (rev 4598)
@@ -30,7 +30,7 @@
*/
public class KeyboardEvent extends SystemEvent {
/** This value is returned by getKeyChar() when a KeyboardEvent has no char */
- public static final int NO_CHAR = 0;
+ public static final int NO_CHAR = KeyEvent.CHAR_UNDEFINED;
private int modifiers;
private int keyCode;
Modified: trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java 2008-10-02 13:45:02 UTC (rev 4597)
+++ trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java 2008-10-03 11:06:43 UTC (rev 4598)
@@ -41,7 +41,11 @@
protected int lastDeadVK = -1;
protected final Keys keys;
+
+ // FIXME this is an evil hack to mitigate the performance issues that
+ // result from the interpretExtendedScanCode's inappropriate use of exceptions.
private final UnsupportedKeyException unsupportedKeyException = new UnsupportedKeyException();
+ private final DeadKeyException deadKeyException = new DeadKeyException();
private boolean extendedMode;
private int capsLock = 0;
@@ -143,6 +147,7 @@
mask = InputEvent.SHIFT_DOWN_MASK;
break;
case KeyEvent.VK_CAPS_LOCK:
+ // FIXME ... can someone explain why 'capslock' isn't a boolean??
if (capsLock == 0 || capsLock == 3)
mask = InputEvent.SHIFT_DOWN_MASK;
else
@@ -274,13 +279,18 @@
case KeyEvent.VK_DOWN:
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_PRINTSCREEN:
- case KeyEvent.VK_ALT_GRAPH:
case KeyEvent.VK_PROPS:
- case KeyEvent.VK_CONTROL: // both normal and extend should return 0
if (extended)
- return 0;
+ return KeyEvent.CHAR_UNDEFINED;
break;
+ case KeyEvent.VK_SHIFT:
+ case KeyEvent.VK_CONTROL:
+ case KeyEvent.VK_ALT:
+ case KeyEvent.VK_ALT_GRAPH:
+ case KeyEvent.VK_CAPS_LOCK:
+ return KeyEvent.CHAR_UNDEFINED;
+
case KeyEvent.VK_ENTER:
if (extended)
return enter;
@@ -292,7 +302,7 @@
}
if (deadKey) {
- throw new DeadKeyException();
+ throw deadKeyException;
} else if (lastDeadVK != -1) {
try {
Key key = keys.getKey(scancode);
@@ -303,11 +313,11 @@
if (deadChars.length > 1) {
return deadChars[1];
} else
- throw new UnsupportedKeyException();
+ throw unsupportedKeyException;
} else if (deadChars.length > 0)
return deadChars[0];
else
- return 0;
+ return KeyEvent.CHAR_UNDEFINED;
} finally {
if (!released) {
lastDeadVK = -1;
Modified: trunk/distr/src/apps/org/jnode/apps/editor/TextEditor.java
===================================================================
--- trunk/distr/src/apps/org/jnode/apps/editor/TextEditor.java 2008-10-02 13:45:02 UTC (rev 4597)
+++ trunk/distr/src/apps/org/jnode/apps/editor/TextEditor.java 2008-10-03 11:06:43 UTC (rev 4598)
@@ -296,7 +296,7 @@
if (ro) break;
char c = e.getKeyChar();
- if (c == 0 && k != KeyEvent.VK_DELETE) return;
+ if (c == KeyEvent.CHAR_UNDEFINED && k != KeyEvent.VK_DELETE) return;
if (cy == ls.size()) ls.add(new StringBuilder());
StringBuilder l = ls.get(oy());
switch (k) {
Modified: trunk/gui/src/driver/org/jnode/driver/textscreen/swing/SwingPcTextScreen.java
===================================================================
--- trunk/gui/src/driver/org/jnode/driver/textscreen/swing/SwingPcTextScreen.java 2008-10-02 13:45:02 UTC (rev 4597)
+++ trunk/gui/src/driver/org/jnode/driver/textscreen/swing/SwingPcTextScreen.java 2008-10-03 11:06:43 UTC (rev 4598)
@@ -157,20 +157,16 @@
keyListener = new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
- char c = e.getKeyChar();
- if (c == KeyEvent.CHAR_UNDEFINED) c = 0;
KeyboardEvent k = new KeyboardEvent(KeyEvent.KEY_PRESSED,
- e.getWhen(), e.getModifiersEx(), e.getKeyCode(), c);
+ e.getWhen(), e.getModifiersEx(), e.getKeyCode(), e.getKeyChar());
keyboardDriver.dispatchEvent(k);
}
@Override
public void keyReleased(KeyEvent e) {
- char c = e.getKeyChar();
- if (c == KeyEvent.CHAR_UNDEFINED) c = 0;
KeyboardEvent k = new KeyboardEvent(KeyEvent.KEY_RELEASED,
- e.getWhen(), e.getModifiersEx(), e.getKeyCode(), c);
+ e.getWhen(), e.getModifiersEx(), e.getKeyCode(), e.getKeyChar());
keyboardDriver.dispatchEvent(k);
}
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|