/* KeyCode.java
* Component: ProperJavaRDP
*
* Revision: $Revision: 1.3 $
* Author: $Author: telliott $
* Date: $Date: 2005/09/27 14:15:39 $
*
* Copyright (c) 2005 Propero Limited
*
* Purpose:
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program 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
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* (See gpl.txt for details of the GNU General Public License.)
*
*/
package org.jopenray.rdp.keymapping;
import org.apache.log4j.*;
import java.awt.event.*;
public class KeyCode
{
/**
* X scancodes for the printable keys of a standard 102 key MF-II Keyboard
*/
public static final int SCANCODE_EXTENDED = 0x80;
private final int[] main_key_scan_qwerty = {
0x29, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B,
0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2B,
0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
0x56};
private static final String[] main_key_US = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{", "]}",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:", "''\"", // added ' to \"
"\\|",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?"
};
/*** United States keyboard layout (phantom key version) */
/* (XFree86 reports the <> key even if it's not physically there) */
private static final String[] main_key_US_phantom = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{", "]}",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:", "'\"",
"\\|",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?",
"<>" /* the phantom key */
};
/*** British keyboard layout */
private static final String[] main_key_UK = {
"`�|", "1!", "2\"", "3�", "4$�", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{", "]}",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:", "'@", "#~",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?",
"\\|"
};
/*** French keyboard layout (contributed by Eric Pouech) */
private static final String[] main_key_FR = {
"�", "&1", "�2~", "\"3#", "'4{", "(5[", "-6|", "�7", "_8\\", "�9^�",
"�0@", ")�]", "=+}",
"aA", "zZ", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "^�", "$��",
"qQ", "sS�", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "mM", "�%", "*�",
"wW", "xX", "cC", "vV", "bB", "nN", ",?", ";.", ":/", "!�",
"<>"
};
/*** Icelandic keyboard layout (contributed by R�khar�ur Egilsson) */
private static final String[] main_key_IS = {
"�", "1!", "2\"", "3#", "4$", "5%", "6&", "7/{", "8([", "9)]", "0=}",
"��\\", "-_",
"qQ@", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "��",
"'?~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "�^", "+*`",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "��",
"<>|"
};
/*** German keyboard layout (contributed by Ulrich Weigand) */
private static final String[] main_key_DE = {
"^�", "1!", "2\"�", "3��", "4$", "5%", "6&", "7/{", "8([", "9)]", "0=}",
"�?\\", "'`",
"qQ@", "wW", "eE�", "rR", "tT", "zZ", "uU", "iI", "oO", "pP", "��",
"+*~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��", "#�",
"yY", "xX", "cC", "vV", "bB", "nN", "mM�", ",;", ".:", "-_",
"<>|"
};
/*** German keyboard layout without dead keys */
private static final String[] main_key_DE_nodead = {
"^�", "1!", "2\"", "3�", "4$", "5%", "6&", "7/{", "8([", "9)]", "0=}",
"�?\\", "�",
"qQ", "wW", "eE", "rR", "tT", "zZ", "uU", "iI", "oO", "pP", "��", "+*~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��", "#'",
"yY", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>"
};
/*** Swiss German keyboard layout (contributed by Jonathan Naylor) */
private static final String[] main_key_SG = {
"��", "1+|", "2\"@", "3*#", "4�", "5%", "6&�", "7/�", "8(�", "9)", "0=",
"'?�", "^`~",
"qQ", "wW", "eE", "rR", "tT", "zZ", "uU", "iI", "oO", "pP", "��[",
"�!]",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��{",
"$�}",
"yY", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>\\"
};
/*** Swiss French keyboard layout (contributed by Philippe Froidevaux) */
private static final String[] main_key_SF = {
"��", "1+|", "2\"@", "3*#", "4�", "5%", "6&�", "7/�", "8(�", "9)", "0=",
"'?�", "^`~",
"qQ", "wW", "eE", "rR", "tT", "zZ", "uU", "iI", "oO", "pP", "��[",
"�!]",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��{",
"$�}",
"yY", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>\\"
};
/*** Norwegian keyboard layout (contributed by Ove K�ven) */
private static final String[] main_key_NO = {
"|�", "1!", "2\"@", "3#�", "4�$", "5%", "6&", "7/{", "8([", "9)]",
"0=}", "+?", "\\`�",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "��", "�^~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��", "'*",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>"
};
/*** Danish keyboard layout (contributed by Bertho Stultiens) */
private static final String[] main_key_DA = {
"��", "1!", "2\"@", "3#�", "4�$", "5%", "6&", "7/{", "8([", "9)]",
"0=}", "+?", "�`|",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "��", "�^~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��", "'*",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>\\"
};
/*** Swedish keyboard layout (contributed by Peter Bortas) */
private static final String[] main_key_SE = {
"��", "1!", "2\"@", "3#�", "4�$", "5%", "6&", "7/{", "8([", "9)]",
"0=}", "+?\\", "�`",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "��", "�^~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��", "'*",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>|"
};
/*** Canadian French keyboard layout */
private static final String[] main_key_CF = {
"#|\\", "1!�", "2\"@", "3/�", "4$�", "5%�", "6?�", "7&�", "8*�", "9(�",
"0)�", "-_�", "=+�",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO�", "pP�", "^^[",
"��]",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:~", "``{",
"<>}",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",'-", ".", "��",
"���"
};
/*** Portuguese keyboard layout */
private static final String[] main_key_PT = {
"\\�", "1!", "2\"@", "3#�", "4$�", "5%", "6&", "7/{", "8([", "9)]",
"0=}", "'?", "��",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "+*\\�",
"\\'\\`",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "��",
"\\~\\^",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>"
};
/*** Italian keyboard layout */
private static final String[] main_key_IT = {
"\\|", "1!�", "2\"�", "3��", "4$�", "5%�", "6&�", "7/{", "8([", "9)]",
"0=}", "'?`", "�^~",
"qQ@", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO�", "pP�", "��[",
"+*]",
"aA", "sS�", "dD�", "fF", "gG", "hH", "jJ", "kK", "lL", "��@", "�#",
"�",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM�", ",;", ".:�", "-_",
"<>|"
};
/*** Finnish keyboard layout */
private static final String[] main_key_FI = {
"", "1!", "2\"@", "3#", "4$", "5%", "6&", "7/{", "8([", "9)]", "0=}",
"+?\\", "\'`",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "", "\"^~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "", "", "'*",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>|"
};
/*** Russian keyboard layout (contributed by Pavel Roskin) */
private static final String[] main_key_RU = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+",
"qQ��", "wW��", "eE��", "rR��", "tT��", "yY��", "uU��", "iI��", "oO��",
"pP��", "[{��", "]}��",
"aA��", "sS��", "dD��", "fF��", "gG��", "hH��", "jJ��", "kK��", "lL��",
";:��", "'\"��", "\\|",
"zZ��", "xX��", "cC��", "vV��", "bB��", "nN��", "mM��", ",<��", ".>��",
"/?"
};
/*** Russian keyboard layout KOI8-R */
private static final String[] main_key_RU_koi8r = {
"()", "1!", "2\"", "3/", "4$", "5:", "6,", "7.", "8;", "9?", "0%", "-_",
"=+",
"��", "��", "��", "��", "��", "��", "��", "��", "��", "��", "��", "��",
"��", "��", "��", "��", "��", "��", "��", "��", "��", "��", "��", "\\|",
"��", "��", "��", "��", "��", "��", "��", "��", "��", "/?",
"<>" /* the phantom key */
};
/*** Spanish keyboard layout (contributed by Jos� Marcos L�pez) */
private static final String[] main_key_ES = {
"��\\", "1!|", "2\"@", "3�#", "4$", "5%", "6&�", "7/", "8(", "9)", "0=",
"'?", "��",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "`^[",
"+*]",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "'�{",
"��}",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>"
};
/*** Belgian keyboard layout ***/
private static final String[] main_key_BE = {
"", "&1|", "�2@", "\"3#", "'4", "(5", "�6^", "�7", "!8", "�9{", "�0}",
")�", "-_",
"aA", "zZ", "eE�", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "^�[",
"$*]",
"qQ", "sS�", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "mM", "�%�",
"��`",
"wW", "xX", "cC", "vV", "bB", "nN", ",?", ";.", ":/", "=+~",
"<>\\"
};
/*** Hungarian keyboard layout (contributed by Zolt�n Kov�cs) */
private static final String[] main_key_HU = {
"0�", "1'~", "2\"�", "3+^", "4!�", "5%�", "6/�", "7=`", "8(�", "9)�",
"�ֽ", "�ܨ", "�Ӹ",
"qQ\\", "wW|", "eE", "rR", "tT", "zZ", "uU", "iI�", "oO�", "pP", "���",
"���",
"aA", "sS�", "dD�", "fF[", "gG]", "hH", "jJ�", "kK�", "lL�", "��$",
"���", "�ۤ",
"yY>", "xX#", "cC&", "vV@", "bB{", "nN}", "mM", ",?;", ".:�", "-_*",
"��<"
};
/*** Polish (programmer's) keyboard layout ***/
private static final String[] main_key_PL = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&�", "8*", "9(", "0)", "-_",
"=+",
"qQ", "wW", "eE��", "rR", "tT", "yY", "uU", "iI", "oO��", "pP", "[{",
"]}",
"aA��", "sS��", "dD", "fF", "gG", "hH", "jJ", "kK", "lL��", ";:", "'\"",
"\\|",
"zZ��", "xX��", "cC��", "vV", "bB", "nN��", "mM", ",<", ".>", "/?",
"<>|"
};
/*** Croatian keyboard layout specific for me <jelly@srk.fer.hr> ***/
private static final String[] main_key_HR_jelly = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{��",
"]}��",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:��", "'\"��",
"\\|��",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?",
"<>|"
};
/*** Croatian keyboard layout ***/
private static final String[] main_key_HR = {
"��", "1!", "2\"�", "3#^", "4$�", "5%�", "6&�", "7/`", "8(�", "9)�",
"0=�", "'?�", "+*�",
"qQ\\", "wW|", "eE", "rR", "tT", "zZ", "uU", "iI", "oO", "pP", "���",
"���",
"aA", "sS", "dD", "fF[", "gG]", "hH", "jJ", "kK�", "lL�", "��", "���",
"���",
"yY", "xX", "cC", "vV@", "bB{", "nN}", "mM�", ",;", ".:", "-_/",
"<>"
};
/*** Japanese 106 keyboard layout ***/
private static final String[] main_key_JA_jp106 = {
"1!", "2\"", "3#", "4$", "5%", "6&", "7'", "8(", "9)", "0~", "-=", "^~",
"\\|",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "@`", "[{",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";+", ":*", "]}",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?",
"\\_",
};
/*** Japanese pc98x1 keyboard layout ***/
private static final String[] main_key_JA_pc98x1 = {
"1!", "2\"", "3#", "4$", "5%", "6&", "7'", "8(", "9)", "0", "-=", "^`",
"\\|",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "@~", "[{",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";+", ":*", "]}",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?",
"\\_",
};
/*** Brazilian ABNT-2 keyboard layout (contributed by Raul Gomes Fernandes) */
private static final String[] main_key_PT_br = {
"'\"", "1!", "2@", "3#", "4$", "5%", "6\"", "7&", "8*", "9(", "0)",
"-_", "=+",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "'`", "[{",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "~^", "]}",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?"
};
/*** US international keyboard layout (contributed by Gustavo Noronha (kov@debian.org)) */
private static final String[] main_key_US_intl = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+", "\\|",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{", "]}",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:", "'\"",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?"
};
/*** Slovak keyboard layout (see cssk_ibm(sk_qwerty) in xkbsel)
- dead_abovering replaced with degree - no symbol in iso8859-2
- brokenbar replaced with bar */
private static final String[] main_key_SK = {
";�`'", "+1", "�2", "�3", "�4", "�5", "�6", "�7", "�8", "�9", "�0)",
"=%", "",
"qQ\\", "wW|", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "�/�",
"�(�",
"aA", "sS�", "dD�", "fF[", "gG]", "hH", "jJ", "kK�", "lL�", "�\"$",
"�!�", "�)�",
"zZ>", "xX#", "cC&", "vV@", "bB{", "nN}", "mM", ",?<", ".:>", "-_*",
"<>\\|"
};
/*** Slovak and Czech (programmer's) keyboard layout (see cssk_dual(cs_sk_ucw)) */
private static final String[] main_key_SK_prog = {
"`~", "1!", "2@", "3#", "4$", "5%", "6^", "7&", "8*", "9(", "0)", "-_",
"=+",
"qQ��", "wW��", "eE��", "rR��", "tT��", "yY��", "uU��", "iI��", "oO��",
"pP��", "[{", "]}",
"aA��", "sS��", "dD��", "fF��", "gG��", "hH��", "jJ��", "kK��", "lL��",
";:", "'\"", "\\|",
"zZ��", "xX�", "cC��", "vV��", "bB", "nN��", "mM��", ",<", ".>", "/?",
"<>"
};
/*** Czech keyboard layout (see cssk_ibm(cs_qwerty) in xkbsel) */
private static final String[] main_key_CS = {
";", "+1", "�2", "�3", "�4", "�5", "�6", "�7", "�8", "�9", "�0�)", "=%",
"",
"qQ\\", "wW|", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "�/[{",
")(]}",
"aA", "sS�", "dD�", "fF[", "gG]", "hH", "jJ", "kK�", "lL�", "�\"$",
"�!�", "�'",
"zZ>", "xX#", "cC&", "vV@", "bB{", "nN}", "mM", ",?<", ".:>", "-_*",
"<>\\|"
};
/*** Latin American keyboard layout (contributed by Gabriel Orlando Garcia) */
private static final String[] main_key_LA = {
"|��", "1!", "2\"", "3#", "4$", "5%", "6&", "7/", "8(", "9)", "0=",
"'?\\", "��",
"qQ@", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "��",
"+*~",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "{[^",
"}]`",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",;", ".:", "-_",
"<>"
};
/*** Lithuanian (Baltic) keyboard layout (contributed by Nerijus Bali�nas) */
private static final String[] main_key_LT_B = {
"`~", "��", "��", "��", "��", "��", "��", "��", "��", "((", "))", "-_",
"��",
"qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{", "]}",
"aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:", "'\"",
"\\|",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",<", ".>", "/?"
};
/*** Turkish keyboard Layout */
private static final String[] main_key_TK = {
"\"�", "1!", "2'", "3^#", "4+$", "5%", "6&", "7/{", "8([", "9)]", "0=}",
"*?\\", "-_",
"qQ@", "wW", "eE", "rR", "tT", "yY", "uU", "�I�", "oO", "pP", "��",
"��~",
"aA�", "sS�", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", "��", "i�",
",;`",
"zZ", "xX", "cC", "vV", "bB", "nN", "mM", "��", "��", ".:"
};
}