|
From: <cr...@us...> - 2008-10-03 13:21:40
|
Revision: 4600
http://jnode.svn.sourceforge.net/jnode/?rev=4600&view=rev
Author: crawley
Date: 2008-10-03 13:21:19 +0000 (Fri, 03 Oct 2008)
Log Message:
-----------
Split KeyboardInterpreter into an interface and abstract base class to
enable other possible key mapping systems ... or an interpreter that
loads the scancode mapping from a file.
Modified Paths:
--------------
trunk/core/src/driver/org/jnode/driver/input/KeyboardAPIAdapter.java
trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_CH_fr.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DE.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DK.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DV.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_ES.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_FR.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_GB_en.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_HU.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_IT.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_NO.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_RU.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_SE.java
trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_US_en.java
trunk/gui/src/awt/org/jnode/awt/KeyboardHandler.java
Added Paths:
-----------
trunk/core/src/driver/org/jnode/driver/input/AbstractKeyboardInterpreter.java
Added: trunk/core/src/driver/org/jnode/driver/input/AbstractKeyboardInterpreter.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/AbstractKeyboardInterpreter.java (rev 0)
+++ trunk/core/src/driver/org/jnode/driver/input/AbstractKeyboardInterpreter.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -0,0 +1,342 @@
+/*
+ * $Id: KeyboardInterpreter.java 4598 2008-10-03 11:06:43Z crawley $
+ *
+ * JNode.org
+ * Copyright (C) 2003-2006 JNode.org
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; If not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+package org.jnode.driver.input;
+
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+
+/**
+ * A KeyboardInterpreter translate scancodes into KeyboardEvent's.
+ *
+ * @author epr
+ * @author Martin Husted Hartvig
+ */
+public abstract class AbstractKeyboardInterpreter implements KeyboardInterpreter {
+
+ private int flags;
+
+ 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;
+
+ private final char enter = '\n';
+ private final char divide = '/';
+
+ public AbstractKeyboardInterpreter() {
+ keys = new Keys();
+
+ initKeys(keys);
+ }
+
+ /* (non-Javadoc)
+ * @see org.jnode.driver.input.KeyboardInterpreter#interpretScancode(int)
+ */
+ public final KeyboardEvent interpretScancode(int scancode) {
+ final boolean extendedMode = this.extendedMode;
+
+ if (scancode == XT_EXTENDED) {
+ this.extendedMode = true;
+ return null;
+ } else {
+ this.extendedMode = false;
+ }
+
+ final boolean released = ((scancode & XT_RELEASE) != 0);
+ final long time = System.currentTimeMillis();
+
+ scancode &= 0x7f;
+
+ int vk = deriveKeyCode(scancode, extendedMode);
+
+ // debug output to find new keycodes
+// System.out.println("[" + (extendedMode ? "E" : "N") + scancode + "," + vk + "] " /*+ KeyEvent.getKeyText(vk)*/);
+
+ if (!extendedMode) {
+ if ((flags & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
+ vk = keys.getKey(scancode).getAltGrVirtuelKey();
+ } else if ((flags & InputEvent.SHIFT_DOWN_MASK) != 0) {
+ vk = keys.getKey(scancode).getUpperVirtuelKey();
+ } else {
+ vk = keys.getKey(scancode).getLowerVirtuelKey();
+ }
+ }
+
+
+ adjustFlags(vk, released);
+
+ // debug output to find new keycodes
+// System.out.println("[" + (extendedMode ? "E" : "N") + scancode + "," + vk + "] " /*+ KeyEvent.getKeyText(vk)*/);
+
+ try {
+ final char ch;
+ ch = interpretExtendedScanCode(scancode, vk, released, extendedMode);
+ return new KeyboardEvent(released ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED, time, flags, vk, ch);
+ } catch (UnsupportedKeyException e) {
+ final char ch;
+
+ if ((flags & InputEvent.CTRL_DOWN_MASK) != 0) {
+ ch = keys.getKey(scancode).getControlChar();
+ } else if ((flags & InputEvent.SHIFT_DOWN_MASK) != 0) {
+ ch = keys.getKey(scancode).getUpperChar();
+
+ if (!extendedMode)
+ vk = keys.getKey(scancode).getUpperVirtuelKey();
+ } else if ((flags & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
+ ch = keys.getKey(scancode).getAltGrChar();
+
+ if (!extendedMode)
+ vk = keys.getKey(scancode).getAltGrVirtuelKey();
+ } else {
+ ch = keys.getKey(scancode).getLowerChar();
+ }
+ return new KeyboardEvent(released ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED, time, flags, vk, ch);
+ } catch (DeadKeyException e) {
+ return null;
+ }
+ }
+
+ private void adjustFlags(int vk, boolean released) {
+ final int mask;
+ switch (vk) {
+ case KeyEvent.VK_ALT:
+ mask = InputEvent.ALT_DOWN_MASK;
+ break;
+ case KeyEvent.VK_ALT_GRAPH:
+ mask = InputEvent.ALT_GRAPH_DOWN_MASK;
+ break;
+ case KeyEvent.VK_CONTROL:
+ mask = InputEvent.CTRL_DOWN_MASK;
+ break;
+ case KeyEvent.VK_SHIFT:
+ 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
+ mask = 0;
+
+ capsLock++;
+ capsLock %= 4;
+
+ break;
+ default:
+ mask = 0;
+ }
+
+ if (mask != 0) {
+ if (released) {
+ this.flags &= ~mask;
+ } else {
+ this.flags |= mask;
+ }
+ }
+ }
+
+ protected int deriveKeyCode(int scancode, boolean extended) {
+ int vk = 0;
+
+ if (extended) {
+ switch (scancode) {
+ case 82:
+ vk = KeyEvent.VK_INSERT;
+ break;
+ case 71:
+ vk = KeyEvent.VK_HOME;
+ break;
+ case 73:
+ vk = KeyEvent.VK_PAGE_UP;
+ break;
+ case 83:
+ vk = KeyEvent.VK_DELETE;
+ break;
+ case 79:
+ vk = KeyEvent.VK_END;
+ break;
+ case 81:
+ vk = KeyEvent.VK_PAGE_DOWN;
+ break;
+ case 72:
+ vk = KeyEvent.VK_UP;
+ break;
+ case 75:
+ vk = KeyEvent.VK_LEFT;
+ break;
+ case 80:
+ vk = KeyEvent.VK_DOWN;
+ break;
+ case 77:
+ vk = KeyEvent.VK_RIGHT;
+ break;
+ case 28:
+ vk = KeyEvent.VK_ENTER;
+ break;
+ case 55:
+ vk = KeyEvent.VK_PRINTSCREEN;
+ break;
+ case 56:
+ vk = KeyEvent.VK_ALT_GRAPH;
+ break;
+ case 29:
+ vk = KeyEvent.VK_CONTROL;
+ break;
+ case 93:
+ vk = KeyEvent.VK_PROPS;
+ break;
+ case 53:
+ vk = KeyEvent.VK_DIVIDE;
+ break;
+ default:
+ vk = 0;
+ }
+ }
+
+ return vk;
+ }
+
+
+ /**
+ * Method interpretExtendedScanCode this method sould be used to handle the dead keys and other special keys
+ *
+ * @param scancode an int
+ * @param vk an int
+ * @param released a boolean
+ * @return the char to use or throws an Exception
+ * @throws UnsupportedKeyException is thrown if the current key is not handled by this method
+ * @throws DeadKeyException is thrown if the current key is a dead key
+ * @since 0.15
+ */
+ protected char interpretExtendedScanCode(int scancode, int vk, boolean released, boolean extended)
+ throws UnsupportedKeyException, DeadKeyException {
+ boolean deadKey = false;
+
+ switch (vk) {
+ case KeyEvent.VK_DEAD_ABOVEDOT:
+ case KeyEvent.VK_DEAD_ABOVERING:
+ case KeyEvent.VK_DEAD_ACUTE:
+ case KeyEvent.VK_DEAD_BREVE:
+ case KeyEvent.VK_DEAD_CARON:
+ case KeyEvent.VK_DEAD_CEDILLA:
+ case KeyEvent.VK_DEAD_CIRCUMFLEX:
+ case KeyEvent.VK_DEAD_DIAERESIS:
+ case KeyEvent.VK_DEAD_DOUBLEACUTE:
+ case KeyEvent.VK_DEAD_GRAVE:
+ case KeyEvent.VK_DEAD_IOTA:
+ case KeyEvent.VK_DEAD_MACRON:
+ case KeyEvent.VK_DEAD_OGONEK:
+ case KeyEvent.VK_DEAD_SEMIVOICED_SOUND:
+ case KeyEvent.VK_DEAD_TILDE:
+ case KeyEvent.VK_DEAD_VOICED_SOUND:
+ lastDeadVK = vk;
+ deadKey = true;
+ break;
+
+ case KeyEvent.VK_INSERT:
+ case KeyEvent.VK_HOME:
+ case KeyEvent.VK_PAGE_UP:
+ case KeyEvent.VK_DELETE:
+ case KeyEvent.VK_END:
+ case KeyEvent.VK_PAGE_DOWN:
+ case KeyEvent.VK_UP:
+ case KeyEvent.VK_LEFT:
+ case KeyEvent.VK_DOWN:
+ case KeyEvent.VK_RIGHT:
+ case KeyEvent.VK_PRINTSCREEN:
+ case KeyEvent.VK_PROPS:
+ if (extended)
+ 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;
+ break;
+ case KeyEvent.VK_DIVIDE:
+ if (extended)
+ return divide;
+ break;
+ }
+
+ if (deadKey) {
+ throw deadKeyException;
+ } else if (lastDeadVK != -1) {
+ try {
+ Key key = keys.getKey(scancode);
+
+ char[] deadChars = key.getDeadKeyChar(lastDeadVK);
+
+ if (flags == InputEvent.SHIFT_DOWN_MASK) {
+ if (deadChars.length > 1) {
+ return deadChars[1];
+ } else
+ throw unsupportedKeyException;
+ } else if (deadChars.length > 0)
+ return deadChars[0];
+ else
+ return KeyEvent.CHAR_UNDEFINED;
+ } finally {
+ if (!released) {
+ lastDeadVK = -1;
+ }
+ }
+ }
+
+ throw unsupportedKeyException;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jnode.driver.input.KeyboardInterpreter#interpretKeycode(int)
+ */
+ public KeyboardEvent interpretKeycode(int keycode) {
+ final int scancode = keys.getScanCode(keycode);
+ if (scancode < 0) return null;
+ return interpretScancode(scancode);
+ }
+
+ /**
+ * @return Returns the flags.
+ */
+ protected final int getFlags() {
+ return this.flags;
+ }
+
+
+ protected abstract void initKeys(Keys keys);
+}
+
+
Modified: trunk/core/src/driver/org/jnode/driver/input/KeyboardAPIAdapter.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/KeyboardAPIAdapter.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/KeyboardAPIAdapter.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -83,7 +83,7 @@
}
/**
- * @see org.jnode.driver.input.KeyboardAPI#setKbInterpreter(org.jnode.driver.input.KeyboardInterpreter)
+ * @see org.jnode.driver.input.KeyboardAPI#setKbInterpreter(org.jnode.driver.input.AbstractKeyboardInterpreter)
*/
public void setKbInterpreter(KeyboardInterpreter kbInterpreter) {
if (kbInterpreter == null) {
Modified: trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/KeyboardInterpreter.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -18,336 +18,31 @@
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-
package org.jnode.driver.input;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-
/**
* A KeyboardInterpreter translate scancodes into KeyboardEvent's.
*
* @author epr
* @author Martin Husted Hartvig
*/
-public abstract class KeyboardInterpreter {
- // FIXME We are currently using the character zero (0x0000) to indicate that no
- // (Unicode) character corresponds to a keycode. This means that we cannot represent
- // the NUL control character. Instead we should really be using 0xffff which Unicode
- // defines to be a non-character.
+public interface KeyboardInterpreter {
- private int flags;
-
- 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;
-
- private final char enter = '\n';
- private final char divide = '/';
-
public static final int XT_RELEASE = 0x80;
public static final int XT_EXTENDED = 0xE0;
- public KeyboardInterpreter() {
- keys = new Keys();
-
- initKeys(keys);
- }
-
/**
* Interpret a given scancode into a keyevent.
*
* @param scancode
*/
- public final KeyboardEvent interpretScancode(int scancode) {
- final boolean extendedMode = this.extendedMode;
+ public abstract KeyboardEvent interpretScancode(int scancode);
- if (scancode == XT_EXTENDED) {
- this.extendedMode = true;
- return null;
- } else {
- this.extendedMode = false;
- }
-
- final boolean released = ((scancode & XT_RELEASE) != 0);
- final long time = System.currentTimeMillis();
-
- scancode &= 0x7f;
-
- int vk = deriveKeyCode(scancode, extendedMode);
-
- // debug output to find new keycodes
-// System.out.println("[" + (extendedMode ? "E" : "N") + scancode + "," + vk + "] " /*+ KeyEvent.getKeyText(vk)*/);
-
- if (!extendedMode) {
- if ((flags & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
- vk = keys.getKey(scancode).getAltGrVirtuelKey();
- } else if ((flags & InputEvent.SHIFT_DOWN_MASK) != 0) {
- vk = keys.getKey(scancode).getUpperVirtuelKey();
- } else {
- vk = keys.getKey(scancode).getLowerVirtuelKey();
- }
- }
-
-
- adjustFlags(vk, released);
-
- // debug output to find new keycodes
-// System.out.println("[" + (extendedMode ? "E" : "N") + scancode + "," + vk + "] " /*+ KeyEvent.getKeyText(vk)*/);
-
- try {
- final char ch;
- ch = interpretExtendedScanCode(scancode, vk, released, extendedMode);
- return new KeyboardEvent(released ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED, time, flags, vk, ch);
- } catch (UnsupportedKeyException e) {
- final char ch;
-
- if ((flags & InputEvent.CTRL_DOWN_MASK) != 0) {
- ch = keys.getKey(scancode).getControlChar();
- } else if ((flags & InputEvent.SHIFT_DOWN_MASK) != 0) {
- ch = keys.getKey(scancode).getUpperChar();
-
- if (!extendedMode)
- vk = keys.getKey(scancode).getUpperVirtuelKey();
- } else if ((flags & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
- ch = keys.getKey(scancode).getAltGrChar();
-
- if (!extendedMode)
- vk = keys.getKey(scancode).getAltGrVirtuelKey();
- } else {
- ch = keys.getKey(scancode).getLowerChar();
- }
- return new KeyboardEvent(released ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED, time, flags, vk, ch);
- } catch (DeadKeyException e) {
- return null;
- }
- }
-
- private void adjustFlags(int vk, boolean released) {
- final int mask;
- switch (vk) {
- case KeyEvent.VK_ALT:
- mask = InputEvent.ALT_DOWN_MASK;
- break;
- case KeyEvent.VK_ALT_GRAPH:
- mask = InputEvent.ALT_GRAPH_DOWN_MASK;
- break;
- case KeyEvent.VK_CONTROL:
- mask = InputEvent.CTRL_DOWN_MASK;
- break;
- case KeyEvent.VK_SHIFT:
- 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
- mask = 0;
-
- capsLock++;
- capsLock %= 4;
-
- break;
- default:
- mask = 0;
- }
-
- if (mask != 0) {
- if (released) {
- this.flags &= ~mask;
- } else {
- this.flags |= mask;
- }
- }
- }
-
- protected int deriveKeyCode(int scancode, boolean extended) {
- int vk = 0;
-
- if (extended) {
- switch (scancode) {
- case 82:
- vk = KeyEvent.VK_INSERT;
- break;
- case 71:
- vk = KeyEvent.VK_HOME;
- break;
- case 73:
- vk = KeyEvent.VK_PAGE_UP;
- break;
- case 83:
- vk = KeyEvent.VK_DELETE;
- break;
- case 79:
- vk = KeyEvent.VK_END;
- break;
- case 81:
- vk = KeyEvent.VK_PAGE_DOWN;
- break;
- case 72:
- vk = KeyEvent.VK_UP;
- break;
- case 75:
- vk = KeyEvent.VK_LEFT;
- break;
- case 80:
- vk = KeyEvent.VK_DOWN;
- break;
- case 77:
- vk = KeyEvent.VK_RIGHT;
- break;
- case 28:
- vk = KeyEvent.VK_ENTER;
- break;
- case 55:
- vk = KeyEvent.VK_PRINTSCREEN;
- break;
- case 56:
- vk = KeyEvent.VK_ALT_GRAPH;
- break;
- case 29:
- vk = KeyEvent.VK_CONTROL;
- break;
- case 93:
- vk = KeyEvent.VK_PROPS;
- break;
- case 53:
- vk = KeyEvent.VK_DIVIDE;
- break;
- default:
- vk = 0;
- }
- }
-
- return vk;
- }
-
-
/**
- * Method interpretExtendedScanCode this method sould be used to handle the dead keys and other special keys
- *
- * @param scancode an int
- * @param vk an int
- * @param released a boolean
- * @return the char to use or throws an Exception
- * @throws UnsupportedKeyException is thrown if the current key is not handled by this method
- * @throws DeadKeyException is thrown if the current key is a dead key
- * @since 0.15
- */
- protected char interpretExtendedScanCode(int scancode, int vk, boolean released, boolean extended)
- throws UnsupportedKeyException, DeadKeyException {
- boolean deadKey = false;
-
- switch (vk) {
- case KeyEvent.VK_DEAD_ABOVEDOT:
- case KeyEvent.VK_DEAD_ABOVERING:
- case KeyEvent.VK_DEAD_ACUTE:
- case KeyEvent.VK_DEAD_BREVE:
- case KeyEvent.VK_DEAD_CARON:
- case KeyEvent.VK_DEAD_CEDILLA:
- case KeyEvent.VK_DEAD_CIRCUMFLEX:
- case KeyEvent.VK_DEAD_DIAERESIS:
- case KeyEvent.VK_DEAD_DOUBLEACUTE:
- case KeyEvent.VK_DEAD_GRAVE:
- case KeyEvent.VK_DEAD_IOTA:
- case KeyEvent.VK_DEAD_MACRON:
- case KeyEvent.VK_DEAD_OGONEK:
- case KeyEvent.VK_DEAD_SEMIVOICED_SOUND:
- case KeyEvent.VK_DEAD_TILDE:
- case KeyEvent.VK_DEAD_VOICED_SOUND:
- lastDeadVK = vk;
- deadKey = true;
- break;
-
- case KeyEvent.VK_INSERT:
- case KeyEvent.VK_HOME:
- case KeyEvent.VK_PAGE_UP:
- case KeyEvent.VK_DELETE:
- case KeyEvent.VK_END:
- case KeyEvent.VK_PAGE_DOWN:
- case KeyEvent.VK_UP:
- case KeyEvent.VK_LEFT:
- case KeyEvent.VK_DOWN:
- case KeyEvent.VK_RIGHT:
- case KeyEvent.VK_PRINTSCREEN:
- case KeyEvent.VK_PROPS:
- if (extended)
- 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;
- break;
- case KeyEvent.VK_DIVIDE:
- if (extended)
- return divide;
- break;
- }
-
- if (deadKey) {
- throw deadKeyException;
- } else if (lastDeadVK != -1) {
- try {
- Key key = keys.getKey(scancode);
-
- char[] deadChars = key.getDeadKeyChar(lastDeadVK);
-
- if (flags == InputEvent.SHIFT_DOWN_MASK) {
- if (deadChars.length > 1) {
- return deadChars[1];
- } else
- throw unsupportedKeyException;
- } else if (deadChars.length > 0)
- return deadChars[0];
- else
- return KeyEvent.CHAR_UNDEFINED;
- } finally {
- if (!released) {
- lastDeadVK = -1;
- }
- }
- }
-
- throw unsupportedKeyException;
- }
-
- /**
* @param keycode
* @return
* @throws UnsupportedKeyException
*/
- public KeyboardEvent interpretKeycode(int keycode) {
- final int scancode = keys.getScanCode(keycode);
- if (scancode < 0) return null;
- return interpretScancode(scancode);
- }
+ public abstract KeyboardEvent interpretKeycode(int keycode);
- /**
- * @return Returns the flags.
- */
- protected final int getFlags() {
- return this.flags;
- }
-
-
- protected abstract void initKeys(Keys keys);
-}
-
-
+}
\ No newline at end of file
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_CH_fr.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_CH_fr.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_CH_fr.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
@@ -31,7 +31,7 @@
*
* @author Yves Galante
*/
-public class KeyboardInterpreter_CH_fr extends KeyboardInterpreter {
+public class KeyboardInterpreter_CH_fr extends AbstractKeyboardInterpreter {
public KeyboardInterpreter_CH_fr() {
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DE.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DE.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DE.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
@@ -31,7 +31,7 @@
* @since 0.1.9
*/
-public class KeyboardInterpreter_DE extends KeyboardInterpreter {
+public class KeyboardInterpreter_DE extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
Key key;
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DK.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DK.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DK.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
@@ -31,7 +31,7 @@
* @since 0.1.6
*/
-public class KeyboardInterpreter_DK extends KeyboardInterpreter {
+public class KeyboardInterpreter_DK extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
Key key;
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DV.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DV.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_DV.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
@@ -34,7 +34,7 @@
* @author Sam Reid
* @since 0.15
*/
-public class KeyboardInterpreter_DV extends KeyboardInterpreter {
+public class KeyboardInterpreter_DV extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
keys.setKey(1, new Key(KeyEvent.VK_ESCAPE));
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_ES.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_ES.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_ES.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/*
@@ -32,7 +32,7 @@
* @author Eduardo Millan
*/
-public class KeyboardInterpreter_ES extends KeyboardInterpreter {
+public class KeyboardInterpreter_ES extends AbstractKeyboardInterpreter {
/**
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_FR.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_FR.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_FR.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
@@ -34,7 +34,7 @@
* @author Martin Husted Hartvig
* @since 0.15
*/
-public class KeyboardInterpreter_FR extends KeyboardInterpreter {
+public class KeyboardInterpreter_FR extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
Key key;
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_GB_en.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_GB_en.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_GB_en.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,14 +23,14 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
* @author markhale
* @author Martin Husted Hartvig
*/
-public class KeyboardInterpreter_GB_en extends KeyboardInterpreter {
+public class KeyboardInterpreter_GB_en extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
keys.setKey(1, new Key(KeyEvent.VK_ESCAPE));
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_HU.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_HU.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_HU.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -24,7 +24,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.DeadKeyException;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
import org.jnode.driver.input.UnsupportedKeyException;
@@ -33,7 +33,7 @@
* @author Levente S\u00e1ntha
* @since 0.1.9
*/
-public class KeyboardInterpreter_HU extends KeyboardInterpreter {
+public class KeyboardInterpreter_HU extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
Key key;
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_IT.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_IT.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_IT.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,13 +23,13 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
* @author Matteo Di Giovinazzo <mat...@ju...>
*/
-public class KeyboardInterpreter_IT extends KeyboardInterpreter {
+public class KeyboardInterpreter_IT extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
keys.setKey(1, new Key(KeyEvent.VK_ESCAPE));
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_NO.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_NO.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_NO.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
@@ -31,7 +31,7 @@
* @since 0.1.8
*/
-public class KeyboardInterpreter_NO extends KeyboardInterpreter {
+public class KeyboardInterpreter_NO extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
Key key;
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_RU.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_RU.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_RU.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -21,7 +21,7 @@
package org.jnode.driver.input.l10n;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
import org.jnode.driver.input.Key;
@@ -32,7 +32,7 @@
* @since 0.2.8
*/
-public class KeyboardInterpreter_RU extends KeyboardInterpreter {
+public class KeyboardInterpreter_RU extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
keys.setKey(1, new Key(KeyEvent.VK_ESCAPE));
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_SE.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_SE.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_SE.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
/**
@@ -31,7 +31,7 @@
* @since 0.1.8
*/
-public class KeyboardInterpreter_SE extends KeyboardInterpreter {
+public class KeyboardInterpreter_SE extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
Key key;
Modified: trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_US_en.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_US_en.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/core/src/driver/org/jnode/driver/input/l10n/KeyboardInterpreter_US_en.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -23,7 +23,7 @@
import java.awt.event.KeyEvent;
import org.jnode.driver.input.Key;
-import org.jnode.driver.input.KeyboardInterpreter;
+import org.jnode.driver.input.AbstractKeyboardInterpreter;
import org.jnode.driver.input.Keys;
@@ -32,7 +32,7 @@
* @author Martin Husted Hartvig
* @since 0.15
*/
-public class KeyboardInterpreter_US_en extends KeyboardInterpreter {
+public class KeyboardInterpreter_US_en extends AbstractKeyboardInterpreter {
protected void initKeys(Keys keys) {
keys.setKey(1, new Key(KeyEvent.VK_ESCAPE));
Modified: trunk/gui/src/awt/org/jnode/awt/KeyboardHandler.java
===================================================================
--- trunk/gui/src/awt/org/jnode/awt/KeyboardHandler.java 2008-10-03 12:59:09 UTC (rev 4599)
+++ trunk/gui/src/awt/org/jnode/awt/KeyboardHandler.java 2008-10-03 13:21:19 UTC (rev 4600)
@@ -47,8 +47,8 @@
import org.jnode.driver.DeviceUtils;
import org.jnode.driver.input.KeyboardAPI;
import org.jnode.driver.input.KeyboardEvent;
+import org.jnode.driver.input.KeyboardInterpreter;
import org.jnode.driver.input.KeyboardListener;
-import org.jnode.driver.input.KeyboardInterpreter;
/**
* @author Levente S\u00e1ntha
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|