Package org.apache.harmony.awt.wtk.linux

Source Code of org.apache.harmony.awt.wtk.linux.KeyCodeTranslator

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
/**
* @author Dmitry A. Durnev
*/
package org.apache.harmony.awt.wtk.linux;

import java.awt.event.KeyEvent;
import java.util.HashMap;
import java.util.Map;

import org.apache.harmony.awt.nativebridge.CLongPointer;
import org.apache.harmony.awt.nativebridge.Int8Pointer;
import org.apache.harmony.awt.nativebridge.NativeBridge;
import org.apache.harmony.awt.nativebridge.linux.X11;
import org.apache.harmony.awt.nativebridge.linux.X11Defs;
import org.apache.harmony.awt.wtk.KeyInfo;


final class KeyCodeTranslator {

    private static final NativeBridge bridge = NativeBridge.getInstance();

    private static final X11 x11 = X11.getInstance();

    private static final Map tableXK2VK;

    private static final Map tableVK2XK;

    static {
        tableXK2VK = new HashMap();
        tableXK2VK.put(new Integer(X11Defs.XK_Tab), new Integer(KeyEvent.VK_TAB));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Tab), new Integer(KeyEvent.VK_TAB));
        tableXK2VK.put(new Integer(X11Defs.XK_ISO_Left_Tab), new Integer(KeyEvent.VK_TAB));
        tableXK2VK.put(new Integer(X11Defs.XK_Clear), new Integer(KeyEvent.VK_CLEAR));
        tableXK2VK.put(new Integer(X11Defs.XK_Pause), new Integer(KeyEvent.VK_PAUSE));
        tableXK2VK.put(new Integer(X11Defs.XK_Scroll_Lock), new Integer(KeyEvent.VK_SCROLL_LOCK));
        tableXK2VK.put(new Integer(X11Defs.XK_Escape), new Integer(KeyEvent.VK_ESCAPE));
        tableXK2VK.put(new Integer(X11Defs.XK_Delete), new Integer(KeyEvent.VK_DELETE));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Delete), new Integer(KeyEvent.VK_DELETE));
        tableXK2VK.put(new Integer(X11Defs.XK_Kanji), new Integer(KeyEvent.VK_KANJI));
        tableXK2VK.put(new Integer(X11Defs.XK_Hiragana), new Integer(KeyEvent.VK_HIRAGANA));
        tableXK2VK.put(new Integer(X11Defs.XK_Katakana), new Integer(KeyEvent.VK_KATAKANA));
        tableXK2VK.put(new Integer(X11Defs.XK_Kana_Lock), new Integer(KeyEvent.VK_KANA_LOCK));
        tableXK2VK.put(new Integer(X11Defs.XK_Home), new Integer(KeyEvent.VK_HOME));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Home), new Integer(KeyEvent.VK_HOME));
        tableXK2VK.put(new Integer(X11Defs.XK_Left), new Integer(KeyEvent.VK_LEFT));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Left), new Integer(KeyEvent.VK_LEFT));
        tableXK2VK.put(new Integer(X11Defs.XK_Up), new Integer(KeyEvent.VK_UP));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Up), new Integer(KeyEvent.VK_UP));
        tableXK2VK.put(new Integer(X11Defs.XK_Right), new Integer(KeyEvent.VK_RIGHT));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Right), new Integer(KeyEvent.VK_RIGHT));
        tableXK2VK.put(new Integer(X11Defs.XK_Down), new Integer(KeyEvent.VK_DOWN));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Down), new Integer(KeyEvent.VK_DOWN));
        tableXK2VK.put(new Integer(X11Defs.XK_Page_Up), new Integer(KeyEvent.VK_PAGE_UP));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Page_Up), new Integer(KeyEvent.VK_PAGE_UP));
        tableXK2VK.put(new Integer(X11Defs.XK_Page_Down), new Integer(KeyEvent.VK_PAGE_DOWN));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Page_Down), new Integer(KeyEvent.VK_PAGE_DOWN));
        tableXK2VK.put(new Integer(X11Defs.XK_End), new Integer(KeyEvent.VK_END));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_End), new Integer(KeyEvent.VK_END));
        tableXK2VK.put(new Integer(X11Defs.XK_Insert), new Integer(KeyEvent.VK_INSERT));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Insert), new Integer(KeyEvent.VK_INSERT));
        tableXK2VK.put(new Integer(X11Defs.XK_Undo), new Integer(KeyEvent.VK_UNDO));
        tableXK2VK.put(new Integer(X11Defs.XK_Find), new Integer(KeyEvent.VK_FIND));
        tableXK2VK.put(new Integer(X11Defs.XK_Cancel), new Integer(KeyEvent.VK_CANCEL));
        tableXK2VK.put(new Integer(X11Defs.XK_Help), new Integer(KeyEvent.VK_HELP));
        tableXK2VK.put(new Integer(X11Defs.XK_Num_Lock), new Integer(KeyEvent.VK_NUM_LOCK));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Left), new Integer(KeyEvent.VK_KP_LEFT));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Up), new Integer(KeyEvent.VK_KP_UP));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Right), new Integer(KeyEvent.VK_KP_RIGHT));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Down), new Integer(KeyEvent.VK_KP_DOWN));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_0), new Integer(KeyEvent.VK_NUMPAD0));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_1), new Integer(KeyEvent.VK_NUMPAD1));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_2), new Integer(KeyEvent.VK_NUMPAD2));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_3), new Integer(KeyEvent.VK_NUMPAD3));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_4), new Integer(KeyEvent.VK_NUMPAD4));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_5), new Integer(KeyEvent.VK_NUMPAD5));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_6), new Integer(KeyEvent.VK_NUMPAD6));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_7), new Integer(KeyEvent.VK_NUMPAD7));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_8), new Integer(KeyEvent.VK_NUMPAD8));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_9), new Integer(KeyEvent.VK_NUMPAD9));
        tableXK2VK.put(new Integer(X11Defs.XK_F1), new Integer(KeyEvent.VK_F1));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_F1), new Integer(KeyEvent.VK_F1));
        tableXK2VK.put(new Integer(X11Defs.XK_F2), new Integer(KeyEvent.VK_F2));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_F2), new Integer(KeyEvent.VK_F2));
        tableXK2VK.put(new Integer(X11Defs.XK_F3), new Integer(KeyEvent.VK_F3));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_F3), new Integer(KeyEvent.VK_F3));
        tableXK2VK.put(new Integer(X11Defs.XK_F4), new Integer(KeyEvent.VK_F4));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_F4), new Integer(KeyEvent.VK_F4));
        tableXK2VK.put(new Integer(X11Defs.XK_F5), new Integer(KeyEvent.VK_F5));
        tableXK2VK.put(new Integer(X11Defs.XK_F6), new Integer(KeyEvent.VK_F6));
        tableXK2VK.put(new Integer(X11Defs.XK_F7), new Integer(KeyEvent.VK_F7));
        tableXK2VK.put(new Integer(X11Defs.XK_F8), new Integer(KeyEvent.VK_F8));
        tableXK2VK.put(new Integer(X11Defs.XK_F9), new Integer(KeyEvent.VK_F9));
        tableXK2VK.put(new Integer(X11Defs.XK_F10), new Integer(KeyEvent.VK_F10));
        tableXK2VK.put(new Integer(X11Defs.XK_F11), new Integer(KeyEvent.VK_F11));
        tableXK2VK.put(new Integer(X11Defs.XK_F12), new Integer(KeyEvent.VK_F12));
        tableXK2VK.put(new Integer(X11Defs.XK_F13), new Integer(KeyEvent.VK_F13));
        tableXK2VK.put(new Integer(X11Defs.XK_F14), new Integer(KeyEvent.VK_F14));
        tableXK2VK.put(new Integer(X11Defs.XK_F15), new Integer(KeyEvent.VK_F15));
        tableXK2VK.put(new Integer(X11Defs.XK_F16), new Integer(KeyEvent.VK_F16));
        tableXK2VK.put(new Integer(X11Defs.XK_F17), new Integer(KeyEvent.VK_F17));
        tableXK2VK.put(new Integer(X11Defs.XK_F18), new Integer(KeyEvent.VK_F18));
        tableXK2VK.put(new Integer(X11Defs.XK_F19), new Integer(KeyEvent.VK_F19));
        tableXK2VK.put(new Integer(X11Defs.XK_F20), new Integer(KeyEvent.VK_F20));
        tableXK2VK.put(new Integer(X11Defs.XK_F21), new Integer(KeyEvent.VK_F21));
        tableXK2VK.put(new Integer(X11Defs.XK_F22), new Integer(KeyEvent.VK_F22));
        tableXK2VK.put(new Integer(X11Defs.XK_F23), new Integer(KeyEvent.VK_F23));
        tableXK2VK.put(new Integer(X11Defs.XK_F24), new Integer(KeyEvent.VK_F24));
        tableXK2VK.put(new Integer(X11Defs.XK_Caps_Lock), new Integer(KeyEvent.VK_CAPS_LOCK));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_grave), new Integer(KeyEvent.VK_DEAD_GRAVE));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_acute), new Integer(KeyEvent.VK_DEAD_ACUTE));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_circumflex), new Integer(KeyEvent.VK_DEAD_CIRCUMFLEX));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_tilde), new Integer(KeyEvent.VK_DEAD_TILDE));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_macron), new Integer(KeyEvent.VK_DEAD_MACRON));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_breve), new Integer(KeyEvent.VK_DEAD_BREVE));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_abovedot), new Integer(KeyEvent.VK_DEAD_ABOVEDOT));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_diaeresis), new Integer(KeyEvent.VK_DEAD_DIAERESIS));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_abovering), new Integer(KeyEvent.VK_DEAD_ABOVERING));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_doubleacute), new Integer(KeyEvent.VK_DEAD_DOUBLEACUTE));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_caron), new Integer(KeyEvent.VK_DEAD_CARON));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_cedilla), new Integer(KeyEvent.VK_DEAD_CEDILLA));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_ogonek), new Integer(KeyEvent.VK_DEAD_OGONEK));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_iota), new Integer(KeyEvent.VK_DEAD_IOTA));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_voiced_sound), new Integer(KeyEvent.VK_DEAD_VOICED_SOUND));
        tableXK2VK.put(new Integer(X11Defs.XK_dead_semivoiced_sound), new Integer(KeyEvent.VK_DEAD_SEMIVOICED_SOUND));
        tableXK2VK.put(new Integer(X11Defs.XK_space), new Integer(KeyEvent.VK_SPACE));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Space), new Integer(KeyEvent.VK_SPACE));
        tableXK2VK.put(new Integer(X11Defs.XK_quotedbl), new Integer(KeyEvent.VK_QUOTEDBL));
        tableXK2VK.put(new Integer(X11Defs.XK_dollar), new Integer(KeyEvent.VK_DOLLAR));
        tableXK2VK.put(new Integer(X11Defs.XK_ampersand), new Integer(KeyEvent.VK_AMPERSAND));
        tableXK2VK.put(new Integer(X11Defs.XK_asterisk), new Integer(KeyEvent.VK_ASTERISK));
        tableXK2VK.put(new Integer(X11Defs.XK_plus), new Integer(KeyEvent.VK_PLUS));
        tableXK2VK.put(new Integer(X11Defs.XK_comma), new Integer(KeyEvent.VK_COMMA));
        tableXK2VK.put(new Integer(X11Defs.XK_minus), new Integer(KeyEvent.VK_MINUS));
        tableXK2VK.put(new Integer(X11Defs.XK_period), new Integer(KeyEvent.VK_PERIOD));
        tableXK2VK.put(new Integer(X11Defs.XK_slash), new Integer(KeyEvent.VK_SLASH));
        tableXK2VK.put(new Integer(X11Defs.XK_0), new Integer(KeyEvent.VK_0));
        tableXK2VK.put(new Integer(X11Defs.XK_1), new Integer(KeyEvent.VK_1));
        tableXK2VK.put(new Integer(X11Defs.XK_2), new Integer(KeyEvent.VK_2));
        tableXK2VK.put(new Integer(X11Defs.XK_3), new Integer(KeyEvent.VK_3));
        tableXK2VK.put(new Integer(X11Defs.XK_4), new Integer(KeyEvent.VK_4));
        tableXK2VK.put(new Integer(X11Defs.XK_5), new Integer(KeyEvent.VK_5));
        tableXK2VK.put(new Integer(X11Defs.XK_6), new Integer(KeyEvent.VK_6));
        tableXK2VK.put(new Integer(X11Defs.XK_7), new Integer(KeyEvent.VK_7));
        tableXK2VK.put(new Integer(X11Defs.XK_8), new Integer(KeyEvent.VK_8));
        tableXK2VK.put(new Integer(X11Defs.XK_9), new Integer(KeyEvent.VK_9));
        tableXK2VK.put(new Integer(X11Defs.XK_colon), new Integer(KeyEvent.VK_COLON));
        tableXK2VK.put(new Integer(X11Defs.XK_semicolon), new Integer(KeyEvent.VK_SEMICOLON));
        tableXK2VK.put(new Integer(X11Defs.XK_less), new Integer(KeyEvent.VK_LESS));
        tableXK2VK.put(new Integer(X11Defs.XK_greater), new Integer(KeyEvent.VK_GREATER));
        tableXK2VK.put(new Integer(X11Defs.XK_at), new Integer(KeyEvent.VK_AT));
        tableXK2VK.put(new Integer(X11Defs.XK_A), new Integer(KeyEvent.VK_A));
        tableXK2VK.put(new Integer(X11Defs.XK_B), new Integer(KeyEvent.VK_B));
        tableXK2VK.put(new Integer(X11Defs.XK_C), new Integer(KeyEvent.VK_C));
        tableXK2VK.put(new Integer(X11Defs.XK_D), new Integer(KeyEvent.VK_D));
        tableXK2VK.put(new Integer(X11Defs.XK_E), new Integer(KeyEvent.VK_E));
        tableXK2VK.put(new Integer(X11Defs.XK_F), new Integer(KeyEvent.VK_F));
        tableXK2VK.put(new Integer(X11Defs.XK_G), new Integer(KeyEvent.VK_G));
        tableXK2VK.put(new Integer(X11Defs.XK_H), new Integer(KeyEvent.VK_H));
        tableXK2VK.put(new Integer(X11Defs.XK_I), new Integer(KeyEvent.VK_I));
        tableXK2VK.put(new Integer(X11Defs.XK_J), new Integer(KeyEvent.VK_J));
        tableXK2VK.put(new Integer(X11Defs.XK_K), new Integer(KeyEvent.VK_K));
        tableXK2VK.put(new Integer(X11Defs.XK_L), new Integer(KeyEvent.VK_L));
        tableXK2VK.put(new Integer(X11Defs.XK_M), new Integer(KeyEvent.VK_M));
        tableXK2VK.put(new Integer(X11Defs.XK_N), new Integer(KeyEvent.VK_N));
        tableXK2VK.put(new Integer(X11Defs.XK_O), new Integer(KeyEvent.VK_O));
        tableXK2VK.put(new Integer(X11Defs.XK_P), new Integer(KeyEvent.VK_P));
        tableXK2VK.put(new Integer(X11Defs.XK_Q), new Integer(KeyEvent.VK_Q));
        tableXK2VK.put(new Integer(X11Defs.XK_R), new Integer(KeyEvent.VK_R));
        tableXK2VK.put(new Integer(X11Defs.XK_S), new Integer(KeyEvent.VK_S));
        tableXK2VK.put(new Integer(X11Defs.XK_T), new Integer(KeyEvent.VK_T));
        tableXK2VK.put(new Integer(X11Defs.XK_U), new Integer(KeyEvent.VK_U));
        tableXK2VK.put(new Integer(X11Defs.XK_V), new Integer(KeyEvent.VK_V));
        tableXK2VK.put(new Integer(X11Defs.XK_W), new Integer(KeyEvent.VK_W));
        tableXK2VK.put(new Integer(X11Defs.XK_X), new Integer(KeyEvent.VK_X));
        tableXK2VK.put(new Integer(X11Defs.XK_Y), new Integer(KeyEvent.VK_Y));
        tableXK2VK.put(new Integer(X11Defs.XK_Z), new Integer(KeyEvent.VK_Z));
        tableXK2VK.put(new Integer(X11Defs.XK_underscore), new Integer(KeyEvent.VK_UNDERSCORE));
        tableXK2VK.put(new Integer(X11Defs.XK_a), new Integer(KeyEvent.VK_A));
        tableXK2VK.put(new Integer(X11Defs.XK_b), new Integer(KeyEvent.VK_B));
        tableXK2VK.put(new Integer(X11Defs.XK_c), new Integer(KeyEvent.VK_C));
        tableXK2VK.put(new Integer(X11Defs.XK_d), new Integer(KeyEvent.VK_D));
        tableXK2VK.put(new Integer(X11Defs.XK_e), new Integer(KeyEvent.VK_E));
        tableXK2VK.put(new Integer(X11Defs.XK_f), new Integer(KeyEvent.VK_F));
        tableXK2VK.put(new Integer(X11Defs.XK_g), new Integer(KeyEvent.VK_G));
        tableXK2VK.put(new Integer(X11Defs.XK_h), new Integer(KeyEvent.VK_H));
        tableXK2VK.put(new Integer(X11Defs.XK_i), new Integer(KeyEvent.VK_I));
        tableXK2VK.put(new Integer(X11Defs.XK_j), new Integer(KeyEvent.VK_J));
        tableXK2VK.put(new Integer(X11Defs.XK_k), new Integer(KeyEvent.VK_K));
        tableXK2VK.put(new Integer(X11Defs.XK_l), new Integer(KeyEvent.VK_L));
        tableXK2VK.put(new Integer(X11Defs.XK_m), new Integer(KeyEvent.VK_M));
        tableXK2VK.put(new Integer(X11Defs.XK_n), new Integer(KeyEvent.VK_N));
        tableXK2VK.put(new Integer(X11Defs.XK_o), new Integer(KeyEvent.VK_O));
        tableXK2VK.put(new Integer(X11Defs.XK_p), new Integer(KeyEvent.VK_P));
        tableXK2VK.put(new Integer(X11Defs.XK_q), new Integer(KeyEvent.VK_Q));
        tableXK2VK.put(new Integer(X11Defs.XK_r), new Integer(KeyEvent.VK_R));
        tableXK2VK.put(new Integer(X11Defs.XK_s), new Integer(KeyEvent.VK_S));
        tableXK2VK.put(new Integer(X11Defs.XK_t), new Integer(KeyEvent.VK_T));
        tableXK2VK.put(new Integer(X11Defs.XK_u), new Integer(KeyEvent.VK_U));
        tableXK2VK.put(new Integer(X11Defs.XK_v), new Integer(KeyEvent.VK_V));
        tableXK2VK.put(new Integer(X11Defs.XK_w), new Integer(KeyEvent.VK_W));
        tableXK2VK.put(new Integer(X11Defs.XK_x), new Integer(KeyEvent.VK_X));
        tableXK2VK.put(new Integer(X11Defs.XK_y), new Integer(KeyEvent.VK_Y));
        tableXK2VK.put(new Integer(X11Defs.XK_z), new Integer(KeyEvent.VK_Z));
        tableXK2VK.put(new Integer(X11Defs.XK_braceleft), new Integer(KeyEvent.VK_BRACELEFT));
        tableXK2VK.put(new Integer(X11Defs.XK_braceright), new Integer(KeyEvent.VK_BRACERIGHT));
        tableXK2VK.put(new Integer(X11Defs.XK_multiply), new Integer(KeyEvent.VK_MULTIPLY));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Multiply), new Integer(KeyEvent.VK_MULTIPLY));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Decimal), new Integer(KeyEvent.VK_DECIMAL));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Divide), new Integer(KeyEvent.VK_DIVIDE));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Subtract), new Integer(KeyEvent.VK_SUBTRACT));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Separator), new Integer(KeyEvent.VK_SEPARATOR));
        tableXK2VK.put(new Integer(X11Defs.XK_Meta_L), new Integer(KeyEvent.VK_META));
        tableXK2VK.put(new Integer(X11Defs.XK_Meta_R), new Integer(KeyEvent.VK_META));
        tableXK2VK.put(new Integer(X11Defs.XK_Alt_L), new Integer(KeyEvent.VK_ALT));
        tableXK2VK.put(new Integer(X11Defs.XK_Alt_R), new Integer(KeyEvent.VK_ALT_GRAPH));
        tableXK2VK.put(new Integer(X11Defs.XK_Shift_L), new Integer(KeyEvent.VK_SHIFT));
        tableXK2VK.put(new Integer(X11Defs.XK_Shift_R), new Integer(KeyEvent.VK_SHIFT));
        tableXK2VK.put(new Integer(X11Defs.XK_Control_L), new Integer(KeyEvent.VK_CONTROL));
        tableXK2VK.put(new Integer(X11Defs.XK_Control_R), new Integer(KeyEvent.VK_CONTROL));
        tableXK2VK.put(new Integer(X11Defs.XK_Return), new Integer(KeyEvent.VK_ENTER));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Enter), new Integer(KeyEvent.VK_ENTER));
        tableXK2VK.put(new Integer(X11Defs.XK_equal), new Integer(KeyEvent.VK_EQUALS));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Equal), new Integer(KeyEvent.VK_EQUALS));
        tableXK2VK.put(new Integer(X11Defs.XK_exclam), new Integer(KeyEvent.VK_EXCLAMATION_MARK));
        tableXK2VK.put(new Integer(X11Defs.XK_exclamdown), new Integer(KeyEvent.VK_INVERTED_EXCLAMATION_MARK));
        tableXK2VK.put(new Integer(X11Defs.XK_bracketright), new Integer(KeyEvent.VK_CLOSE_BRACKET));
        tableXK2VK.put(new Integer(X11Defs.XK_bracketleft), new Integer(KeyEvent.VK_OPEN_BRACKET));
        tableXK2VK.put(new Integer(X11Defs.XK_KP_Add), new Integer(KeyEvent.VK_ADD));
        tableXK2VK.put(new Integer(X11Defs.XK_quoteright), new Integer(KeyEvent.VK_QUOTE));
        tableXK2VK.put(new Integer(X11Defs.XK_quoteleft), new Integer(KeyEvent.VK_BACK_QUOTE));
        tableXK2VK.put(new Integer(X11Defs.XK_Kana_Shift), new Integer(KeyEvent.VK_KANA));
        tableXK2VK.put(new Integer(X11Defs.XK_MultipleCandidate), new Integer(KeyEvent.VK_ALL_CANDIDATES));
        tableXK2VK.put(new Integer(X11Defs.XK_PreviousCandidate), new Integer(KeyEvent.VK_PREVIOUS_CANDIDATE));
        tableXK2VK.put(new Integer(X11Defs.XK_backslash), new Integer(KeyEvent.VK_BACK_SLASH));
        tableXK2VK.put(new Integer(X11Defs.XK_BackSpace), new Integer(KeyEvent.VK_BACK_SPACE));
        tableXK2VK.put(new Integer(X11Defs.XK_asciicircum), new Integer(KeyEvent.VK_CIRCUMFLEX));
        tableXK2VK.put(new Integer(X11Defs.XK_Codeinput), new Integer(KeyEvent.VK_CODE_INPUT));
        tableXK2VK.put(new Integer(X11Defs.XK_EuroSign), new Integer(KeyEvent.VK_EURO_SIGN));
        tableXK2VK.put(new Integer(X11Defs.XK_Hiragana), new Integer(KeyEvent.VK_JAPANESE_HIRAGANA));
        tableXK2VK.put(new Integer(X11Defs.XK_Katakana), new Integer(KeyEvent.VK_JAPANESE_KATAKANA));
        tableXK2VK.put(new Integer(X11Defs.XK_parenleft), new Integer(KeyEvent.VK_LEFT_PARENTHESIS));
        tableXK2VK.put(new Integer(X11Defs.XK_parenright), new Integer(KeyEvent.VK_RIGHT_PARENTHESIS));
        tableXK2VK.put(new Integer(X11Defs.XK_Mode_switch), new Integer(KeyEvent.VK_MODECHANGE));
        tableXK2VK.put(new Integer(X11Defs.XK_numbersign), new Integer(KeyEvent.VK_NUMBER_SIGN));
        tableXK2VK.put(new Integer(X11Defs.XK_percent), new Integer(KeyEvent.VK_5));
        tableXK2VK.put(new Integer(X11Defs.XK_question), new Integer(KeyEvent.VK_SLASH));
        tableXK2VK.put(new Integer(X11Defs.XK_bar), new Integer(KeyEvent.VK_BACK_SLASH));

        tableVK2XK = new HashMap();
        tableVK2XK.put(new Integer(KeyEvent.VK_TAB), new Integer(X11Defs.XK_Tab));
        tableVK2XK.put(new Integer(KeyEvent.VK_CLEAR), new Integer(X11Defs.XK_Clear));
        tableVK2XK.put(new Integer(KeyEvent.VK_PAUSE), new Integer(X11Defs.XK_Pause));
        tableVK2XK.put(new Integer(KeyEvent.VK_SCROLL_LOCK), new Integer(X11Defs.XK_Scroll_Lock));
        tableVK2XK.put(new Integer(KeyEvent.VK_ESCAPE), new Integer(X11Defs.XK_Escape));
        tableVK2XK.put(new Integer(KeyEvent.VK_DELETE), new Integer(X11Defs.XK_Delete));
        tableVK2XK.put(new Integer(KeyEvent.VK_KANJI), new Integer(X11Defs.XK_Kanji));
        tableVK2XK.put(new Integer(KeyEvent.VK_HIRAGANA), new Integer(X11Defs.XK_Hiragana));
        tableVK2XK.put(new Integer(KeyEvent.VK_KATAKANA), new Integer(X11Defs.XK_Katakana));
        tableVK2XK.put(new Integer(KeyEvent.VK_KANA_LOCK), new Integer(X11Defs.XK_Kana_Lock));
        tableVK2XK.put(new Integer(KeyEvent.VK_HOME), new Integer(X11Defs.XK_Home));
        tableVK2XK.put(new Integer(KeyEvent.VK_LEFT), new Integer(X11Defs.XK_Left));
        tableVK2XK.put(new Integer(KeyEvent.VK_UP), new Integer(X11Defs.XK_Up));
        tableVK2XK.put(new Integer(KeyEvent.VK_RIGHT), new Integer(X11Defs.XK_Right));
        tableVK2XK.put(new Integer(KeyEvent.VK_DOWN), new Integer(X11Defs.XK_Down));
        tableVK2XK.put(new Integer(KeyEvent.VK_PAGE_UP), new Integer(X11Defs.XK_Page_Up));
        tableVK2XK.put(new Integer(KeyEvent.VK_PAGE_DOWN), new Integer(X11Defs.XK_Page_Down));
        tableVK2XK.put(new Integer(KeyEvent.VK_END), new Integer(X11Defs.XK_End));
        tableVK2XK.put(new Integer(KeyEvent.VK_INSERT), new Integer(X11Defs.XK_Insert));
        tableVK2XK.put(new Integer(KeyEvent.VK_UNDO), new Integer(X11Defs.XK_Undo));
        tableVK2XK.put(new Integer(KeyEvent.VK_FIND), new Integer(X11Defs.XK_Find));
        tableVK2XK.put(new Integer(KeyEvent.VK_CANCEL), new Integer(X11Defs.XK_Cancel));
        tableVK2XK.put(new Integer(KeyEvent.VK_HELP), new Integer(X11Defs.XK_Help));
        tableVK2XK.put(new Integer(KeyEvent.VK_NUM_LOCK), new Integer(X11Defs.XK_Num_Lock));
        tableVK2XK.put(new Integer(KeyEvent.VK_F1), new Integer(X11Defs.XK_F1));
        tableVK2XK.put(new Integer(KeyEvent.VK_F2), new Integer(X11Defs.XK_F2));
        tableVK2XK.put(new Integer(KeyEvent.VK_F3), new Integer(X11Defs.XK_F3));
        tableVK2XK.put(new Integer(KeyEvent.VK_F4), new Integer(X11Defs.XK_F4));
        tableVK2XK.put(new Integer(KeyEvent.VK_F5), new Integer(X11Defs.XK_F5));
        tableVK2XK.put(new Integer(KeyEvent.VK_F6), new Integer(X11Defs.XK_F6));
        tableVK2XK.put(new Integer(KeyEvent.VK_F7), new Integer(X11Defs.XK_F7));
        tableVK2XK.put(new Integer(KeyEvent.VK_F8), new Integer(X11Defs.XK_F8));
        tableVK2XK.put(new Integer(KeyEvent.VK_F9), new Integer(X11Defs.XK_F9));
        tableVK2XK.put(new Integer(KeyEvent.VK_F10), new Integer(X11Defs.XK_F10));
        tableVK2XK.put(new Integer(KeyEvent.VK_F11), new Integer(X11Defs.XK_F11));
        tableVK2XK.put(new Integer(KeyEvent.VK_F12), new Integer(X11Defs.XK_F12));
        tableVK2XK.put(new Integer(KeyEvent.VK_F13), new Integer(X11Defs.XK_F13));
        tableVK2XK.put(new Integer(KeyEvent.VK_F14), new Integer(X11Defs.XK_F14));
        tableVK2XK.put(new Integer(KeyEvent.VK_F15), new Integer(X11Defs.XK_F15));
        tableVK2XK.put(new Integer(KeyEvent.VK_F16), new Integer(X11Defs.XK_F16));
        tableVK2XK.put(new Integer(KeyEvent.VK_F17), new Integer(X11Defs.XK_F17));
        tableVK2XK.put(new Integer(KeyEvent.VK_F18), new Integer(X11Defs.XK_F18));
        tableVK2XK.put(new Integer(KeyEvent.VK_F19), new Integer(X11Defs.XK_F19));
        tableVK2XK.put(new Integer(KeyEvent.VK_F20), new Integer(X11Defs.XK_F20));
        tableVK2XK.put(new Integer(KeyEvent.VK_F21), new Integer(X11Defs.XK_F21));
        tableVK2XK.put(new Integer(KeyEvent.VK_F22), new Integer(X11Defs.XK_F22));
        tableVK2XK.put(new Integer(KeyEvent.VK_F23), new Integer(X11Defs.XK_F23));
        tableVK2XK.put(new Integer(KeyEvent.VK_F24), new Integer(X11Defs.XK_F24));
        tableVK2XK.put(new Integer(KeyEvent.VK_CAPS_LOCK), new Integer(X11Defs.XK_Caps_Lock));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_GRAVE), new Integer(X11Defs.XK_dead_grave));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_ACUTE), new Integer(X11Defs.XK_dead_acute));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_CIRCUMFLEX), new Integer(X11Defs.XK_dead_circumflex));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_TILDE), new Integer(X11Defs.XK_dead_tilde));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_MACRON), new Integer(X11Defs.XK_dead_macron));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_BREVE), new Integer(X11Defs.XK_dead_breve));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_ABOVEDOT), new Integer(X11Defs.XK_dead_abovedot));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_DIAERESIS), new Integer(X11Defs.XK_dead_diaeresis));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_ABOVERING), new Integer(X11Defs.XK_dead_abovering));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_DOUBLEACUTE), new Integer(X11Defs.XK_dead_doubleacute));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_CARON), new Integer(X11Defs.XK_dead_caron));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_CEDILLA), new Integer(X11Defs.XK_dead_cedilla));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_OGONEK), new Integer(X11Defs.XK_dead_ogonek));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_IOTA), new Integer(X11Defs.XK_dead_iota));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_VOICED_SOUND), new Integer(X11Defs.XK_dead_voiced_sound));
        tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_SEMIVOICED_SOUND), new Integer(X11Defs.XK_dead_semivoiced_sound));
        tableVK2XK.put(new Integer(KeyEvent.VK_SPACE), new Integer(X11Defs.XK_space));
        tableVK2XK.put(new Integer(KeyEvent.VK_QUOTEDBL), new Integer(X11Defs.XK_quotedbl));
        tableVK2XK.put(new Integer(KeyEvent.VK_DOLLAR), new Integer(X11Defs.XK_dollar));
        tableVK2XK.put(new Integer(KeyEvent.VK_AMPERSAND), new Integer(X11Defs.XK_ampersand));
        tableVK2XK.put(new Integer(KeyEvent.VK_ASTERISK), new Integer(X11Defs.XK_asterisk));
        tableVK2XK.put(new Integer(KeyEvent.VK_PLUS), new Integer(X11Defs.XK_plus));
        tableVK2XK.put(new Integer(KeyEvent.VK_COMMA), new Integer(X11Defs.XK_comma));
        tableVK2XK.put(new Integer(KeyEvent.VK_MINUS), new Integer(X11Defs.XK_minus));
        tableVK2XK.put(new Integer(KeyEvent.VK_PERIOD), new Integer(X11Defs.XK_period));
        tableVK2XK.put(new Integer(KeyEvent.VK_SLASH), new Integer(X11Defs.XK_slash));
        tableVK2XK.put(new Integer(KeyEvent.VK_0), new Integer(X11Defs.XK_0));
        tableVK2XK.put(new Integer(KeyEvent.VK_1), new Integer(X11Defs.XK_1));
        tableVK2XK.put(new Integer(KeyEvent.VK_2), new Integer(X11Defs.XK_2));
        tableVK2XK.put(new Integer(KeyEvent.VK_3), new Integer(X11Defs.XK_3));
        tableVK2XK.put(new Integer(KeyEvent.VK_4), new Integer(X11Defs.XK_4));
        tableVK2XK.put(new Integer(KeyEvent.VK_5), new Integer(X11Defs.XK_5));
        tableVK2XK.put(new Integer(KeyEvent.VK_6), new Integer(X11Defs.XK_6));
        tableVK2XK.put(new Integer(KeyEvent.VK_7), new Integer(X11Defs.XK_7));
        tableVK2XK.put(new Integer(KeyEvent.VK_8), new Integer(X11Defs.XK_8));
        tableVK2XK.put(new Integer(KeyEvent.VK_9), new Integer(X11Defs.XK_9));
        tableVK2XK.put(new Integer(KeyEvent.VK_COLON), new Integer(X11Defs.XK_colon));
        tableVK2XK.put(new Integer(KeyEvent.VK_SEMICOLON), new Integer(X11Defs.XK_semicolon));
        tableVK2XK.put(new Integer(KeyEvent.VK_LESS), new Integer(X11Defs.XK_less));
        tableVK2XK.put(new Integer(KeyEvent.VK_GREATER), new Integer(X11Defs.XK_greater));
        tableVK2XK.put(new Integer(KeyEvent.VK_AT), new Integer(X11Defs.XK_at));
        tableVK2XK.put(new Integer(KeyEvent.VK_A), new Integer(X11Defs.XK_A));
        tableVK2XK.put(new Integer(KeyEvent.VK_B), new Integer(X11Defs.XK_B));
        tableVK2XK.put(new Integer(KeyEvent.VK_C), new Integer(X11Defs.XK_C));
        tableVK2XK.put(new Integer(KeyEvent.VK_D), new Integer(X11Defs.XK_D));
        tableVK2XK.put(new Integer(KeyEvent.VK_E), new Integer(X11Defs.XK_E));
        tableVK2XK.put(new Integer(KeyEvent.VK_F), new Integer(X11Defs.XK_F));
        tableVK2XK.put(new Integer(KeyEvent.VK_G), new Integer(X11Defs.XK_G));
        tableVK2XK.put(new Integer(KeyEvent.VK_H), new Integer(X11Defs.XK_H));
        tableVK2XK.put(new Integer(KeyEvent.VK_I), new Integer(X11Defs.XK_I));
        tableVK2XK.put(new Integer(KeyEvent.VK_J), new Integer(X11Defs.XK_J));
        tableVK2XK.put(new Integer(KeyEvent.VK_K), new Integer(X11Defs.XK_K));
        tableVK2XK.put(new Integer(KeyEvent.VK_L), new Integer(X11Defs.XK_L));
        tableVK2XK.put(new Integer(KeyEvent.VK_M), new Integer(X11Defs.XK_M));
        tableVK2XK.put(new Integer(KeyEvent.VK_N), new Integer(X11Defs.XK_N));
        tableVK2XK.put(new Integer(KeyEvent.VK_O), new Integer(X11Defs.XK_O));
        tableVK2XK.put(new Integer(KeyEvent.VK_P), new Integer(X11Defs.XK_P));
        tableVK2XK.put(new Integer(KeyEvent.VK_Q), new Integer(X11Defs.XK_Q));
        tableVK2XK.put(new Integer(KeyEvent.VK_R), new Integer(X11Defs.XK_R));
        tableVK2XK.put(new Integer(KeyEvent.VK_S), new Integer(X11Defs.XK_S));
        tableVK2XK.put(new Integer(KeyEvent.VK_T), new Integer(X11Defs.XK_T));
        tableVK2XK.put(new Integer(KeyEvent.VK_U), new Integer(X11Defs.XK_U));
        tableVK2XK.put(new Integer(KeyEvent.VK_V), new Integer(X11Defs.XK_V));
        tableVK2XK.put(new Integer(KeyEvent.VK_W), new Integer(X11Defs.XK_W));
        tableVK2XK.put(new Integer(KeyEvent.VK_X), new Integer(X11Defs.XK_X));
        tableVK2XK.put(new Integer(KeyEvent.VK_Y), new Integer(X11Defs.XK_Y));
        tableVK2XK.put(new Integer(KeyEvent.VK_Z), new Integer(X11Defs.XK_Z));
        tableVK2XK.put(new Integer(KeyEvent.VK_UNDERSCORE), new Integer(X11Defs.XK_underscore));
        tableVK2XK.put(new Integer(KeyEvent.VK_BRACELEFT), new Integer(X11Defs.XK_braceleft));
        tableVK2XK.put(new Integer(KeyEvent.VK_BRACERIGHT), new Integer(X11Defs.XK_braceright));
        tableVK2XK.put(new Integer(KeyEvent.VK_MULTIPLY), new Integer(X11Defs.XK_multiply));
        tableVK2XK.put(new Integer(KeyEvent.VK_DECIMAL), new Integer(X11Defs.XK_KP_Decimal));
        tableVK2XK.put(new Integer(KeyEvent.VK_META), new Integer(X11Defs.XK_Meta_L));
        tableVK2XK.put(new Integer(KeyEvent.VK_ALT), new Integer(X11Defs.XK_Alt_L));
        tableVK2XK.put(new Integer(KeyEvent.VK_ALT_GRAPH), new Integer(X11Defs.XK_Alt_R));
        tableVK2XK.put(new Integer(KeyEvent.VK_SHIFT), new Integer(X11Defs.XK_Shift_L));
        tableVK2XK.put(new Integer(KeyEvent.VK_CONTROL), new Integer(X11Defs.XK_Control_L));
        tableVK2XK.put(new Integer(KeyEvent.VK_ENTER), new Integer(X11Defs.XK_Return));
        tableVK2XK.put(new Integer(KeyEvent.VK_EQUALS), new Integer(X11Defs.XK_equal));
        tableVK2XK.put(new Integer(KeyEvent.VK_EXCLAMATION_MARK), new Integer(X11Defs.XK_exclam));
        tableVK2XK.put(new Integer(KeyEvent.VK_INVERTED_EXCLAMATION_MARK), new Integer(X11Defs.XK_exclamdown));
        tableVK2XK.put(new Integer(KeyEvent.VK_CLOSE_BRACKET), new Integer(X11Defs.XK_bracketright));
        tableVK2XK.put(new Integer(KeyEvent.VK_OPEN_BRACKET), new Integer(X11Defs.XK_bracketleft));
        tableVK2XK.put(new Integer(KeyEvent.VK_QUOTE), new Integer(X11Defs.XK_quoteright));
        tableVK2XK.put(new Integer(KeyEvent.VK_BACK_QUOTE), new Integer(X11Defs.XK_quoteleft));
        tableVK2XK.put(new Integer(KeyEvent.VK_KANA), new Integer(X11Defs.XK_Kana_Shift));
        tableVK2XK.put(new Integer(KeyEvent.VK_ALL_CANDIDATES), new Integer(X11Defs.XK_MultipleCandidate));
        tableVK2XK.put(new Integer(KeyEvent.VK_PREVIOUS_CANDIDATE), new Integer(X11Defs.XK_PreviousCandidate));
        tableVK2XK.put(new Integer(KeyEvent.VK_BACK_SLASH), new Integer(X11Defs.XK_backslash));
        tableVK2XK.put(new Integer(KeyEvent.VK_BACK_SPACE), new Integer(X11Defs.XK_BackSpace));
        tableVK2XK.put(new Integer(KeyEvent.VK_CIRCUMFLEX), new Integer(X11Defs.XK_asciicircum));
        tableVK2XK.put(new Integer(KeyEvent.VK_CODE_INPUT), new Integer(X11Defs.XK_Codeinput));
        tableVK2XK.put(new Integer(KeyEvent.VK_EURO_SIGN), new Integer(X11Defs.XK_EuroSign));
        tableVK2XK.put(new Integer(KeyEvent.VK_JAPANESE_HIRAGANA), new Integer(X11Defs.XK_Hiragana));
        tableVK2XK.put(new Integer(KeyEvent.VK_JAPANESE_KATAKANA), new Integer(X11Defs.XK_Katakana));
        tableVK2XK.put(new Integer(KeyEvent.VK_LEFT_PARENTHESIS), new Integer(X11Defs.XK_parenleft));
        tableVK2XK.put(new Integer(KeyEvent.VK_RIGHT_PARENTHESIS), new Integer(X11Defs.XK_parenright));
        tableVK2XK.put(new Integer(KeyEvent.VK_MODECHANGE), new Integer(X11Defs.XK_Mode_switch));
        tableVK2XK.put(new Integer(KeyEvent.VK_NUMBER_SIGN), new Integer(X11Defs.XK_numbersign));
        tableVK2XK.put(new Integer(KeyEvent.VK_UNDEFINED), new Integer(X11Defs.NoSymbol));
    }

    /**
     * Translates virtual key to KeySym.
     * @param vk virtual key
     * @return KeySym or NoSymbol
     */
    static int VK2XK(int vk) {
        Object xk = tableVK2XK.get(new Integer(vk));

        if (xk != null) {
            return ((Integer)xk).intValue();
        }

        return X11Defs.NoSymbol;
    }

    /**
     * Translates linux key event to internal structure KeyInfo and returns it.
     * @param event instance of XKeyEvent
     * @return instance of KeyInfo
     */
    static KeyInfo translateEvent(X11.XKeyEvent event) {
        KeyInfo res = new KeyInfo();
        int nBytes = 255;
        Int8Pointer buffer = bridge.createInt8Pointer(nBytes, false);
        buffer.fill((byte)0, nBytes);
        CLongPointer keySymPtr = bridge.createCLongPointer(1, false);

        nBytes = x11.XLookupString(event, buffer, nBytes, keySymPtr, null);

        if (nBytes > 0) {
            String str = buffer.getStringUTF();
            res.keyChars.append(str);
        } else {
            res.keyChars.append(KeyEvent.CHAR_UNDEFINED);
        }
        int keySym = (int)keySymPtr.get(0);

        if (tableXK2VK.containsKey(new Integer(keySym))) {
            res.vKey = ((Integer) tableXK2VK.get(new Integer(keySym))).intValue();
            res.keyLocation = deriveLocation(keySym);
        } else {
            res.vKey = KeyEvent.VK_UNDEFINED;
            res.keyLocation = KeyEvent.KEY_LOCATION_STANDARD;
        }

        return res;
    }

    private static int deriveLocation(int keySym) {
        switch (keySym) {
        case X11Defs.XK_Alt_L:
        case X11Defs.XK_Meta_L:
        case X11Defs.XK_Shift_L:
        case X11Defs.XK_Control_L:
            return KeyEvent.KEY_LOCATION_LEFT;
        case X11Defs.XK_Alt_R:
        case X11Defs.XK_Meta_R:
        case X11Defs.XK_Shift_R:
        case X11Defs.XK_Control_R:
            return KeyEvent.KEY_LOCATION_RIGHT;
        case X11Defs.XK_KP_Tab:
        case X11Defs.XK_KP_Delete:
        case X11Defs.XK_KP_Home:
        case X11Defs.XK_KP_Page_Up:
        case X11Defs.XK_KP_Page_Down:
        case X11Defs.XK_KP_End:
        case X11Defs.XK_KP_Insert:
        case X11Defs.XK_KP_Left:
        case X11Defs.XK_KP_Up:
        case X11Defs.XK_KP_Right:
        case X11Defs.XK_KP_Down:
        case X11Defs.XK_KP_0:
        case X11Defs.XK_KP_1:
        case X11Defs.XK_KP_2:
        case X11Defs.XK_KP_3:
        case X11Defs.XK_KP_4:
        case X11Defs.XK_KP_5:
        case X11Defs.XK_KP_6:
        case X11Defs.XK_KP_7:
        case X11Defs.XK_KP_8:
        case X11Defs.XK_KP_9:
        case X11Defs.XK_KP_F1:
        case X11Defs.XK_KP_F2:
        case X11Defs.XK_KP_F3:
        case X11Defs.XK_KP_F4:
        case X11Defs.XK_KP_Space:
        case X11Defs.XK_KP_Multiply:
        case X11Defs.XK_KP_Decimal:
        case X11Defs.XK_KP_Divide:
        case X11Defs.XK_KP_Subtract:
        case X11Defs.XK_KP_Separator:
        case X11Defs.XK_KP_Enter:
        case X11Defs.XK_KP_Equal:
        case X11Defs.XK_KP_Add:
            return KeyEvent.KEY_LOCATION_NUMPAD;
        default:
            return KeyEvent.KEY_LOCATION_STANDARD;
        }
    }

}
TOP

Related Classes of org.apache.harmony.awt.wtk.linux.KeyCodeTranslator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.