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. |