public BetterFoundInfo(DateTime currentTime, KeyboardEPAlgorithm algorithm, KeyboardLayout current, double currentScore)
 {
     this.currentTime = currentTime;
     this.algorithm = algorithm;
     this.current = current;
     this.currentScore = currentScore;
 }
示例#2
0
 public void SetActiveLayout(KeyboardLayout kly)
 {
     kl = kly;
     LayoutName = kl.getname();
     dkstate = "none";
     UpdateVisual();
 }
示例#3
0
        void Walk(KeyboardLayout layout)
        {
            //layout.AssertValid(null);

            foreach (var row in layout.Rows)
            {
                Walk(row);
            }
        }
示例#4
0
        protected override Locale Read(ContentReader input, Locale existingInstance)
        {
            int            lcid           = input.ReadInt32();
            CultureInfo    ci             = new CultureInfo(lcid);
            KeyboardLayout keyboaryLayout = input.ReadObject <KeyboardLayout>();
            Font           font           = input.ReadObject <Font>();

            return(new Locale(ci, keyboaryLayout, font));
        }
    private void ReadKeyboardLayout()
    {
        KeyboardLayout kbl = GameManager.Instance.keyboardLayout;

        forwardKey  = kbl.Forward;
        leftKey     = kbl.Left;
        backwardKey = kbl.Backward;
        rightKey    = kbl.Right;
    }
示例#6
0
        private void KeyParser(IntPtr wParam, IntPtr lParam, bool shiftPressed, bool capsLockPressed)
        {
            var keyValue = (Entities.KeyCode)Marshal.ReadInt32(lParam);

            var keyboardLayout = new KeyboardLayout().GetCurrentKeyboardLayout();
            var windowTitle    = new Window().CurrentWindowTitle();

            var key = new KeyPressed(keyValue, shiftPressed, capsLockPressed, windowTitle, keyboardLayout.ToString());

            keyPressedCallback.Invoke(key);
        }
示例#7
0
        public MainWindow()
        {
            InitializeComponent();

            var layout = KeyboardLayout.ReadDefaultKeyboardLayout();

            TheKeyboard.Layout = layout;

            Loaded += PositionWindowHelper.OnOpening;
            TheKeyboard.PositionWindow += (s, e) => PositionWindowHelper.DoPositionWindow(this);
            Closing += PositionWindowHelper.OnClosing;
        }
示例#8
0
        private IEnumerator DoSetLanguage(KeyboardLayout lang)
        {
            keyboardLayout = lang;
            layout         = LayoutList.GetLayout(keyboardLayout);

            yield return(StartCoroutine(SetupKeys()));

            // Update extra keys
            foreach (Key key in extraKeys)
            {
                key.UpdateLayout(layout);
            }
        }
        public Form1()
        {
            InitializeComponent();

            cm = new ControllerManager(this);

            kl = new KeyboardLayout(keyboardLayout);

            // Initiate our infinite loop waiting for input
            t.Tick    += loop;
            t.Interval = 1;
            t.Start();
        }
        protected override void Execute(CodeActivityContext context)
        {
            var h = WindowHandle.Get(context);

            if (h == null)
            {
                throw new ArgumentException(Resource.WindowHandleArgumentValidationError);
            }
            var value = Bridge.SetState(Bridge.ToWin32Handle(h), 0, 0);

            KeyboardLayout.Set(context, (value >> 16) & 0xffff);
            KeyboardOpenClose.Set(context, ((value >> 15) & 1) == 1);
            ConversionMode.Set(context, (value >> 0) & 0x7fff);
        }
示例#11
0
        public MainPage()
        {
            this.InitializeComponent();


            var layout = KeyboardLayout.ReadDefaultKeyboardLayout();

            TheKeyboard.Layout = layout;

            TheKeyboard.SendKey  += (s, e) => InteropHelper.SendKey(sendDown: e.SendDown, sendUp: e.SendUp, keyName: e.KeyName);
            TheKeyboard.SendText += (s, e) => InteropHelper.SendText(isShift: e.IsShift, isCtrl: e.IsCtrl, isAlt: e.IsAlt, isWindows: e.IsWindows, text: e.Text);

            Loaded += OnLoaded;
        }
示例#12
0
        /// <summary>
        /// Get a new keyboard layout object.
        /// </summary>
        /// <param name="layout">KeyboardLayout.</param>
        /// <returns>Layout object.</returns>
        public static Layout GetLayout(KeyboardLayout layout)
        {
            switch (layout)
            {
            case KeyboardLayout.French:
                return(new French());

            case KeyboardLayout.Dvorak:
                return(new Dvorak());

            default:
                return(new Layout());
            }
        }
示例#13
0
        private OnScreenKeyboardRowViewModel BuildRow5(KeyboardLayout layout)
        {
            var row = new OnScreenKeyboardRowViewModel();

            row.Keys.Add(KeyForScanCode(0x1D, layout));             // right control
            row.Keys.Add(KeyForScanCode(0x5B, layout, isE0: true)); // left windows
            row.Keys.Add(KeyForScanCode(0x38, layout));             // left alt
            row.Keys.Add(KeyForScanCode(0x39, layout, 45));         // space bar
            row.Keys.Add(KeyForScanCode(0x38, layout, isE0: true)); // right alt
            row.Keys.Add(KeyForScanCode(0x5C, layout, isE0: true)); // right windows
            row.Keys.Add(KeyForScanCode(0x5D, layout, isE0: true)); // menu
            row.Keys.Add(KeyForScanCode(0x1D, layout, isE0: true)); // right control
            return(row);
        }
示例#14
0
        private void ButtonImportJson_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("This will override your current data, do you want to continue?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
            {
                return;
            }

            listView1.Items.Clear();
            frameList.Clear();
            textBoxKeys.Text = "";

            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter           = "JSON files (*.json)|*.json";
            openFileDialog.RestoreDirectory = true;

            if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            List <AirFrameJSON> inputBuffer;

            using (StreamReader file = new StreamReader(openFileDialog.FileName)) {
                try {
                    inputBuffer = new JavaScriptSerializer().Deserialize <List <AirFrameJSON> >(file.ReadToEnd());
                } catch {
                    MessageBox.Show("Invalid JSON file!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }

            KeyboardLayout us_keyboard = new KeyboardLayout();

            foreach (AirFrameJSON item in inputBuffer)
            {
                listView1.Items.Insert(0, new ListViewItem(new[] { item.Address, item.PID.ToString(), item.Ch.ToString(), item.Length.ToString(), item.Payload, item.DecryptedPayload }));

                AirFrame af = new AirFrame(item);
                frameList.Add(af);

                if (af.decryptedPayload == null || af.decryptedPayload.Length == 0)
                {
                    continue;
                }

                textBoxKeys.Text += us_keyboard.ToComboKeyPress(af.decryptedPayload);
            }
        }
示例#15
0
        public HotkeySets(KeyboardLayout keyboardLayout, bool generateEmptyInstead = false)
        {
            // Generate entries for all commands
            // We also want them to be in the XML.
            foreach (CommandObj command in CommandHandler.Commands)
            {
                _list.Add(command.Name, new SortedSet <Hotkey>());
            }

            // Generate keyboard layout
            if (!generateEmptyInstead)
            {
                GenerateDefault(keyboardLayout);
            }
        }
示例#16
0
    private void showLayout(KeyboardLayout layout)
    {
        LayoutName.text = layout.Name;
        Top.text        = layout.ActionToKey["top"].ToString();
        Middle.text     = layout.ActionToKey["middle"].ToString();

        if (layout.Name.Equals("NEO"))
        {
            Bottom.text = "Ü";
        }
        else
        {
            Bottom.text = layout.ActionToKey["bottom"].ToString();
        }
    }
 static void AssertAllKeyboardsValid(IKeyboardHost host, params string[] layoutXmls)
 {
     try
     {
         foreach (var layoutXml in layoutXmls)
         {
             var layout = KeyboardLayout.Load(layoutXml);
             layout.AssertValid(host);
         }
     }
     catch (Exception ex)
     {
         Debug.Fail(ex.Message);
     }
 }
示例#18
0
        public VirtualKeys(string name, int x, int y, int width, int height, Font font, KeyboardLayout layout = KeyboardLayout.QWERTY)
        {
            Name = name;
            // ReSharper disable DoNotCallOverridableMethodsInConstructor
            X      = x;
            Y      = y;
            Width  = width;
            Height = height;
            // ReSharper restore DoNotCallOverridableMethodsInConstructor
            _font   = font;
            _layout = layout;

            CalculatePositions();
            SetLayout();
        }
示例#19
0
        static void SerializeToConsole(KeyboardLayout keyboard)
        {
            var stream = new MemoryStream();
            var writer = new XmlTextWriter(stream, Encoding.UTF8)
            {
                Formatting = Formatting.Indented
            };

            KeyboardLayout.Serializer.Serialize(writer, keyboard);
            var bytes = stream.ToArray();
            var text  = Encoding.UTF8.GetString(bytes);

            Console.Write(text);

            File.WriteAllBytes("Keyboard.xml", bytes);
        }
示例#20
0
        public void GatherKeystrokes()
        {
            _keystrokes.Clear();

            foreach (KeyboardLayoutName name in Enum.GetValues(typeof(KeyboardLayoutName)))
            {
                var xml = KeyboardPanel.GetKeyboardLayoutXml(name);
                if (xml != null)
                {
                    var layout = KeyboardLayout.Load(xml);

                    Walk(layout);
                }
            }

            KeystrokeCasesTest.AssertEverything(_keystrokes);
        }
        /// <summary>
        /// Create the input helper.
        /// </summary>
        public DefaultInputProvider()
        {
            _allKeyValues = (Keys[])System.Enum.GetValues(typeof(Keys));

            // init keyboard states
            _newKeyboardState = _oldKeyboardState;

            // init mouse states
            _newMouseState = _oldMouseState;
            _newMousePos   = new Vector2(_newMouseState.X, _newMouseState.Y);

            // set default keyboardLayout
            keyboardLayout = (KeyboardLayout)Activator.CreateInstance(defaultKeyboardLayout);

            // call first update to get starting positions
            Update(new GameTime());
        }
示例#22
0
        private OnScreenKeyboardRowViewModel BuildRow4(KeyboardLayout layout)
        {
            var row = new OnScreenKeyboardRowViewModel();

            row.Keys.Add(KeyForScanCode(0x2A, layout, 21));         // left shift
            row.Keys.Add(KeyForScanCode(0x2C, layout));             // Z
            row.Keys.Add(KeyForScanCode(0x2D, layout));             // X
            row.Keys.Add(KeyForScanCode(0x2E, layout));             // C
            row.Keys.Add(KeyForScanCode(0x2F, layout));             // V
            row.Keys.Add(KeyForScanCode(0x30, layout));             // B
            row.Keys.Add(KeyForScanCode(0x31, layout));             // N
            row.Keys.Add(KeyForScanCode(0x32, layout));             // M
            row.Keys.Add(KeyForScanCode(0x33, layout));             // ,
            row.Keys.Add(KeyForScanCode(0x34, layout));             // .
            row.Keys.Add(KeyForScanCode(0x35, layout));             // /
            row.Keys.Add(KeyForScanCode(0x36, layout, 21));         // right shift
            return(row);
        }
示例#23
0
        public G2DKeyboard(int keySize, KeyboardLayout layout)
            : base()
        {
            this.keySize = keySize;
            this.layout  = layout;
            keyTexture   = null;

            keys = new G2DButton[53];
            for (int i = 0; i < keys.Length; i++)
            {
                keys[i] = new G2DButton();
            }

            shiftPressed = false;

            PrepareKeyStrings();
            MapStringsToKeyButtons();
        }
示例#24
0
        private void setLayout(string keyValues, bool shiftedLayout)
        {
            KeyboardLayout newLayout = new KeyboardLayout(keyValues,
                                                          (Style)FindResource("KeyboardButtonStyle"),
                                                          (Style)FindResource("BackspaceButtonStyle"),
                                                          (Style)FindResource("SpaceButtonStyle"),
                                                          (Style)FindResource("ShiftButtonStyle"),
                                                          new RoutedEventHandler(ButtonClickEventHandler));

            if (shiftedLayout)
            {
                _shiftedLayout = newLayout;
            }
            else
            {
                _layout = newLayout;
            }
        }
示例#25
0
        private OnScreenKeyboardRowViewModel BuildRow3(KeyboardLayout layout)
        {
            var row = new OnScreenKeyboardRowViewModel();

            row.Keys.Add(KeyForScanCode(0x3A, layout, 17));         // caps lock
            row.Keys.Add(KeyForScanCode(0x1E, layout));             // A
            row.Keys.Add(KeyForScanCode(0x1F, layout));             // S
            row.Keys.Add(KeyForScanCode(0x20, layout));             // D
            row.Keys.Add(KeyForScanCode(0x21, layout));             // F
            row.Keys.Add(KeyForScanCode(0x22, layout));             // G
            row.Keys.Add(KeyForScanCode(0x23, layout));             // H
            row.Keys.Add(KeyForScanCode(0x24, layout));             // J
            row.Keys.Add(KeyForScanCode(0x25, layout));             // K
            row.Keys.Add(KeyForScanCode(0x26, layout));             // L
            row.Keys.Add(KeyForScanCode(0x27, layout));             // ;
            row.Keys.Add(KeyForScanCode(0x28, layout));             // '
            row.Keys.Add(KeyForScanCode(0x1C, layout, 21));         // enter
            return(row);
        }
示例#26
0
        public async void ChangeKeyboardInputLanguage()
        {
            try
            {
                var totalLanaguages = InputLanguage.InstalledInputLanguages.Count;
                for (int idx = 0; idx < totalLanaguages; idx++)
                {
                    if (InputLanguage.InstalledInputLanguages[idx].Culture.LCID == languageInput?.LCID)
                    {
                        CultureInfo culture = null;
                        int nextLanguage = idx;
                        do
                        {
                            nextLanguage = (idx + 1) % totalLanaguages;
                            culture = InputLanguage.InstalledInputLanguages[nextLanguage].Culture;
                        } while (culture != null && culture.LCID == InputLanguage.InstalledInputLanguages[idx].Culture.LCID && nextLanguage != idx);

                        if (culture == null)
                        {
                            Logger.Instance.LogMessage(TracingLevel.ERROR, $"{this.GetType()} ChangeKeyboardInputLanguage: Could not find next language culture");
                            return;
                        }
                        
                        if (culture.LCID == InputLanguage.InstalledInputLanguages[idx].Culture.LCID)
                        {

                            Logger.Instance.LogMessage(TracingLevel.ERROR, $"{this.GetType()} ChangeKeyboardInputLanguage could not find different language");
                            return;
                        }

                        (await KeyboardLayout.Load(culture)).Activate();
                        return;
                    }
                }

            }
            catch (Exception ex)
            {

                Logger.Instance.LogMessage(TracingLevel.ERROR, $"{this.GetType()} ChangeKeyboardInputLanguage Exception {ex}");
            }
        }
示例#27
0
        private OnScreenKeyboardRowViewModel BuildRow2(KeyboardLayout layout)
        {
            var row = new OnScreenKeyboardRowViewModel();

            row.Keys.Add(KeyForScanCode(0x0F, layout, 15));         // tab
            row.Keys.Add(KeyForScanCode(0x10, layout));             // Q
            row.Keys.Add(KeyForScanCode(0x11, layout));             // W
            row.Keys.Add(KeyForScanCode(0x12, layout));             // E
            row.Keys.Add(KeyForScanCode(0x13, layout));             // R
            row.Keys.Add(KeyForScanCode(0x14, layout));             // T
            row.Keys.Add(KeyForScanCode(0x15, layout));             // Y
            row.Keys.Add(KeyForScanCode(0x16, layout));             // U
            row.Keys.Add(KeyForScanCode(0x17, layout));             // I
            row.Keys.Add(KeyForScanCode(0x18, layout));             // O
            row.Keys.Add(KeyForScanCode(0x19, layout));             // P
            row.Keys.Add(KeyForScanCode(0x1A, layout));             // [
            row.Keys.Add(KeyForScanCode(0x1B, layout));             // ]
            row.Keys.Add(KeyForScanCode(0x2B, layout, 15));         // \
            return(row);
        }
        public void TestAbKeyboard()
        {
            var keyboard = new Keyboard(new[]{2},SetUtil.NewHash('a','b'));

            var firstPos = new KeyboardPosition(0,0);
            var secondPos = new KeyboardPosition(0,1);
            var times = new TransitionTimes(keyboard);
            times[firstPos, secondPos] = 1;
            times[firstPos, firstPos] = 2;
            times[secondPos, secondPos] = 2;
            times[secondPos, firstPos] = 2;
            var goodLayout = new KeyboardLayout("ab", keyboard);
            var badLayout = new KeyboardLayout("ba",keyboard);
            var occurrences = new double[keyboard.AllChars.Count, keyboard.AllChars.Count];
            var corpus = new Corpus(occurrences, 1000,keyboard);
            corpus['a', 'b'] = 100;
            var goodScore = KeyboardEPAlgorithm.Score(goodLayout, corpus, times);
            var badScore = KeyboardEPAlgorithm.Score(badLayout, corpus, times);
            Assert.That(goodScore > badScore);
        }
示例#29
0
        private OnScreenKeyboardRowViewModel BuildRow1(KeyboardLayout layout)
        {
            var row = new OnScreenKeyboardRowViewModel();

            row.Keys.Add(KeyForScanCode(0x29, layout));             // ~
            row.Keys.Add(KeyForScanCode(0x02, layout));             // 1
            row.Keys.Add(KeyForScanCode(0x03, layout));             // 2
            row.Keys.Add(KeyForScanCode(0x04, layout));             // 3
            row.Keys.Add(KeyForScanCode(0x05, layout));             // 4
            row.Keys.Add(KeyForScanCode(0x06, layout));             // 5
            row.Keys.Add(KeyForScanCode(0x07, layout));             // 6
            row.Keys.Add(KeyForScanCode(0x08, layout));             // 7
            row.Keys.Add(KeyForScanCode(0x09, layout));             // 8
            row.Keys.Add(KeyForScanCode(0x0A, layout));             // 9
            row.Keys.Add(KeyForScanCode(0x0B, layout));             // 0
            row.Keys.Add(KeyForScanCode(0x0C, layout));             // -
            row.Keys.Add(KeyForScanCode(0x0D, layout));             // +
            row.Keys.Add(KeyForScanCode(0x0E, layout, 20));         // backspace
            return(row);
        }
示例#30
0
    // Use this for initialization
    void Start()
    {
        words = new TstDictionary();
#if UNITY_STANDALONE_WIN
        string path = Application.dataPath + @"\SpellChecker\Resources\frequency_dictionary_en_82_765.txt";
#else
        string path = Application.dataPath + @"/SpellChecker/Resources/frequency_dictionary_en_82_765.txt";
#endif


        LoadDictionary(path);
        targetkeyboard = GetComponent <KeyboardLayout>();
        if (!targetkeyboard)
        {
            Debug.LogError("Target Keyboard Empty");
        }
        else
        {
            targetkeyboard.KeyboardLayout_OnKeyPressed += WordPrediction_KeyPressedHandler;
        }
    }
示例#31
0
        private void ButtonDecryptHistory_Click(object sender, EventArgs e)
        {
            if (!isKeyValid())
            {
                MessageBox.Show("Invalid AES key", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            listView1.Items.Clear();
            textBoxKeys.Text = "";

            KeyboardLayout us_keyboard = new KeyboardLayout();

            foreach (AirFrame af in frameList)
            {
                try {
                    af.DecryptKeyboardFrame(deviceKey);
                } catch {
                    af.decryptedPayload = null;
                }

                string address          = BitConverter.ToString(af.address).Replace("-", ":");
                string pid              = af.pid.ToString();
                string ch               = af.rf_channel.ToString();
                string len              = af.payloadLength.ToString();
                string payload          = af.payloadLength != 0 ? BitConverter.ToString(af.payload) : "<EMPTY>";
                string decrpytedPayload = af.decryptedPayload != null?BitConverter.ToString(af.decryptedPayload) : "";

                listView1.Items.Insert(0, new ListViewItem(new[] { address, pid, ch, len, payload, decrpytedPayload }));



                if (af.decryptedPayload == null)
                {
                    continue;
                }

                textBoxKeys.Text += us_keyboard.ToComboKeyPress(af.decryptedPayload);
            }
        }
示例#32
0
        public void Write(FileStream stream)
        {
            var writer = new BinaryWriter(stream);

            writer.Write(Signature, 0, 4);
            writer.Write(InputFrames);
            writer.Write(RerecordCount);
            writer.WriteASCII(KeyboardLayout.PadLeft(8, '0'), 8);
            writer.Write(Fps);
            writer.Write(SystemTime);
            writer.Write(Crc32);
            writer.Write(ExeSize);
            writer.WriteASCII(ExeName, 48);

            for (var i = 0; i < 16; i++)
            {
                writer.Write(DesyncDetection[i]);
            }

            writer.Write(HourglassRevision);
            writer.WriteASCII(CommandLine, 160);
        }
    // Use this for initialization
    void Start()
    {
        if (!targetkeyboard)
        {
            targetkeyboard = KeyboardLayout.Instance;
        }
        if (!targetkeyboard)
        {
            Debug.LogError("Target Keyboard Empty");
        }
        else
        {
            targetkeyboard.KeyboardLayout_OnKeyPressed += WordPrediction_KeyPressedHandler;
        }
        Debug.Log("Creating dictionary ...");

        //set parameters
        const int initialCapacity = 82765;
        const int maxEditDistance = 2;
        const int prefixLength    = 7;

        symSpell = new SymSpell(initialCapacity, maxEditDistance, prefixLength);

        //Load a frequency dictionary
        //wordfrequency_en.txt  ensures high correction quality by combining two data sources:
        //Google Books Ngram data  provides representative word frequencies (but contains many entries with spelling errors)
        //SCOWL — Spell Checker Oriented Word Lists which ensures genuine English vocabulary (but contained no word frequencies)
        string path = Application.dataPath + @"\SpellChecker\Resources\frequency_dictionary_en_82_765.txt"; //path referencing the SymSpell core project

        //string path = "../../frequency_dictionary_en_82_765.txt";  //path when using symspell nuget package (frequency_dictionary_en_82_765.txt is included in nuget package)
        if (!symSpell.LoadDictionary(path, 0, 1))
        {
            Debug.LogError("\rFile not found: " + System.IO.Path.GetFullPath(path));
        }

        //warm up
        var result = symSpell.Lookup("warmup", SymSpell.Verbosity.All);
    }
 Double GetTime(KeyboardLayout keyboardLayout)
 {
     return -KeyboardEPAlgorithm.Score(keyboardLayout, currentCorpus.FromJust, currentTimes.FromJust.Times);
 }
 public Document Print(KeyboardLayout layout)
 {
     var builder = new DocumentWriter();
     foreach (var from in keyboard.Positions)
     {
         builder.Write("From".Print() - layout[from].RegularChar.Print());
         builder.StartBlock(1);
         foreach (var to in keyboard.Positions)
         {
             var info = this[from, to];
             builder.WriteLine("To" - layout[to].RegularChar.Print() + DocumentUtil.Semi - info.Print());
         }
         builder.EndBlock();
     }
     return builder.ToDocument();
 }
        /// <summary>
        /// Build the keyboard layout based on the given class that represents the KPD file given in the constructor.
        /// </summary>
        /// <param name="keyboardLayout">The keyboard layout.</param>
        public void BuildKeyboardLayout(KeyboardLayout keyboardLayout)
        {
            //var sb = new StringBuilder();

            //sb.AppendLine("---------");
            //sb.AppendLine("CharModifiers");
            //sb.AppendLine("---------");
            //foreach (var charModifier in keyboardLayout.CharModifiers)
            //{
            //    sb.AppendLine(string.Format("ModifierBits:{0}:VirtualKey:{1}", charModifier.ModifierBits,
            //        charModifier.VirtualKey));
            //}

            //sb.AppendLine("---------");
            //sb.AppendLine("ScanCodeText");
            //sb.AppendLine("---------");
            //foreach (var scanCodeText in keyboardLayout.CodeText)
            //{
            //    sb.AppendLine(string.Format("ScanCode:{0:X}:Text:{1}", scanCodeText.ScanCode,
            //        scanCodeText.Text));
            //}

            //sb.AppendLine("---------");
            //sb.AppendLine("ScanCodes");
            //sb.AppendLine("---------");
            //foreach (var scanCode in keyboardLayout.ScanCodes.Where(x => !x.E0Set && !x.E1Set))
            //{
            //    sb.AppendLine(string.Format("ScanCode:{0:X}:VirtualKey:{1}:E0:{2}:E1:{3}", scanCode.Code,
            //        scanCode.VirtualKey, scanCode.E0Set, scanCode.E1Set));
            //}

            //sb.AppendLine("---------");
            //sb.AppendLine("ScanCodes E0");
            //sb.AppendLine("---------");
            //foreach (var scanCode in keyboardLayout.ScanCodes.Where(x => x.E0Set))
            //{
            //    sb.AppendLine(string.Format("ScanCode:{0:X}:VirtualKey:{1}:E0:{2}:E1:{3}", scanCode.Code,
            //        scanCode.VirtualKey, scanCode.E0Set, scanCode.E1Set));
            //}

            //sb.AppendLine("---------");
            //sb.AppendLine("ScanCodes E1");
            //sb.AppendLine("---------");
            //foreach (var scanCode in keyboardLayout.ScanCodes.Where(x => x.E1Set))
            //{
            //    sb.AppendLine(string.Format("ScanCode:{0:X}:VirtualKey:{1}:E0:{2}:E1:{3}", scanCode.Code,
            //        scanCode.VirtualKey, scanCode.E0Set, scanCode.E1Set));
            //}

            //sb.AppendLine("---------");
            //sb.AppendLine("VirtualKeys");
            //sb.AppendLine("---------");
            //foreach (var virtualkey in keyboardLayout.VirtualKeys)
            //{
            //    sb.AppendLine(string.Format("VirtualKey:{0}:Attributes:{1}:Characters:{2}", virtualkey.Key,
            //        virtualkey.Attributes, string.Join(" - ", virtualkey.Characters.Select(x => string.Format("{0:X}", x)))));
            //}

            //var result = sb.ToString();

            var mainSection = new OnScreenKeyboardSectionViewModel();
            mainSection.Rows.Add(BuildRow1(keyboardLayout));
            mainSection.Rows.Add(BuildRow2(keyboardLayout));
            mainSection.Rows.Add(BuildRow3(keyboardLayout));
            mainSection.Rows.Add(BuildRow4(keyboardLayout));
            mainSection.Rows.Add(BuildRow5(keyboardLayout));
            Sections.Add(mainSection);
        }
示例#37
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //MessageBox.Show("This version of MyInput Beta is for use by \r\nMyanmar Posts and Telecommunications\r\nfor demonstration purpose at ICT Week.\r\nAll other rights reserved.\r\nCopyright 2000-2010\r\nTechnomation Studios.");
            //UserInterface.Glass.ExtendGlassIntoClientArea(this, 0, 0, Width, Height);
            kp = new KeyProcessor("NULL");
            iop = new IOProcessor(kp);
            iop.SetMainHandle(this);
            imp = new IMEProcessor(kime, this, iop);
            //kl = new KeyboardLayout("NULL");
            dkstate = "none";
            cfg = new Config("MyInput\\");
            //cfg.Write("embed-crypt", EmbeddingControl.createPublicKey("589114946"));
            int xxx = Screen.GetWorkingArea(this).Width - this.Width + 1;
            int yyy = Screen.GetWorkingArea(this).Height - this.Height;
            string left = cfg.Read("mfx", xxx.ToString());
            string percent = cfg.Read("ypercent", Pixel2Percent(yyy, Screen.GetWorkingArea(this).Height).ToString());
            this.Top = Percent2Pixel(Convert.ToDouble(percent), Screen.GetWorkingArea(this).Height);
            this.Left = Convert.ToInt32(left);
            togglekey = Convert.ToInt32(cfg.Read("toggle", "119"));
            scrkey = Convert.ToInt32(cfg.Read("scriptshortcut", "122"));
            osk = Convert.ToInt32(cfg.Read("osk", "121"));
            enableenable = Convert.ToBoolean(cfg.Read("enableenable", "true"));
            toggleenable = Convert.ToBoolean(cfg.Read("toggleenable", "true"));
            screnable = Convert.ToBoolean(cfg.Read("screnable", "true"));
            autohide = Convert.ToBoolean(cfg.Read("autoshow", "true"));
            oskenable = Convert.ToBoolean(cfg.Read("oskenable", "true"));
            virtualize = Convert.ToBoolean(cfg.Read("virtualize", "true"));
            Layouts = new ArrayList();
            Scripts = new ArrayList();
            string[] s = System.IO.Directory.GetFiles("Layouts\\");
            foreach (string x in s)
            {
                if (x.EndsWith(".keylayout"))
                {
                    string ss = Directory.GetCurrentDirectory() + "\\" + x;
                    KeyboardLayout kl = new KeyboardLayout(ss);
                    if (kl.getname() != null)
                    {
                        Layout l = new Layout();
                        l.name = kl.getname();
                        l.isIME = false;
                        l.scripts = kl.getScripts();
                        Layouts.Add(l);
                    }
                    kl = null;
                }
                else if (x.EndsWith(".dll"))
                {
                    Layout l = new Layout();
                    l.name = x.Substring(x.LastIndexOf("\\") + 1);
                    l.name = l.name.Substring(0, l.name.IndexOf("."));
                    l.isIME = true;
                    l.scripts = null;
                    Layouts.Add(l);
                }
            }
            s = System.IO.Directory.GetFiles("Scripts\\");
            foreach (string x in s)
            {
                string ss = Directory.GetCurrentDirectory() + "\\" + x;
                if (ss.EndsWith(".ikl"))
                {
                    ss = ss.Substring(ss.LastIndexOf("\\") + 1);
                    ss = ss.Substring(0, ss.Length - 4);
                    if (!ScriptExists(ss))
                    {
                        Scripts.Add(ss);
                    }
                }
                else if (ss.EndsWith(".ikb"))
                {
                    ss = ss.Substring(ss.LastIndexOf("\\") + 1);
                    ss = ss.Substring(0, ss.Length - 4);
                    if (!ScriptExists(ss))
                    {
                        Scripts.Add(ss);
                    }
                }
            }

            foreach (string sx in Scripts)
            {
                ToolStripMenuItem i = new ToolStripMenuItem(sx);
                i.Click += ScriptClick;
                scripts_menu.Items.Add(i);
            }

            foreach (Layout l in Layouts)
            {
                ToolStripMenuItem i = new ToolStripMenuItem(l.name);
                i.Click += LayoutClick;
                layouts.Items.Add(i);
            }


            string lay = cfg.Read("layout", "Type Writer");
            string scr = cfg.Read("script", "MM Unicode");
            if (LayoutExists(lay))
            {
                laybtn.Text = lay;
            }
            else
            {
                laybtn.Text = "Type Writer";
            }
            if (ScriptExists(scr))
            {
                UpdateScript(scr);
            }
            else
            {
                UpdateScript("MM Unicode");
            }
            System.GC.Collect();
            if (!true)
            {
                try
                {
                    string sss = cfg.Read("embed-crypt");
                    if (EmbeddingControl.isValid(sss))
                    {
                        embedcrypt.Enabled = true;
                        actv.Enabled = false;
                        scrbtn.Enabled = false;
                        laybtn.Enabled = false;
                        //glassButton4.Enabled = false;
                    }
                    else
                    {
                        //internet();
                    }
                }
                catch (Exception ex)
                {
                    //internet();
                }
            }
            else
            {
                enablekey = Convert.ToInt32(cfg.Read("enable", "120"));
            }
            this.Refresh();
            Program.kh.SetHandle(this);
            Program.kh.Initiate();
        }
 private OnScreenKeyboardRowViewModel BuildRow1(KeyboardLayout layout)
 {
     var row = new OnScreenKeyboardRowViewModel();
     row.Keys.Add(KeyForScanCode(0x29, layout));             // ~
     row.Keys.Add(KeyForScanCode(0x02, layout));             // 1
     row.Keys.Add(KeyForScanCode(0x03, layout));             // 2
     row.Keys.Add(KeyForScanCode(0x04, layout));             // 3
     row.Keys.Add(KeyForScanCode(0x05, layout));             // 4
     row.Keys.Add(KeyForScanCode(0x06, layout));             // 5
     row.Keys.Add(KeyForScanCode(0x07, layout));             // 6
     row.Keys.Add(KeyForScanCode(0x08, layout));             // 7
     row.Keys.Add(KeyForScanCode(0x09, layout));             // 8
     row.Keys.Add(KeyForScanCode(0x0A, layout));             // 9
     row.Keys.Add(KeyForScanCode(0x0B, layout));             // 0
     row.Keys.Add(KeyForScanCode(0x0C, layout));             // -
     row.Keys.Add(KeyForScanCode(0x0D, layout));             // +
     row.Keys.Add(KeyForScanCode(0x0E, layout, 20));         // backspace
     return row;
 }
 private OnScreenKeyboardRowViewModel BuildRow5(KeyboardLayout layout)
 {
     var row = new OnScreenKeyboardRowViewModel();
     row.Keys.Add(KeyForScanCode(0x1D, layout));             // right control
     row.Keys.Add(KeyForScanCode(0x5B, layout, isE0: true)); // left windows
     row.Keys.Add(KeyForScanCode(0x38, layout));             // left alt
     row.Keys.Add(KeyForScanCode(0x39, layout, 45));         // space bar
     row.Keys.Add(KeyForScanCode(0x38, layout, isE0: true)); // right alt
     row.Keys.Add(KeyForScanCode(0x5C, layout, isE0: true)); // right windows
     row.Keys.Add(KeyForScanCode(0x5D, layout, isE0: true)); // menu
     row.Keys.Add(KeyForScanCode(0x1D, layout, isE0: true)); // right control
     return row;
 }
示例#40
0
 private void UpdateLayout(string s)
 {
     foreach (Layout l in Layouts)
     {
         if (s == l.name)
         {
             if (!l.isIME)
             {
                 scrbtn.Enabled = true;
                 kl = new KeyboardLayout(s);
                 kime = null;
                 /*if (imp != null)
                 {
                     imp.Kill();
                     imp = null;
                 }*/
                 laybtn.Text = kl.getname();
                 cfg.Write("layout", s);
                 if (vk != null)
                     vk.SetActiveLayout(kl);
                 if (hw != null)
                     hw.SetActiveLayout(kl);
                 if (active)
                 {
                     /*
                     if (imp != null)
                     {
                         imp.Kill();
                         imp = null;
                     }*/
                 }
             }
             else
             {
                 kl = null;
                 kime = new KeyboardIME(l.name);
                 cfg.Write("layout", s);
                 laybtn.Text = kime.getname();
                 if (l.name == "MyRoman")
                 {
                     // toolStripMenuItem2.Text = "MyRoman Browser";
                 }
                 else
                 {
                     //toolStripMenuItem2.Enabled = false;
                 }
                 if (vk != null)
                 {
                     vk.Hide();
                     vk.Dispose();
                     vk = null;
                 }
                 if (active)
                 {
                     //if (imp != null)
                     //    imp.Kill();
                     imp.Reset(kime, iop);// = new IMEProcessor(kime,this, iop);
                 }
             }
             System.GC.Collect();
             return;
         }
     }
 }
示例#41
0
        public G2DKeyboard(int keySize, KeyboardLayout layout)
            : base()
        {
            this.keySize = keySize;
            this.layout = layout;
            keyTexture = null;

            keys = new G2DButton[53];
            for (int i = 0; i < keys.Length; i++)
                keys[i] = new G2DButton();

            shiftPressed = false;

            PrepareKeyStrings();
            MapStringsToKeyButtons();
        }
 private OnScreenKeyboardRowViewModel BuildRow4(KeyboardLayout layout)
 {
     var row = new OnScreenKeyboardRowViewModel();
     row.Keys.Add(KeyForScanCode(0x2A, layout, 21));         // left shift
     row.Keys.Add(KeyForScanCode(0x2C, layout));             // Z
     row.Keys.Add(KeyForScanCode(0x2D, layout));             // X
     row.Keys.Add(KeyForScanCode(0x2E, layout));             // C
     row.Keys.Add(KeyForScanCode(0x2F, layout));             // V
     row.Keys.Add(KeyForScanCode(0x30, layout));             // B
     row.Keys.Add(KeyForScanCode(0x31, layout));             // N
     row.Keys.Add(KeyForScanCode(0x32, layout));             // M
     row.Keys.Add(KeyForScanCode(0x33, layout));             // ,
     row.Keys.Add(KeyForScanCode(0x34, layout));             // .
     row.Keys.Add(KeyForScanCode(0x35, layout));             // /
     row.Keys.Add(KeyForScanCode(0x36, layout, 21));         // right shift
     return row;
 }
 private OnScreenKeyboardRowViewModel BuildRow2(KeyboardLayout layout)
 {
     var row = new OnScreenKeyboardRowViewModel();
     row.Keys.Add(KeyForScanCode(0x0F, layout, 15));         // tab
     row.Keys.Add(KeyForScanCode(0x10, layout));             // Q
     row.Keys.Add(KeyForScanCode(0x11, layout));             // W
     row.Keys.Add(KeyForScanCode(0x12, layout));             // E
     row.Keys.Add(KeyForScanCode(0x13, layout));             // R
     row.Keys.Add(KeyForScanCode(0x14, layout));             // T
     row.Keys.Add(KeyForScanCode(0x15, layout));             // Y
     row.Keys.Add(KeyForScanCode(0x16, layout));             // U
     row.Keys.Add(KeyForScanCode(0x17, layout));             // I
     row.Keys.Add(KeyForScanCode(0x18, layout));             // O
     row.Keys.Add(KeyForScanCode(0x19, layout));             // P
     row.Keys.Add(KeyForScanCode(0x1A, layout));             // [
     row.Keys.Add(KeyForScanCode(0x1B, layout));             // ]
     row.Keys.Add(KeyForScanCode(0x2B, layout, 15));         // \
     return row;
 }
 public void AddNamedLayout(string name, KeyboardLayout layout)
 {
     keyboardLayouts.Add(Tuple.Create(layout, name));
 }
 private OnScreenKeyboardRowViewModel BuildRow3(KeyboardLayout layout)
 {
     var row = new OnScreenKeyboardRowViewModel();
     row.Keys.Add(KeyForScanCode(0x3A, layout, 17));         // caps lock
     row.Keys.Add(KeyForScanCode(0x1E, layout));             // A
     row.Keys.Add(KeyForScanCode(0x1F, layout));             // S
     row.Keys.Add(KeyForScanCode(0x20, layout));             // D
     row.Keys.Add(KeyForScanCode(0x21, layout));             // F
     row.Keys.Add(KeyForScanCode(0x22, layout));             // G
     row.Keys.Add(KeyForScanCode(0x23, layout));             // H
     row.Keys.Add(KeyForScanCode(0x24, layout));             // J
     row.Keys.Add(KeyForScanCode(0x25, layout));             // K
     row.Keys.Add(KeyForScanCode(0x26, layout));             // L
     row.Keys.Add(KeyForScanCode(0x27, layout));             // ;
     row.Keys.Add(KeyForScanCode(0x28, layout));             // '
     row.Keys.Add(KeyForScanCode(0x1C, layout, 21));         // enter
     return row;
 }
示例#46
0
	public static void Main() 
	{
		ResXResourceWriter rsxw = new ResXResourceWriter ("keyboards.resx"); 
		KeyboardLayout [] table = new KeyboardLayout [64];

				table [0] = new KeyboardLayout (1033, "United States keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {}, 
			new uint [] {}, 		});
		table [1] = new KeyboardLayout (1033, "United States keyboard layout (phantom key version)", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [2] = new KeyboardLayout (1033, "United States keyboard layout (dvorak)", 1, 2, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x63, 0x43, }, new uint [] {0x72, 0x52, }, 
			new uint [] {0x6c, 0x4c, }, new uint [] {0x2f, 0x3f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x6f, 0x4f, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x75, 0x55, }, new uint [] {0x69, 0x49, }, 
			new uint [] {0x64, 0x44, }, new uint [] {0x68, 0x48, }, 
			new uint [] {0x74, 0x54, }, new uint [] {0x6e, 0x4e, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x3b, 0x3a, }, 
			new uint [] {0x71, 0x51, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x78, 0x58, }, 
			new uint [] {0x62, 0x42, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x76, 0x56, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {}, 
			new uint [] {}, 		});
		table [3] = new KeyboardLayout (1033, "United States International keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x5c, 0x7c, }, 
			new uint [] {0x71, 0x51, }, new uint [] {0x77, 0x57, }, 
			new uint [] {0x65, 0x45, }, new uint [] {0x72, 0x52, }, 
			new uint [] {0x74, 0x54, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x75, 0x55, }, new uint [] {0x69, 0x49, }, 
			new uint [] {0x6f, 0x4f, }, new uint [] {0x70, 0x50, }, 
			new uint [] {0x5b, 0x7b, }, new uint [] {0x5d, 0x7d, }, 
			new uint [] {0x61, 0x41, }, new uint [] {0x73, 0x53, }, 
			new uint [] {0x64, 0x44, }, new uint [] {0x66, 0x46, }, 
			new uint [] {0x67, 0x47, }, new uint [] {0x68, 0x48, }, 
			new uint [] {0x6a, 0x4a, }, new uint [] {0x6b, 0x4b, }, 
			new uint [] {0x6c, 0x4c, }, new uint [] {0x3b, 0x3a, }, 
			new uint [] {0x27, 0x22, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {}, 
			new uint [] {}, 		});
		table [4] = new KeyboardLayout (2057, "British keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0xffffffa3, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x40, }, 
			new uint [] {0x23, 0x7e, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x5c, 0x7c, }, 
			new uint [] {}, 		});
		table [5] = new KeyboardLayout (1031, "German keyboard layout", 0, 1, new uint [][] {
			new uint [] {0x5e, 0xffffffb0, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0xffffffa7, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0xffffffdf, 0x3f, }, 
			new uint [] {0xffffffb4, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x23, 0x27, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, 0x7c, }, 
			new uint [] {}, 		});
		table [6] = new KeyboardLayout (1031, "German keyboard layout without dead keys", 0, 1, new uint [][] {
			new uint [] {0x5e, 0xffffffb0, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0xffffffa7, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, 0x7b, }, 
			new uint [] {0x38, 0x28, 0x5b, }, new uint [] {0x39, 0x29, 0x5d, }, 
			new uint [] {0x30, 0x3d, 0x7d, }, new uint [] {0xffffffdf, 0x3f, 0x5c, }, 
			new uint [] {0xffffffb4, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x2b, 0x2a, 0x7e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x23, 0x27, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [7] = new KeyboardLayout (1031, "German keyboard layout for logitech desktop pro", 0, 1, new uint [][] {
			new uint [] {0x5e, 0xffffffb0, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0xffffffa7, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, 0x7b, }, 
			new uint [] {0x38, 0x28, 0x5b, }, new uint [] {0x39, 0x29, 0x5d, }, 
			new uint [] {0x30, 0x3d, 0x7d, }, new uint [] {0xffffffdf, 0x3f, 0x5c, }, 
			new uint [] {0x27, 0x60, }, new uint [] {0x71, 0x51, 0x40, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x2b, 0x2a, 0x7e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x23, 0x27, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, 0x7c, }, 
			new uint [] {}, 		});
		table [8] = new KeyboardLayout (1031, "German keyboard layout without dead keys 105", 0, 3, new uint [][] {
			new uint [] {0x5e, 0xffffffb0, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, 0xffffffb2, }, new uint [] {0x33, 0xffffffa7, 0xffffffb3, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, 0x7b, }, 
			new uint [] {0x38, 0x28, 0x5b, }, new uint [] {0x39, 0x29, 0x5d, }, 
			new uint [] {0x30, 0x3d, 0x7d, }, new uint [] {0xffffffdf, 0x3f, 0x5c, }, 
			new uint [] {0x27, 0x60, }, new uint [] {0x71, 0x51, 0x40, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x2b, 0x2a, 0x7e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x23, 0x27, }, new uint [] {0x3c, 0x3e, 0x7c, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x78, 0x58, }, 
			new uint [] {0x63, 0x43, }, new uint [] {0x76, 0x56, }, 
			new uint [] {0x62, 0x42, }, new uint [] {0x6e, 0x4e, }, 
			new uint [] {0x6d, 0x4d, }, new uint [] {0x2c, 0x3b, }, 
			new uint [] {0x2e, 0x3a, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {}, 		});
		table [9] = new KeyboardLayout (2055, "Swiss German keyboard layout", 0, 1, new uint [][] {
			new uint [] {0xffffffa7, 0xffffffb0, }, new uint [] {0x31, 0x2b, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x2a, }, 
			new uint [] {0x34, 0xffffffe7, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0x5e, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffc, 0xffffffe8, }, 
			new uint [] {0xffffffa8, 0x21, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffe9, }, new uint [] {0xffffffe4, 0xffffffe0, }, 
			new uint [] {0x24, 0xffffffa3, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [10] = new KeyboardLayout (4108, "Swiss French keyboard layout", 0, 1, new uint [][] {
			new uint [] {0xffffffa7, 0xffffffb0, }, new uint [] {0x31, 0x2b, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x2a, }, 
			new uint [] {0x34, 0xffffffe7, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0x5e, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffe8, 0xfffffffc, }, 
			new uint [] {0xffffffa8, 0x21, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe9, 0xfffffff6, }, new uint [] {0xffffffe0, 0xffffffe4, }, 
			new uint [] {0x24, 0xffffffa3, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [11] = new KeyboardLayout (1053, "Swedish keyboard layout", 0, 5, new uint [][] {
			new uint [] {0xffffffa7, 0xffffffbd, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0xffffffa4, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x2b, 0x3f, }, 
			new uint [] {0xffffffb4, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffe5, 0xffffffc5, }, 
			new uint [] {0xffffffa8, 0x5e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x27, 0x2a, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [12] = new KeyboardLayout (1061, "Estonian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0xffffffb7, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0xffffffa4, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x2b, 0x3f, }, 
			new uint [] {0xffffffb4, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffc, 0xffffffdc, }, 
			new uint [] {0xfffffff5, 0xffffffd5, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x27, 0x2a, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [13] = new KeyboardLayout (1044, "Norwegian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x7c, 0xffffffa7, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, 0x40, }, new uint [] {0x33, 0x23, 0xffffffa3, }, 
			new uint [] {0x34, 0xffffffa4, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, 0x7b, }, 
			new uint [] {0x38, 0x28, 0x5b, }, new uint [] {0x39, 0x29, 0x5d, }, 
			new uint [] {0x30, 0x3d, 0x7d, }, new uint [] {0x2b, 0x3f, }, 
			new uint [] {0x5c, 0x60, 0xffffffb4, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffe5, 0xffffffc5, }, 
			new uint [] {0xffffffa8, 0x5e, 0x7e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff8, 0xffffffd8, }, new uint [] {0xffffffe6, 0xffffffc6, }, 
			new uint [] {0x27, 0x2a, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [14] = new KeyboardLayout (1030, "Danish keyboard layout", 0, 0, new uint [][] {
			new uint [] {0xffffffbd, 0xffffffa7, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0xffffffa4, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x2b, 0x3f, }, 
			new uint [] {0xffffffb4, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffe5, 0xffffffc5, }, 
			new uint [] {0xffffffa8, 0x5e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe6, 0xffffffc6, }, new uint [] {0xfffffff8, 0xffffffd8, }, 
			new uint [] {0x27, 0x2a, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [15] = new KeyboardLayout (1036, "French keyboard layout", 0, 4, new uint [][] {
			new uint [] {0xffffffb2, }, new uint [] {0x26, 0x31, }, 
			new uint [] {0xffffffe9, 0x32, 0x7e, }, new uint [] {0x22, 0x33, 0x23, }, 
			new uint [] {0x27, 0x34, 0x7b, }, new uint [] {0x28, 0x35, 0x5b, }, 
			new uint [] {0x2d, 0x36, 0x7c, }, new uint [] {0xffffffe8, 0x37, 0x60, }, 
			new uint [] {0x5f, 0x38, 0x5c, }, new uint [] {0xffffffe7, 0x39, 0x5e, 0xffffffb1, }, 
			new uint [] {0xffffffe0, 0x30, 0x40, }, new uint [] {0x29, 0xffffffb0, 0x5d, }, 
			new uint [] {0x3d, 0x2b, 0x7d, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x65, 0x45, 0xffffffbf, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5e, 0xffffffa8, }, 
			new uint [] {0x24, 0xffffffa3, 0xffffffa4, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x73, 0x53, 0xffffffdf, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x6d, 0x4d, }, new uint [] {0xfffffff9, 0x25, }, 
			new uint [] {0x2a, 0xffffffb5, }, new uint [] {0x77, 0x57, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x2c, 0x3f, }, 
			new uint [] {0x3b, 0x2e, }, new uint [] {0x3a, 0x2f, }, 
			new uint [] {0x21, 0xffffffa7, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [16] = new KeyboardLayout (3084, "Canadian French keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x23, 0x7c, 0x5c, }, new uint [] {0x31, 0x21, 0xffffffb1, }, 
			new uint [] {0x32, 0x22, 0x40, }, new uint [] {0x33, 0x2f, 0xffffffa3, }, 
			new uint [] {0x34, 0x24, 0xffffffa2, }, new uint [] {0x35, 0x25, 0xffffffa4, }, 
			new uint [] {0x36, 0x3f, 0xffffffac, }, new uint [] {0x37, 0x26, 0xffffffa6, }, 
			new uint [] {0x38, 0x2a, 0xffffffb2, }, new uint [] {0x39, 0x28, 0xffffffb3, }, 
			new uint [] {0x30, 0x29, 0xffffffbc, }, new uint [] {0x2d, 0x5f, 0xffffffbd, }, 
			new uint [] {0x3d, 0x2b, 0xffffffbe, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, 0xffffffa7, }, 
			new uint [] {0x70, 0x50, 0xffffffb6, }, new uint [] {0x5e, 0x5e, 0x5b, }, 
			new uint [] {0xffffffb8, 0xffffffa8, 0x5d, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, 0x7e, }, new uint [] {0x60, 0x60, 0x7b, }, 
			new uint [] {0x3c, 0x3e, 0x7d, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x27, 0x2d, }, new uint [] {0x2e, }, 
			new uint [] {0xffffffe9, 0xffffffc9, }, new uint [] {0xffffffab, 0xffffffbb, 0xffffffb0, }, 
			new uint [] {}, 		});
		table [17] = new KeyboardLayout (3084, "Canadian French keyboard layout (CA_fr)", 0, 0, new uint [][] {
			new uint [] {0x23, 0x7c, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x2f, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x3f, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5e, 0x5e, }, 
			new uint [] {0xffffffb8, 0xffffffa8, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x60, 0x60, }, 
			new uint [] {0x3c, 0x3e, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x27, }, new uint [] {0x2e, }, 
			new uint [] {0xffffffe9, 0xffffffc9, }, new uint [] {0xffffffab, 0xffffffbb, }, 
			new uint [] {}, 		});
		table [18] = new KeyboardLayout (3084, "Canadian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x2f, 0x5c, }, new uint [] {0x31, 0x21, 0xffffffb9, 0xffffffa1, }, 
			new uint [] {0x32, 0x40, 0xffffffb2, }, new uint [] {0x33, 0x23, 0xffffffb3, 0xffffffa3, }, 
			new uint [] {0x34, 0x24, 0xffffffbc, 0xffffffa4, }, new uint [] {0x35, 0x25, 0xffffffbd, }, 
			new uint [] {0x36, 0x3f, 0xffffffbe, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, 0xfffffff8, 0xffffffd8, }, 
			new uint [] {0x70, 0x50, 0xfffffffe, 0xffffffde, }, new uint [] {0x5e, 0xffffffa8, 0xffffffa8, }, 
			new uint [] {0xffffffe7, 0xffffffc7, 0x7e, }, new uint [] {0x61, 0x41, 0xffffffe6, 0xffffffc6, }, 
			new uint [] {0x73, 0x53, 0xffffffdf, 0xffffffa7, }, new uint [] {0x64, 0x44, 0xfffffff0, 0xffffffd0, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, 0xffffffb4, }, new uint [] {0xffffffe8, 0xffffffc8, }, 
			new uint [] {0xffffffe0, 0xffffffc0, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, 0xffffffa2, 0xffffffa9, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, 0xffffffb5, 0xffffffba, }, 
			new uint [] {0x2c, 0x27, }, new uint [] {0x2e, 0x22, 0xffffffb7, 0xfffffff7, }, 
			new uint [] {0xffffffe9, 0xffffffc9, }, new uint [] {0xfffffff9, 0xffffffd9, }, 
			new uint [] {}, 		});
		table [19] = new KeyboardLayout (2060, "Belgian keyboard layout", 0, 4, new uint [][] {
			new uint [] {}, new uint [] {0x26, 0x31, 0x7c, }, 
			new uint [] {0xffffffe9, 0x32, 0x40, }, new uint [] {0x22, 0x33, 0x23, }, 
			new uint [] {0x27, 0x34, }, new uint [] {0x28, 0x35, }, 
			new uint [] {0xffffffa7, 0x36, 0x5e, }, new uint [] {0xffffffe8, 0x37, }, 
			new uint [] {0x21, 0x38, }, new uint [] {0xffffffe7, 0x39, 0x7b, }, 
			new uint [] {0xffffffe0, 0x30, 0x7d, }, new uint [] {0x29, 0xffffffb0, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x65, 0x45, 0xffffffa4, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5e, 0xffffffa8, 0x5b, }, 
			new uint [] {0x24, 0x2a, 0x5d, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x73, 0x53, 0xffffffdf, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x6d, 0x4d, }, new uint [] {0xfffffff9, 0x25, 0xffffffb4, }, 
			new uint [] {0xffffffb5, 0xffffffa3, 0x60, }, new uint [] {0x77, 0x57, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x2c, 0x3f, }, 
			new uint [] {0x3b, 0x2e, }, new uint [] {0x3a, 0x2f, }, 
			new uint [] {0x3d, 0x2b, 0x7e, }, new uint [] {0x3c, 0x3e, 0x5c, }, 
			new uint [] {}, 		});
		table [20] = new KeyboardLayout (2070, "Portuguese keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x5c, 0x7c, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0xffffffab, 0xffffffbb, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x2b, 0x2a, }, 
			new uint [] {0xffffffb4, 0x60, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe7, 0xffffffc7, }, new uint [] {0xffffffba, 0xffffffaa, }, 
			new uint [] {0x7e, 0x5e, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [21] = new KeyboardLayout (1046, "Brazilian ABNT-2 keyboard layout", 2, 6, new uint [][] {
			new uint [] {0x27, 0x22, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0xffffffa8, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffb4, 0x60, }, 
			new uint [] {0x5b, 0x7b, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe7, 0xffffffc7, }, new uint [] {0x7e, 0x5e, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x5c, 0x7c, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x78, 0x58, }, 
			new uint [] {0x63, 0x43, }, new uint [] {0x76, 0x56, }, 
			new uint [] {0x62, 0x42, }, new uint [] {0x6e, 0x4e, }, 
			new uint [] {0x6d, 0x4d, }, new uint [] {0x2c, 0x3c, }, 
			new uint [] {0x2e, 0x3e, }, new uint [] {0x3b, 0x3a, }, 
			new uint [] {0x2f, 0x3f, }, 		});
		table [22] = new KeyboardLayout (1046, "Brazilian ABNT-2 keyboard layout ALT GR", 2, 6, new uint [][] {
			new uint [] {0x27, 0x22, }, new uint [] {0x31, 0x21, 0x39, }, 
			new uint [] {0x32, 0x40, 0x32, }, new uint [] {0x33, 0x23, 0x33, }, 
			new uint [] {0x34, 0x24, 0x23, }, new uint [] {0x35, 0x25, 0x22, }, 
			new uint [] {0x36, 0x28, 0x2c, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, 0x27, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x34, 0x60, }, 
			new uint [] {0x5b, 0x7b, 0x2a, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x67, 0x47, }, new uint [] {0x7e, 0x5e, }, 
			new uint [] {0x5d, 0x7d, 0x3a, }, new uint [] {0x5c, 0x7c, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x78, 0x58, }, 
			new uint [] {0x63, 0x43, }, new uint [] {0x76, 0x56, }, 
			new uint [] {0x62, 0x42, }, new uint [] {0x6e, 0x4e, }, 
			new uint [] {0x6d, 0x4d, }, new uint [] {0x2c, 0x3c, }, 
			new uint [] {0x2e, 0x3e, }, new uint [] {0x3b, 0x3a, }, 
			new uint [] {0x2f, 0x3f, 0x30, }, 		});
		table [23] = new KeyboardLayout (1035, "Finnish keyboard layout", 0, 0, new uint [][] {
			new uint [] {0xffffffa7, 0xffffffbd, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0xffffffa4, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x2b, 0x3f, }, 
			new uint [] {0xffffffb4, 0x60, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffe5, 0xffffffc5, }, 
			new uint [] {0xffffffa8, 0x5e, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x27, 0x2a, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [24] = new KeyboardLayout (1026, "Bulgarian bds keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, 0x28, 0x29, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, 0x32, 0x3f, }, new uint [] {0x33, 0x23, 0x33, 0x2b, }, 
			new uint [] {0x34, 0x24, 0x34, 0x22, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, 0x36, 0x3d, }, new uint [] {0x37, 0x26, 0x37, 0x3a, }, 
			new uint [] {0x38, 0x2a, 0x38, 0x2f, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, 0x2d, 0x49, }, 
			new uint [] {0x3d, 0x2b, 0x2e, 0x56, }, new uint [] {0x71, 0x51, 0x2c, 0xfffffffb, }, 
			new uint [] {0x77, 0x57, 0xfffffff3, 0xffffffd3, }, new uint [] {0x65, 0x45, 0xffffffe5, 0xffffffc5, }, 
			new uint [] {0x72, 0x52, 0xffffffe8, 0xffffffc8, }, new uint [] {0x74, 0x54, 0xfffffff8, 0xffffffd8, }, 
			new uint [] {0x79, 0x59, 0xfffffff9, 0xffffffd9, }, new uint [] {0x75, 0x55, 0xffffffea, 0xffffffca, }, 
			new uint [] {0x69, 0x49, 0xfffffff1, 0xffffffd1, }, new uint [] {0x6f, 0x4f, 0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x70, 0x50, 0xffffffe7, 0xffffffc7, }, new uint [] {0x5b, 0x7b, 0xfffffff6, 0xffffffd6, }, 
			new uint [] {0x5d, 0x7d, 0x3b, }, new uint [] {0x61, 0x41, 0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x73, 0x53, 0xffffffff, 0xffffffdf, }, new uint [] {0x64, 0x44, 0xffffffe0, 0xffffffc0, }, 
			new uint [] {0x66, 0x46, 0xffffffee, 0xffffffce, }, new uint [] {0x67, 0x47, 0xffffffe6, 0xffffffc6, }, 
			new uint [] {0x68, 0x48, 0xffffffe3, 0xffffffc3, }, new uint [] {0x6a, 0x4a, 0xfffffff2, 0xffffffd2, }, 
			new uint [] {0x6b, 0x4b, 0xffffffed, 0xffffffcd, }, new uint [] {0x6c, 0x4c, 0xffffffe2, 0xffffffc2, }, 
			new uint [] {0x3b, 0x3a, 0xffffffec, 0xffffffcc, }, new uint [] {0x27, 0x22, 0xfffffff7, 0xffffffd7, }, 
			new uint [] {0x5c, 0x7c, 0x27, 0xffffffdb, }, new uint [] {0x7a, 0x5a, 0xfffffffe, 0xffffffde, }, 
			new uint [] {0x78, 0x58, 0xffffffe9, 0xffffffc9, }, new uint [] {0x63, 0x43, 0xfffffffa, 0xffffffda, }, 
			new uint [] {0x76, 0x56, 0xfffffffd, 0xffffffdd, }, new uint [] {0x62, 0x42, 0xfffffff4, 0xffffffd4, }, 
			new uint [] {0x6e, 0x4e, 0xfffffff5, 0xffffffd5, }, new uint [] {0x6d, 0x4d, 0xffffffef, 0xffffffcf, }, 
			new uint [] {0x2c, 0x3c, 0xfffffff0, 0xffffffd0, }, new uint [] {0x2e, 0x3e, 0xffffffeb, 0xffffffcb, }, 
			new uint [] {0x2f, 0x3f, 0xffffffe1, 0xffffffc1, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [25] = new KeyboardLayout (1026, "Bulgarian phonetic keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, 0xfffffff7, 0xffffffd7, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffff, 0xffffffdf, }, 
			new uint [] {0x77, 0x57, 0xffffffe2, 0xffffffc2, }, new uint [] {0x65, 0x45, 0xffffffe5, 0xffffffc5, }, 
			new uint [] {0x72, 0x52, 0xfffffff0, 0xffffffd0, }, new uint [] {0x74, 0x54, 0xfffffff2, 0xffffffd2, }, 
			new uint [] {0x79, 0x59, 0xfffffffa, 0xffffffda, }, new uint [] {0x75, 0x55, 0xfffffff3, 0xffffffd3, }, 
			new uint [] {0x69, 0x49, 0xffffffe8, 0xffffffc8, }, new uint [] {0x6f, 0x4f, 0xffffffee, 0xffffffce, }, 
			new uint [] {0x70, 0x50, 0xffffffef, 0xffffffcf, }, new uint [] {0x5b, 0x7b, 0xfffffff8, 0xffffffd8, }, 
			new uint [] {0x5d, 0x7d, 0xfffffff9, 0xffffffd9, }, new uint [] {0x61, 0x41, 0xffffffe0, 0xffffffc0, }, 
			new uint [] {0x73, 0x53, 0xfffffff1, 0xffffffd1, }, new uint [] {0x64, 0x44, 0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x66, 0x46, 0xfffffff4, 0xffffffd4, }, new uint [] {0x67, 0x47, 0xffffffe3, 0xffffffc3, }, 
			new uint [] {0x68, 0x48, 0xfffffff5, 0xffffffd5, }, new uint [] {0x6a, 0x4a, 0xffffffe9, 0xffffffc9, }, 
			new uint [] {0x6b, 0x4b, 0xffffffea, 0xffffffca, }, new uint [] {0x6c, 0x4c, 0xffffffeb, 0xffffffcb, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, 0xfffffffe, 0xffffffde, }, new uint [] {0x7a, 0x5a, 0xffffffe7, 0xffffffc7, }, 
			new uint [] {0x78, 0x58, 0xfffffffc, 0xffffffdc, }, new uint [] {0x63, 0x43, 0xfffffff6, 0xffffffd6, }, 
			new uint [] {0x76, 0x56, 0xffffffe6, 0xffffffc6, }, new uint [] {0x62, 0x42, 0xffffffe1, 0xffffffc1, }, 
			new uint [] {0x6e, 0x4e, 0xffffffed, 0xffffffcd, }, new uint [] {0x6d, 0x4d, 0xffffffec, 0xffffffcc, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [26] = new KeyboardLayout (1059, "Belarusian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, 0xffffffa3, 0xffffffb3, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffca, 0xffffffea, }, 
			new uint [] {0x77, 0x57, 0xffffffc3, 0xffffffe3, }, new uint [] {0x65, 0x45, 0xffffffd5, 0xfffffff5, }, 
			new uint [] {0x72, 0x52, 0xffffffcb, 0xffffffeb, }, new uint [] {0x74, 0x54, 0xffffffc5, 0xffffffe5, }, 
			new uint [] {0x79, 0x59, 0xffffffce, 0xffffffee, }, new uint [] {0x75, 0x55, 0xffffffc7, 0xffffffe7, }, 
			new uint [] {0x69, 0x49, 0xffffffdb, 0xfffffffb, }, new uint [] {0x6f, 0x4f, 0xffffffae, 0xffffffbe, }, 
			new uint [] {0x70, 0x50, 0xffffffda, 0xfffffffa, }, new uint [] {0x5b, 0x7b, 0xffffffc8, 0xffffffe8, }, 
			new uint [] {0x5d, 0x7d, 0x27, 0x27, }, new uint [] {0x61, 0x41, 0xffffffc6, 0xffffffe6, }, 
			new uint [] {0x73, 0x53, 0xffffffd9, 0xfffffff9, }, new uint [] {0x64, 0x44, 0xffffffd7, 0xfffffff7, }, 
			new uint [] {0x66, 0x46, 0xffffffc1, 0xffffffe1, }, new uint [] {0x67, 0x47, 0xffffffd0, 0xfffffff0, }, 
			new uint [] {0x68, 0x48, 0xffffffd2, 0xfffffff2, }, new uint [] {0x6a, 0x4a, 0xffffffcf, 0xffffffef, }, 
			new uint [] {0x6b, 0x4b, 0xffffffcc, 0xffffffec, }, new uint [] {0x6c, 0x4c, 0xffffffc4, 0xffffffe4, }, 
			new uint [] {0x3b, 0x3a, 0xffffffd6, 0xfffffff6, }, new uint [] {0x27, 0x22, 0xffffffdc, 0xfffffffc, }, 
			new uint [] {0x5c, 0x7c, 0x2f, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffd1, 0xfffffff1, }, 
			new uint [] {0x78, 0x58, 0xffffffde, 0xfffffffe, }, new uint [] {0x63, 0x43, 0xffffffd3, 0xfffffff3, }, 
			new uint [] {0x76, 0x56, 0xffffffcd, 0xffffffed, }, new uint [] {0x62, 0x42, 0xffffffa6, 0xffffffb6, }, 
			new uint [] {0x6e, 0x4e, 0xffffffd4, 0xfffffff4, }, new uint [] {0x6d, 0x4d, 0xffffffd8, 0xfffffff8, }, 
			new uint [] {0x2c, 0x3c, 0xffffffc2, 0xffffffe2, }, new uint [] {0x2e, 0x3e, 0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2f, 0x3f, 0x2e, 0x2c, }, new uint [] {0x3c, 0x3e, 0x7c, 0xffffffa6, }, 
			new uint [] {}, 		});
		table [27] = new KeyboardLayout (1049, "Russian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffca, 0xffffffea, }, 
			new uint [] {0x77, 0x57, 0xffffffc3, 0xffffffe3, }, new uint [] {0x65, 0x45, 0xffffffd5, 0xfffffff5, }, 
			new uint [] {0x72, 0x52, 0xffffffcb, 0xffffffeb, }, new uint [] {0x74, 0x54, 0xffffffc5, 0xffffffe5, }, 
			new uint [] {0x79, 0x59, 0xffffffce, 0xffffffee, }, new uint [] {0x75, 0x55, 0xffffffc7, 0xffffffe7, }, 
			new uint [] {0x69, 0x49, 0xffffffdb, 0xfffffffb, }, new uint [] {0x6f, 0x4f, 0xffffffdd, 0xfffffffd, }, 
			new uint [] {0x70, 0x50, 0xffffffda, 0xfffffffa, }, new uint [] {0x5b, 0x7b, 0xffffffc8, 0xffffffe8, }, 
			new uint [] {0x5d, 0x7d, 0xffffffdf, 0xffffffff, }, new uint [] {0x61, 0x41, 0xffffffc6, 0xffffffe6, }, 
			new uint [] {0x73, 0x53, 0xffffffd9, 0xfffffff9, }, new uint [] {0x64, 0x44, 0xffffffd7, 0xfffffff7, }, 
			new uint [] {0x66, 0x46, 0xffffffc1, 0xffffffe1, }, new uint [] {0x67, 0x47, 0xffffffd0, 0xfffffff0, }, 
			new uint [] {0x68, 0x48, 0xffffffd2, 0xfffffff2, }, new uint [] {0x6a, 0x4a, 0xffffffcf, 0xffffffef, }, 
			new uint [] {0x6b, 0x4b, 0xffffffcc, 0xffffffec, }, new uint [] {0x6c, 0x4c, 0xffffffc4, 0xffffffe4, }, 
			new uint [] {0x3b, 0x3a, 0xffffffd6, 0xfffffff6, }, new uint [] {0x27, 0x22, 0xffffffdc, 0xfffffffc, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffd1, 0xfffffff1, }, 
			new uint [] {0x78, 0x58, 0xffffffde, 0xfffffffe, }, new uint [] {0x63, 0x43, 0xffffffd3, 0xfffffff3, }, 
			new uint [] {0x76, 0x56, 0xffffffcd, 0xffffffed, }, new uint [] {0x62, 0x42, 0xffffffc9, 0xffffffe9, }, 
			new uint [] {0x6e, 0x4e, 0xffffffd4, 0xfffffff4, }, new uint [] {0x6d, 0x4d, 0xffffffd8, 0xfffffff8, }, 
			new uint [] {0x2c, 0x3c, 0xffffffc2, 0xffffffe2, }, new uint [] {0x2e, 0x3e, 0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {}, 
			new uint [] {}, 		});
		table [28] = new KeyboardLayout (1049, "Russian keyboard layout (phantom key version)", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffca, 0xffffffea, }, 
			new uint [] {0x77, 0x57, 0xffffffc3, 0xffffffe3, }, new uint [] {0x65, 0x45, 0xffffffd5, 0xfffffff5, }, 
			new uint [] {0x72, 0x52, 0xffffffcb, 0xffffffeb, }, new uint [] {0x74, 0x54, 0xffffffc5, 0xffffffe5, }, 
			new uint [] {0x79, 0x59, 0xffffffce, 0xffffffee, }, new uint [] {0x75, 0x55, 0xffffffc7, 0xffffffe7, }, 
			new uint [] {0x69, 0x49, 0xffffffdb, 0xfffffffb, }, new uint [] {0x6f, 0x4f, 0xffffffdd, 0xfffffffd, }, 
			new uint [] {0x70, 0x50, 0xffffffda, 0xfffffffa, }, new uint [] {0x5b, 0x7b, 0xffffffc8, 0xffffffe8, }, 
			new uint [] {0x5d, 0x7d, 0xffffffdf, 0xffffffff, }, new uint [] {0x61, 0x41, 0xffffffc6, 0xffffffe6, }, 
			new uint [] {0x73, 0x53, 0xffffffd9, 0xfffffff9, }, new uint [] {0x64, 0x44, 0xffffffd7, 0xfffffff7, }, 
			new uint [] {0x66, 0x46, 0xffffffc1, 0xffffffe1, }, new uint [] {0x67, 0x47, 0xffffffd0, 0xfffffff0, }, 
			new uint [] {0x68, 0x48, 0xffffffd2, 0xfffffff2, }, new uint [] {0x6a, 0x4a, 0xffffffcf, 0xffffffef, }, 
			new uint [] {0x6b, 0x4b, 0xffffffcc, 0xffffffec, }, new uint [] {0x6c, 0x4c, 0xffffffc4, 0xffffffe4, }, 
			new uint [] {0x3b, 0x3a, 0xffffffd6, 0xfffffff6, }, new uint [] {0x27, 0x22, 0xffffffdc, 0xfffffffc, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffd1, 0xfffffff1, }, 
			new uint [] {0x78, 0x58, 0xffffffde, 0xfffffffe, }, new uint [] {0x63, 0x43, 0xffffffd3, 0xfffffff3, }, 
			new uint [] {0x76, 0x56, 0xffffffcd, 0xffffffed, }, new uint [] {0x62, 0x42, 0xffffffc9, 0xffffffe9, }, 
			new uint [] {0x6e, 0x4e, 0xffffffd4, 0xfffffff4, }, new uint [] {0x6d, 0x4d, 0xffffffd8, 0xfffffff8, }, 
			new uint [] {0x2c, 0x3c, 0xffffffc2, 0xffffffe2, }, new uint [] {0x2e, 0x3e, 0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [29] = new KeyboardLayout (1049, "Russian keyboard layout KOI8-R", 0, 0, new uint [][] {
			new uint [] {0x28, 0x29, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x2f, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x3a, }, 
			new uint [] {0x36, 0x2c, }, new uint [] {0x37, 0x2e, }, 
			new uint [] {0x38, 0x3b, }, new uint [] {0x39, 0x3f, }, 
			new uint [] {0x30, 0x25, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0xffffffca, 0xffffffea, }, 
			new uint [] {0xffffffc3, 0xffffffe3, }, new uint [] {0xffffffd5, 0xfffffff5, }, 
			new uint [] {0xffffffcb, 0xffffffeb, }, new uint [] {0xffffffc5, 0xffffffe5, }, 
			new uint [] {0xffffffce, 0xffffffee, }, new uint [] {0xffffffc7, 0xffffffe7, }, 
			new uint [] {0xffffffdb, 0xfffffffb, }, new uint [] {0xffffffdd, 0xfffffffd, }, 
			new uint [] {0xffffffda, 0xfffffffa, }, new uint [] {0xffffffc8, 0xffffffe8, }, 
			new uint [] {0xffffffdf, 0xffffffff, }, new uint [] {0xffffffc6, 0xffffffe6, }, 
			new uint [] {0xffffffd9, 0xfffffff9, }, new uint [] {0xffffffd7, 0xfffffff7, }, 
			new uint [] {0xffffffc1, 0xffffffe1, }, new uint [] {0xffffffd0, 0xfffffff0, }, 
			new uint [] {0xffffffd2, 0xfffffff2, }, new uint [] {0xffffffcf, 0xffffffef, }, 
			new uint [] {0xffffffcc, 0xffffffec, }, new uint [] {0xffffffc4, 0xffffffe4, }, 
			new uint [] {0xffffffd6, 0xfffffff6, }, new uint [] {0xffffffdc, 0xfffffffc, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0xffffffd1, 0xfffffff1, }, 
			new uint [] {0xffffffde, 0xfffffffe, }, new uint [] {0xffffffd3, 0xfffffff3, }, 
			new uint [] {0xffffffcd, 0xffffffed, }, new uint [] {0xffffffc9, 0xffffffe9, }, 
			new uint [] {0xffffffd4, 0xfffffff4, }, new uint [] {0xffffffd8, 0xfffffff8, }, 
			new uint [] {0xffffffc2, 0xffffffe2, }, new uint [] {0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [30] = new KeyboardLayout (1049, "Russian keyboard layout cp1251", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffe9, 0xffffffc9, }, 
			new uint [] {0x77, 0x57, 0xfffffff6, 0xffffffd6, }, new uint [] {0x65, 0x45, 0xfffffff3, 0xffffffd3, }, 
			new uint [] {0x72, 0x52, 0xffffffea, 0xffffffca, }, new uint [] {0x74, 0x54, 0xffffffe5, 0xffffffc5, }, 
			new uint [] {0x79, 0x59, 0xffffffed, 0xffffffcd, }, new uint [] {0x75, 0x55, 0xffffffe3, 0xffffffc3, }, 
			new uint [] {0x69, 0x49, 0xfffffff8, 0xffffffd8, }, new uint [] {0x6f, 0x4f, 0xfffffff9, 0xffffffd9, }, 
			new uint [] {0x70, 0x50, 0xffffffe7, 0xffffffc7, }, new uint [] {0x5b, 0x7b, 0xfffffff5, 0xffffffd5, }, 
			new uint [] {0x5d, 0x7d, 0xfffffffa, 0xffffffda, }, new uint [] {0x61, 0x41, 0xfffffff4, 0xffffffd4, }, 
			new uint [] {0x73, 0x53, 0xfffffffb, 0xffffffdb, }, new uint [] {0x64, 0x44, 0xffffffe2, 0xffffffc2, }, 
			new uint [] {0x66, 0x46, 0xffffffe0, 0xffffffc0, }, new uint [] {0x67, 0x47, 0xffffffef, 0xffffffcf, }, 
			new uint [] {0x68, 0x48, 0xfffffff0, 0xffffffd0, }, new uint [] {0x6a, 0x4a, 0xffffffee, 0xffffffce, }, 
			new uint [] {0x6b, 0x4b, 0xffffffeb, 0xffffffcb, }, new uint [] {0x6c, 0x4c, 0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x3b, 0x3a, 0xffffffe6, 0xffffffc6, }, new uint [] {0x27, 0x22, 0xfffffffd, 0xffffffdd, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffff, 0xffffffdf, }, 
			new uint [] {0x78, 0x58, 0xfffffff7, 0xffffffd7, }, new uint [] {0x63, 0x43, 0xfffffff1, 0xffffffd1, }, 
			new uint [] {0x76, 0x56, 0xffffffec, 0xffffffcc, }, new uint [] {0x62, 0x42, 0xffffffe8, 0xffffffc8, }, 
			new uint [] {0x6e, 0x4e, 0xfffffff2, 0xffffffd2, }, new uint [] {0x6d, 0x4d, 0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x2c, 0x3c, 0xffffffe1, 0xffffffc1, }, new uint [] {0x2e, 0x3e, 0xfffffffe, 0xffffffde, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [31] = new KeyboardLayout (1049, "Russian phonetic keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffd1, 0xfffffff1, }, 
			new uint [] {0x77, 0x57, 0xffffffd7, 0xfffffff7, }, new uint [] {0x65, 0x45, 0xffffffc5, 0xffffffe5, }, 
			new uint [] {0x72, 0x52, 0xffffffd2, 0xfffffff2, }, new uint [] {0x74, 0x54, 0xffffffd4, 0xfffffff4, }, 
			new uint [] {0x79, 0x59, 0xffffffd9, 0xfffffff9, }, new uint [] {0x75, 0x55, 0xffffffd5, 0xfffffff5, }, 
			new uint [] {0x69, 0x49, 0xffffffc9, 0xffffffe9, }, new uint [] {0x6f, 0x4f, 0xffffffcf, 0xffffffef, }, 
			new uint [] {0x70, 0x50, 0xffffffd0, 0xfffffff0, }, new uint [] {0x5b, 0x7b, 0xffffffdb, 0xfffffffb, }, 
			new uint [] {0x5d, 0x7d, 0xffffffdd, 0xfffffffd, }, new uint [] {0x61, 0x41, 0xffffffc1, 0xffffffe1, }, 
			new uint [] {0x73, 0x53, 0xffffffd3, 0xfffffff3, }, new uint [] {0x64, 0x44, 0xffffffc4, 0xffffffe4, }, 
			new uint [] {0x66, 0x46, 0xffffffc6, 0xffffffe6, }, new uint [] {0x67, 0x47, 0xffffffc7, 0xffffffe7, }, 
			new uint [] {0x68, 0x48, 0xffffffc8, 0xffffffe8, }, new uint [] {0x6a, 0x4a, 0xffffffca, 0xffffffea, }, 
			new uint [] {0x6b, 0x4b, 0xffffffcb, 0xffffffeb, }, new uint [] {0x6c, 0x4c, 0xffffffcc, 0xffffffec, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffda, 0xfffffffa, }, 
			new uint [] {0x78, 0x58, 0xffffffd8, 0xfffffff8, }, new uint [] {0x63, 0x43, 0xffffffc3, 0xffffffe3, }, 
			new uint [] {0x76, 0x56, 0xffffffd6, 0xfffffff6, }, new uint [] {0x62, 0x42, 0xffffffc2, 0xffffffe2, }, 
			new uint [] {0x6e, 0x4e, 0xffffffce, 0xffffffee, }, new uint [] {0x6d, 0x4d, 0xffffffcd, 0xffffffed, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [32] = new KeyboardLayout (1058, "Ukrainian keyboard layout KOI8-U", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, 0xffffffad, 0xffffffbd, }, new uint [] {0x31, 0x21, 0x31, 0x21, }, 
			new uint [] {0x32, 0x40, 0x32, 0x22, }, new uint [] {0x33, 0x23, 0x33, 0x27, }, 
			new uint [] {0x34, 0x24, 0x34, 0x2a, }, new uint [] {0x35, 0x25, 0x35, 0x3a, }, 
			new uint [] {0x36, 0x5e, 0x36, 0x2c, }, new uint [] {0x37, 0x26, 0x37, 0x2e, }, 
			new uint [] {0x38, 0x2a, 0x38, 0x3b, }, new uint [] {0x39, 0x28, 0x39, 0x28, }, 
			new uint [] {0x30, 0x29, 0x30, 0x29, }, new uint [] {0x2d, 0x5f, 0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, 0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffca, 0xffffffea, }, 
			new uint [] {0x77, 0x57, 0xffffffc3, 0xffffffe3, }, new uint [] {0x65, 0x45, 0xffffffd5, 0xfffffff5, }, 
			new uint [] {0x72, 0x52, 0xffffffcb, 0xffffffeb, }, new uint [] {0x74, 0x54, 0xffffffc5, 0xffffffe5, }, 
			new uint [] {0x79, 0x59, 0xffffffce, 0xffffffee, }, new uint [] {0x75, 0x55, 0xffffffc7, 0xffffffe7, }, 
			new uint [] {0x69, 0x49, 0xffffffdb, 0xfffffffb, }, new uint [] {0x6f, 0x4f, 0xffffffdd, 0xfffffffd, }, 
			new uint [] {0x70, 0x50, 0xffffffda, 0xfffffffa, }, new uint [] {0x5b, 0x7b, 0xffffffc8, 0xffffffe8, }, 
			new uint [] {0x5d, 0x7d, 0xffffffa7, 0xffffffb7, }, new uint [] {0x61, 0x41, 0xffffffc6, 0xffffffe6, }, 
			new uint [] {0x73, 0x53, 0xffffffa6, 0xffffffb6, }, new uint [] {0x64, 0x44, 0xffffffd7, 0xfffffff7, }, 
			new uint [] {0x66, 0x46, 0xffffffc1, 0xffffffe1, }, new uint [] {0x67, 0x47, 0xffffffd0, 0xfffffff0, }, 
			new uint [] {0x68, 0x48, 0xffffffd2, 0xfffffff2, }, new uint [] {0x6a, 0x4a, 0xffffffcf, 0xffffffef, }, 
			new uint [] {0x6b, 0x4b, 0xffffffcc, 0xffffffec, }, new uint [] {0x6c, 0x4c, 0xffffffc4, 0xffffffe4, }, 
			new uint [] {0x3b, 0x3a, 0xffffffd6, 0xfffffff6, }, new uint [] {0x27, 0x22, 0xffffffa4, 0xffffffb4, }, 
			new uint [] {0x5c, 0x7c, 0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffd1, 0xfffffff1, }, 
			new uint [] {0x78, 0x58, 0xffffffde, 0xfffffffe, }, new uint [] {0x63, 0x43, 0xffffffd3, 0xfffffff3, }, 
			new uint [] {0x76, 0x56, 0xffffffcd, 0xffffffed, }, new uint [] {0x62, 0x42, 0xffffffc9, 0xffffffe9, }, 
			new uint [] {0x6e, 0x4e, 0xffffffd4, 0xfffffff4, }, new uint [] {0x6d, 0x4d, 0xffffffd8, 0xfffffff8, }, 
			new uint [] {0x2c, 0x3c, 0xffffffc2, 0xffffffe2, }, new uint [] {0x2e, 0x3e, 0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2f, 0x3f, 0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [33] = new KeyboardLayout (1058, "Ukrainian keyboard layout (standard)", 0, 0, new uint [][] {
			new uint [] {0xffffffad, 0xffffffbd, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x27, }, 
			new uint [] {0x34, 0x3b, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x3a, }, new uint [] {0x37, 0x3f, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0xffffffca, 0xffffffea, }, 
			new uint [] {0xffffffc3, 0xffffffe3, }, new uint [] {0xffffffd5, 0xfffffff5, }, 
			new uint [] {0xffffffcb, 0xffffffeb, }, new uint [] {0xffffffc5, 0xffffffe5, }, 
			new uint [] {0xffffffce, 0xffffffee, }, new uint [] {0xffffffc7, 0xffffffe7, }, 
			new uint [] {0xffffffdb, 0xfffffffb, }, new uint [] {0xffffffdd, 0xfffffffd, }, 
			new uint [] {0xffffffda, 0xfffffffa, }, new uint [] {0xffffffc8, 0xffffffe8, }, 
			new uint [] {0xffffffa7, 0xffffffb7, }, new uint [] {0xffffffc6, 0xffffffe6, }, 
			new uint [] {0xffffffa6, 0xffffffb6, }, new uint [] {0xffffffd7, 0xfffffff7, }, 
			new uint [] {0xffffffc1, 0xffffffe1, }, new uint [] {0xffffffd0, 0xfffffff0, }, 
			new uint [] {0xffffffd2, 0xfffffff2, }, new uint [] {0xffffffcf, 0xffffffef, }, 
			new uint [] {0xffffffcc, 0xffffffec, }, new uint [] {0xffffffc4, 0xffffffe4, }, 
			new uint [] {0xffffffd6, 0xfffffff6, }, new uint [] {0xffffffa4, 0xffffffb4, }, 
			new uint [] {0x5c, 0x2f, }, new uint [] {0xffffffd1, 0xfffffff1, }, 
			new uint [] {0xffffffde, 0xfffffffe, }, new uint [] {0xffffffd3, 0xfffffff3, }, 
			new uint [] {0xffffffcd, 0xffffffed, }, new uint [] {0xffffffc9, 0xffffffe9, }, 
			new uint [] {0xffffffd4, 0xfffffff4, }, new uint [] {0xffffffd8, 0xfffffff8, }, 
			new uint [] {0xffffffc2, 0xffffffe2, }, new uint [] {0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2e, 0x2c, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [34] = new KeyboardLayout (1049, "Russian keyboard layout (standard)", 0, 0, new uint [][] {
			new uint [] {0xffffffa3, 0xffffffb3, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x27, }, 
			new uint [] {0x34, 0x3b, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x3a, }, new uint [] {0x37, 0x3f, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0xffffffca, 0xffffffea, }, 
			new uint [] {0xffffffc3, 0xffffffe3, }, new uint [] {0xffffffd5, 0xfffffff5, }, 
			new uint [] {0xffffffcb, 0xffffffeb, }, new uint [] {0xffffffc5, 0xffffffe5, }, 
			new uint [] {0xffffffce, 0xffffffee, }, new uint [] {0xffffffc7, 0xffffffe7, }, 
			new uint [] {0xffffffdb, 0xfffffffb, }, new uint [] {0xffffffdd, 0xfffffffd, }, 
			new uint [] {0xffffffda, 0xfffffffa, }, new uint [] {0xffffffc8, 0xffffffe8, }, 
			new uint [] {0xffffffdf, 0xffffffff, }, new uint [] {0xffffffc6, 0xffffffe6, }, 
			new uint [] {0xffffffd9, 0xfffffff9, }, new uint [] {0xffffffd7, 0xfffffff7, }, 
			new uint [] {0xffffffc1, 0xffffffe1, }, new uint [] {0xffffffd0, 0xfffffff0, }, 
			new uint [] {0xffffffd2, 0xfffffff2, }, new uint [] {0xffffffcf, 0xffffffef, }, 
			new uint [] {0xffffffcc, 0xffffffec, }, new uint [] {0xffffffc4, 0xffffffe4, }, 
			new uint [] {0xffffffd6, 0xfffffff6, }, new uint [] {0xffffffdc, 0xfffffffc, }, 
			new uint [] {0x5c, 0x2f, }, new uint [] {0xffffffd1, 0xfffffff1, }, 
			new uint [] {0xffffffde, 0xfffffffe, }, new uint [] {0xffffffd3, 0xfffffff3, }, 
			new uint [] {0xffffffcd, 0xffffffed, }, new uint [] {0xffffffc9, 0xffffffe9, }, 
			new uint [] {0xffffffd4, 0xfffffff4, }, new uint [] {0xffffffd8, 0xfffffff8, }, 
			new uint [] {0xffffffc2, 0xffffffe2, }, new uint [] {0xffffffc0, 0xffffffe0, }, 
			new uint [] {0x2e, 0x2c, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [35] = new KeyboardLayout (1034, "Spanish keyboard layout", 0, 0, new uint [][] {
			new uint [] {0xffffffba, 0xffffffaa, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0xffffffb7, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0xffffffa1, 0xffffffbf, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x60, 0x5e, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff1, 0xffffffd1, }, new uint [] {0xffffffb4, 0xffffffa8, }, 
			new uint [] {0xffffffe7, 0xffffffc7, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [36] = new KeyboardLayout (1040, "Italian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x5c, 0x7c, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0xffffffa3, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0xffffffec, 0x5e, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffe8, 0xffffffe9, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff2, 0xffffffe7, }, new uint [] {0xffffffe0, 0xffffffb0, }, 
			new uint [] {0xfffffff9, 0xffffffa7, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [37] = new KeyboardLayout (1039, "Icelandic keyboard layout", 0, 0, new uint [][] {
			new uint [] {0xffffffb0, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0xfffffff6, 0xffffffd6, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffff0, 0xffffffd0, }, 
			new uint [] {0x27, 0x3f, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe6, 0xffffffc6, }, new uint [] {0xffffffb4, 0xffffffc4, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0xfffffffe, 0xffffffde, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [38] = new KeyboardLayout (1038, "Hungarian keyboard layout", 0, 1, new uint [][] {
			new uint [] {0x30, 0xffffffa7, }, new uint [] {0x31, 0x27, 0x7e, }, 
			new uint [] {0x32, 0x22, 0xffffffb7, }, new uint [] {0x33, 0x2b, 0x5e, }, 
			new uint [] {0x34, 0x21, 0xffffffa2, }, new uint [] {0x35, 0x25, 0x30, 0xffffffb0, }, 
			new uint [] {0x36, 0x2f, 0xffffffb2, }, new uint [] {0x37, 0x3d, 0x60, }, 
			new uint [] {0x38, 0x28, 0xffffffff, }, new uint [] {0x39, 0x29, 0xffffffb4, }, 
			new uint [] {0xfffffff6, 0xffffffd6, 0xffffffbd, }, new uint [] {0xfffffffc, 0xffffffdc, 0xffffffa8, }, 
			new uint [] {0xfffffff3, 0xffffffd3, 0xffffffb8, }, new uint [] {0x71, 0x51, 0x5c, }, 
			new uint [] {0x77, 0x57, 0x7c, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, 0xffffffcd, }, new uint [] {0x6f, 0x4f, 0xfffffff8, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffff5, 0xffffffd5, 0xfffffff7, }, 
			new uint [] {0xfffffffa, 0xffffffda, 0xffffffd7, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, 0xfffffff0, }, new uint [] {0x64, 0x44, 0xffffffd0, }, 
			new uint [] {0x66, 0x46, 0x5b, }, new uint [] {0x67, 0x47, 0x5d, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, 0xffffffed, }, 
			new uint [] {0x6b, 0x4b, 0xffffffb3, }, new uint [] {0x6c, 0x4c, 0xffffffa3, }, 
			new uint [] {0xffffffe9, 0xffffffc9, 0x24, }, new uint [] {0xffffffe1, 0xffffffc1, 0xffffffdf, }, 
			new uint [] {0xfffffffb, 0xffffffdb, 0xffffffa4, }, new uint [] {0x79, 0x59, 0x3e, }, 
			new uint [] {0x78, 0x58, 0x23, }, new uint [] {0x63, 0x43, 0x26, }, 
			new uint [] {0x76, 0x56, 0x40, }, new uint [] {0x62, 0x42, 0x7b, }, 
			new uint [] {0x6e, 0x4e, 0x7d, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3f, 0x3b, }, new uint [] {0x2e, 0x3a, 0x3e, }, 
			new uint [] {0x2d, 0x5f, 0x2a, }, new uint [] {0xffffffed, 0xffffffcd, 0x3c, }, 
			new uint [] {}, 		});
		table [39] = new KeyboardLayout (1045, "Polish (programmer's) keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, 0xffffffa7, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, 0xffffffea, 0xffffffca, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, 0xfffffff3, 0xffffffd3, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, 0xffffffb1, 0xffffffa1, }, 
			new uint [] {0x73, 0x53, 0xffffffb6, 0xffffffa6, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, 0xffffffb3, 0xffffffa3, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffbf, 0xffffffaf, }, 
			new uint [] {0x78, 0x58, 0xffffffbc, 0xffffffac, }, new uint [] {0x63, 0x43, 0xffffffe6, 0xffffffc6, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, 0xfffffff1, 0xffffffd1, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, 0x7c, }, 
			new uint [] {}, 		});
		table [40] = new KeyboardLayout (1060, "Slovenian keyboard layout", 0, 1, new uint [][] {
			new uint [] {0xffffffb8, 0xffffffa8, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffb9, 0xffffffa9, }, 
			new uint [] {0xfffffff0, 0xffffffd0, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe8, 0xffffffc8, }, new uint [] {0xffffffe6, 0xffffffc6, }, 
			new uint [] {0xffffffbe, 0xffffffae, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [41] = new KeyboardLayout (3098, "Serbian keyboard layout sr", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0xffffffa9, 0xffffffb9, }, 
			new uint [] {0xffffffaa, 0xffffffba, }, new uint [] {0xffffffc5, 0xffffffe5, }, 
			new uint [] {0xffffffd2, 0xfffffff2, }, new uint [] {0xffffffd4, 0xfffffff4, }, 
			new uint [] {0xffffffda, 0xfffffffa, }, new uint [] {0xffffffd5, 0xfffffff5, }, 
			new uint [] {0xffffffc9, 0xffffffe9, }, new uint [] {0xffffffcf, 0xffffffef, }, 
			new uint [] {0xffffffd0, 0xfffffff0, }, new uint [] {0xffffffdb, 0xfffffffb, }, 
			new uint [] {0x5b, 0x5d, }, new uint [] {0xffffffc1, 0xffffffe1, }, 
			new uint [] {0xffffffd3, 0xfffffff3, }, new uint [] {0xffffffc4, 0xffffffe4, }, 
			new uint [] {0xffffffc6, 0xffffffe6, }, new uint [] {0xffffffc7, 0xffffffe7, }, 
			new uint [] {0xffffffc8, 0xffffffe8, }, new uint [] {0xffffffa8, 0xffffffb8, }, 
			new uint [] {0xffffffcb, 0xffffffeb, }, new uint [] {0xffffffcc, 0xffffffec, }, 
			new uint [] {0xffffffde, 0xfffffffe, }, new uint [] {0xffffffab, 0xffffffbb, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0xffffffa1, 0xffffffb1, }, 
			new uint [] {0xffffffaf, 0xffffffbf, }, new uint [] {0xffffffc3, 0xffffffe3, }, 
			new uint [] {0xffffffd7, 0xfffffff7, }, new uint [] {0xffffffc2, 0xffffffe2, }, 
			new uint [] {0xffffffce, 0xffffffee, }, new uint [] {0xffffffcd, 0xffffffed, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0xffffffd6, 0xfffffff6, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [42] = new KeyboardLayout (3098, "Serbian keyboard layout us,sr", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, 0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, 0x36, 0x26, }, new uint [] {0x37, 0x26, 0x37, 0x2f, }, 
			new uint [] {0x38, 0x2a, 0x38, 0x28, }, new uint [] {0x39, 0x28, 0x39, 0x29, }, 
			new uint [] {0x30, 0x29, 0x30, 0x3d, }, new uint [] {0x2d, 0x5f, 0x27, 0x3f, }, 
			new uint [] {0x3d, 0x2b, 0x2b, 0x2a, }, new uint [] {0x71, 0x51, 0xffffffa9, 0xffffffb9, }, 
			new uint [] {0x77, 0x57, 0xffffffaa, 0xffffffba, }, new uint [] {0x65, 0x45, 0xffffffc5, 0xffffffe5, }, 
			new uint [] {0x72, 0x52, 0xffffffd2, 0xfffffff2, }, new uint [] {0x74, 0x54, 0xffffffd4, 0xfffffff4, }, 
			new uint [] {0x79, 0x59, 0xffffffda, 0xfffffffa, }, new uint [] {0x75, 0x55, 0xffffffd5, 0xfffffff5, }, 
			new uint [] {0x69, 0x49, 0xffffffc9, 0xffffffe9, }, new uint [] {0x6f, 0x4f, 0xffffffcf, 0xffffffef, }, 
			new uint [] {0x70, 0x50, 0xffffffd0, 0xfffffff0, }, new uint [] {0x5b, 0x7b, 0xffffffdb, 0xfffffffb, }, 
			new uint [] {0x5d, 0x7d, 0x5b, 0x5d, }, new uint [] {0x61, 0x41, 0xffffffc1, 0xffffffe1, }, 
			new uint [] {0x73, 0x53, 0xffffffd3, 0xfffffff3, }, new uint [] {0x64, 0x44, 0xffffffc4, 0xffffffe4, }, 
			new uint [] {0x66, 0x46, 0xffffffc6, 0xffffffe6, }, new uint [] {0x67, 0x47, 0xffffffc7, 0xffffffe7, }, 
			new uint [] {0x68, 0x48, 0xffffffc8, 0xffffffe8, }, new uint [] {0x6a, 0x4a, 0xffffffa8, 0xffffffb8, }, 
			new uint [] {0x6b, 0x4b, 0xffffffcb, 0xffffffeb, }, new uint [] {0x6c, 0x4c, 0xffffffcc, 0xffffffec, }, 
			new uint [] {0x3b, 0x3a, 0xffffffde, 0xfffffffe, }, new uint [] {0x27, 0x22, 0xffffffab, 0xffffffbb, }, 
			new uint [] {0x5c, 0x7c, 0x2d, 0x5f, }, new uint [] {0x7a, 0x5a, 0xffffffa1, 0xffffffb1, }, 
			new uint [] {0x78, 0x58, 0xffffffaf, 0xffffffbf, }, new uint [] {0x63, 0x43, 0xffffffc3, 0xffffffe3, }, 
			new uint [] {0x76, 0x56, 0xffffffd7, 0xfffffff7, }, new uint [] {0x62, 0x42, 0xffffffc2, 0xffffffe2, }, 
			new uint [] {0x6e, 0x4e, 0xffffffce, 0xffffffee, }, new uint [] {0x6d, 0x4d, 0xffffffcd, 0xffffffed, }, 
			new uint [] {0x2c, 0x3c, 0x2c, 0x3b, }, new uint [] {0x2e, 0x3e, 0x2e, 0x3a, }, 
			new uint [] {0x2f, 0x3f, 0xffffffd6, 0xfffffff6, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [43] = new KeyboardLayout (1050, "Croatian keyboard layout", 0, 1, new uint [][] {
			new uint [] {0xffffffb8, 0xffffffa8, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffb9, 0xffffffa9, }, 
			new uint [] {0xfffffff0, 0xffffffd0, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffe8, 0xffffffc8, }, new uint [] {0xffffffe6, 0xffffffc6, }, 
			new uint [] {0xffffffbe, 0xffffffae, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [44] = new KeyboardLayout (1050, "Croatian keyboard layout (specific)", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x5b, 0x7b, 0xffffffb9, 0xffffffa9, }, 
			new uint [] {0x5d, 0x7d, 0xfffffff0, 0xffffffd0, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x3a, 0xffffffe8, 0xffffffc8, }, new uint [] {0x27, 0x22, 0xffffffe6, 0xffffffc6, }, 
			new uint [] {0x5c, 0x7c, 0xffffffbe, 0xffffffae, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, 0x7c, }, 
			new uint [] {}, 		});
		table [45] = new KeyboardLayout (1041, "Japanese 106 keyboard layout", 3, 7, new uint [][] {
			new uint [] {0x31, 0x21, }, new uint [] {0x32, 0x22, }, 
			new uint [] {0x33, 0x23, }, new uint [] {0x34, 0x24, }, 
			new uint [] {0x35, 0x25, }, new uint [] {0x36, 0x26, }, 
			new uint [] {0x37, 0x27, }, new uint [] {0x38, 0x28, }, 
			new uint [] {0x39, 0x29, }, new uint [] {0x30, 0x7e, }, 
			new uint [] {0x2d, 0x3d, }, new uint [] {0x5e, 0x7e, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x40, 0x60, }, 
			new uint [] {0x5b, 0x7b, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x2b, }, new uint [] {0x3a, 0x2a, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x5c, 0x5f, }, 
			new uint [] {}, 		});
		table [46] = new KeyboardLayout (1041, "Japanese pc98x1 keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x31, 0x21, }, new uint [] {0x32, 0x22, }, 
			new uint [] {0x33, 0x23, }, new uint [] {0x34, 0x24, }, 
			new uint [] {0x35, 0x25, }, new uint [] {0x36, 0x26, }, 
			new uint [] {0x37, 0x27, }, new uint [] {0x38, 0x28, }, 
			new uint [] {0x39, 0x29, }, new uint [] {0x30, }, 
			new uint [] {0x2d, 0x3d, }, new uint [] {0x5e, 0x60, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x40, 0x7e, }, 
			new uint [] {0x5b, 0x7b, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x3b, 0x2b, }, new uint [] {0x3a, 0x2a, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x5c, 0x5f, }, 
			new uint [] {}, 		});
		table [47] = new KeyboardLayout (1051, "Slovak keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x3b, 0x30, }, new uint [] {0x2b, 0x31, }, 
			new uint [] {0xffffffb5, 0x32, }, new uint [] {0xffffffb9, 0x33, }, 
			new uint [] {0xffffffe8, 0x34, }, new uint [] {0xffffffbb, 0x35, }, 
			new uint [] {0xffffffbe, 0x36, }, new uint [] {0xfffffffd, 0x37, }, 
			new uint [] {0xffffffe1, 0x38, }, new uint [] {0xffffffed, 0x39, }, 
			new uint [] {0xffffffe9, 0x30, }, new uint [] {0x3d, 0x25, }, 
			new uint [] {0x27, 0x76, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffa, 0x2f, }, 
			new uint [] {0xffffffe4, 0x28, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff4, 0x22, }, new uint [] {0xffffffa7, 0x21, }, 
			new uint [] {0xfffffff2, 0x29, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3f, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [48] = new KeyboardLayout (1051, "Slovak and Czech keyboard layout without dead keys", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x77, 0x57, 0xffffffec, 0xffffffcc, }, new uint [] {0x65, 0x45, 0xffffffe9, 0xffffffc9, }, 
			new uint [] {0x72, 0x52, 0xfffffff8, 0xffffffd8, }, new uint [] {0x74, 0x54, 0xffffffbb, 0xffffffab, }, 
			new uint [] {0x79, 0x59, 0xfffffffd, 0xffffffdd, }, new uint [] {0x75, 0x55, 0xfffffff9, 0xffffffd9, }, 
			new uint [] {0x69, 0x49, 0xffffffed, 0xffffffcd, }, new uint [] {0x6f, 0x4f, 0xfffffff3, 0xffffffd3, }, 
			new uint [] {0x70, 0x50, 0xfffffff6, 0xffffffd6, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, 0xffffffe1, 0xffffffc1, }, 
			new uint [] {0x73, 0x53, 0xffffffb9, 0xffffffa9, }, new uint [] {0x64, 0x44, 0xffffffef, 0xffffffcf, }, 
			new uint [] {0x66, 0x46, 0xffffffeb, 0xffffffcb, }, new uint [] {0x67, 0x47, 0xffffffe0, 0xffffffc0, }, 
			new uint [] {0x68, 0x48, 0xfffffffa, 0xffffffda, }, new uint [] {0x6a, 0x4a, 0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x6b, 0x4b, 0xfffffff4, 0xffffffd4, }, new uint [] {0x6c, 0x4c, 0xffffffb5, 0xffffffa5, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffbe, 0xffffffae, }, 
			new uint [] {0x78, 0x58, 0xffffffa4, }, new uint [] {0x63, 0x43, 0xffffffe8, 0xffffffc8, }, 
			new uint [] {0x76, 0x56, 0xffffffe7, 0xffffffc7, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, 0xfffffff2, 0xffffffd2, }, new uint [] {0x6d, 0x4d, 0xffffffe5, 0xffffffc5, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [49] = new KeyboardLayout (1029, "Czech keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x3b, }, new uint [] {0x2b, 0x31, }, 
			new uint [] {0xffffffec, 0x32, }, new uint [] {0xffffffb9, 0x33, }, 
			new uint [] {0xffffffe8, 0x34, }, new uint [] {0xfffffff8, 0x35, }, 
			new uint [] {0xffffffbe, 0x36, }, new uint [] {0xfffffffd, 0x37, }, 
			new uint [] {0xffffffe1, 0x38, }, new uint [] {0xffffffed, 0x39, }, 
			new uint [] {0xffffffe9, 0x30, 0xffffffbd, 0x29, }, new uint [] {0x3d, 0x25, }, 
			new uint [] {}, new uint [] {0x71, 0x51, 0x5c, }, 
			new uint [] {0x77, 0x57, 0x7c, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffa, 0x2f, 0x5b, 0x7b, }, 
			new uint [] {0x29, 0x28, 0x5d, 0x7d, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, 0xfffffff0, }, new uint [] {0x64, 0x44, 0xffffffd0, }, 
			new uint [] {0x66, 0x46, 0x5b, }, new uint [] {0x67, 0x47, 0x5d, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, 0xffffffb3, }, new uint [] {0x6c, 0x4c, 0xffffffa3, }, 
			new uint [] {0xfffffff9, 0x22, 0x24, }, new uint [] {0xffffffa7, 0x21, 0xffffffdf, }, 
			new uint [] {0xffffffa8, 0x27, }, new uint [] {0x7a, 0x5a, 0x3e, }, 
			new uint [] {0x78, 0x58, 0x23, }, new uint [] {0x63, 0x43, 0x26, }, 
			new uint [] {0x76, 0x56, 0x40, }, new uint [] {0x62, 0x42, 0x7b, }, 
			new uint [] {0x6e, 0x4e, 0x7d, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3f, 0x3c, }, new uint [] {0x2e, 0x3a, 0x3e, }, 
			new uint [] {0x2d, 0x5f, 0x2a, }, new uint [] {0x3c, 0x3e, 0x5c, 0x7c, }, 
			new uint [] {}, 		});
		table [50] = new KeyboardLayout (1029, "Czech keyboard layout cz", 0, 1, new uint [][] {
			new uint [] {0x3b, }, new uint [] {0x2b, 0x31, }, 
			new uint [] {0xffffffec, 0x32, }, new uint [] {0xffffffb9, 0x33, }, 
			new uint [] {0xffffffe8, 0x34, }, new uint [] {0xfffffff8, 0x35, }, 
			new uint [] {0xffffffbe, 0x36, }, new uint [] {0xfffffffd, 0x37, }, 
			new uint [] {0xffffffe1, 0x38, }, new uint [] {0xffffffed, 0x39, }, 
			new uint [] {0xffffffe9, 0x30, }, new uint [] {0x3d, 0x25, }, 
			new uint [] {0xffffffb4, 0xffffffb7, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffa, 0x2f, }, 
			new uint [] {0x29, 0x28, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff9, 0x22, }, new uint [] {0xffffffa7, 0x21, }, 
			new uint [] {0xffffffa8, 0x27, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3f, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x5c, }, 
			new uint [] {}, 		});
		table [51] = new KeyboardLayout (1029, "Czech keyboard layout cz_qwerty", 0, 0, new uint [][] {
			new uint [] {0x3b, }, new uint [] {0x2b, 0x31, }, 
			new uint [] {0xffffffec, 0x32, }, new uint [] {0xffffffb9, 0x33, }, 
			new uint [] {0xffffffe8, 0x34, }, new uint [] {0xfffffff8, 0x35, }, 
			new uint [] {0xffffffbe, 0x36, }, new uint [] {0xfffffffd, 0x37, }, 
			new uint [] {0xffffffe1, 0x38, }, new uint [] {0xffffffed, 0x39, }, 
			new uint [] {0xffffffe9, 0x30, }, new uint [] {0x3d, 0x25, }, 
			new uint [] {0xffffffb4, 0xffffffb7, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffffa, 0x2f, }, 
			new uint [] {0x29, 0x28, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff9, 0x22, }, new uint [] {0xffffffa7, 0x21, }, 
			new uint [] {0xffffffa8, 0x27, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3f, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x5c, }, 
			new uint [] {}, 		});
		table [52] = new KeyboardLayout (1034, "Latin American keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x7c, 0xffffffb0, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x27, 0x3f, }, 
			new uint [] {0xffffffbf, 0xffffffa1, }, new uint [] {0x71, 0x51, 0x40, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffb4, 0xffffffa8, }, 
			new uint [] {0x2b, 0x2a, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffff1, 0xffffffd1, }, new uint [] {0x7b, 0x5b, 0x5e, }, 
			new uint [] {0x7d, 0x5d, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [53] = new KeyboardLayout (1063, "Lithuanian (Baltic) keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0xffffffe0, 0xffffffc0, }, 
			new uint [] {0xffffffe8, 0xffffffc8, }, new uint [] {0xffffffe6, 0xffffffc6, }, 
			new uint [] {0xffffffeb, 0xffffffcb, }, new uint [] {0xffffffe1, 0xffffffc1, }, 
			new uint [] {0xfffffff0, 0xffffffd0, }, new uint [] {0xfffffff8, 0xffffffd8, }, 
			new uint [] {0xfffffffb, 0xffffffdb, }, new uint [] {0xffffffa5, 0x28, }, 
			new uint [] {0xffffffb4, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0xfffffffe, 0xffffffde, }, new uint [] {0x5c, 0x7c, }, 
			new uint [] {0x71, 0x51, }, new uint [] {0x77, 0x57, }, 
			new uint [] {0x65, 0x45, }, new uint [] {0x72, 0x52, }, 
			new uint [] {0x74, 0x54, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x75, 0x55, }, new uint [] {0x69, 0x49, }, 
			new uint [] {0x6f, 0x4f, }, new uint [] {0x70, 0x50, }, 
			new uint [] {0x5b, 0x7b, }, new uint [] {0x5d, 0x7d, }, 
			new uint [] {0x61, 0x41, }, new uint [] {0x73, 0x53, }, 
			new uint [] {0x64, 0x44, }, new uint [] {0x66, 0x46, }, 
			new uint [] {0x67, 0x47, }, new uint [] {0x68, 0x48, }, 
			new uint [] {0x6a, 0x4a, }, new uint [] {0x6b, 0x4b, }, 
			new uint [] {0x6c, 0x4c, }, new uint [] {0x3b, 0x3a, }, 
			new uint [] {0x27, 0x22, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {}, 
			new uint [] {}, 		});
		table [54] = new KeyboardLayout (1055, "Turkish keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x22, 0xffffffe9, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x27, }, new uint [] {0x33, 0x5e, 0x23, }, 
			new uint [] {0x34, 0x2b, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, 0x7b, }, 
			new uint [] {0x38, 0x28, 0x5b, }, new uint [] {0x39, 0x29, 0x5d, }, 
			new uint [] {0x30, 0x3d, 0x7d, }, new uint [] {0x2a, 0x3f, 0x5c, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x71, 0x51, 0x40, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0xfffffffd, 0x49, 0xffffffee, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xfffffff0, 0xffffffd0, }, 
			new uint [] {0xfffffffc, 0xffffffdc, 0x7e, }, new uint [] {0x61, 0x41, 0xffffffe6, }, 
			new uint [] {0x73, 0x53, 0xffffffdf, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xfffffffe, 0xffffffde, }, new uint [] {0x69, 0xffffffdd, }, 
			new uint [] {0x2c, 0x3b, 0x60, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe7, 0xffffffc7, }, 
			new uint [] {0x2e, 0x3a, }, new uint [] {}, 
			new uint [] {}, 		});
		table [55] = new KeyboardLayout (1055, "Turkish keyboard layout tr", 0, 0, new uint [][] {
			new uint [] {0x22, 0x5c, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x27, }, new uint [] {0x33, 0x5e, }, 
			new uint [] {0x34, 0x2b, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x2f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x2a, 0x3f, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0xffffffb9, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffbb, 0xffffffab, }, 
			new uint [] {0xfffffffc, 0xffffffdc, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0xffffffba, 0xffffffaa, }, new uint [] {0x69, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0xffffffe7, 0xffffffc7, }, 
			new uint [] {0x2e, 0x3a, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [56] = new KeyboardLayout (1055, "Turkish keyboard layout trf", 0, 0, new uint [][] {
			new uint [] {0x2b, 0x2a, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x5e, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x27, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x3d, }, new uint [] {0x2f, 0x3f, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x66, 0x46, }, 
			new uint [] {0x67, 0x47, }, new uint [] {0xffffffbb, 0xffffffab, }, 
			new uint [] {0xffffffb9, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x64, 0x44, }, new uint [] {0x72, 0x52, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x68, 0x48, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x61, 0x41, }, new uint [] {0xfffffffc, 0xffffffdc, }, 
			new uint [] {0x74, 0x54, }, new uint [] {0x6b, 0x4b, }, 
			new uint [] {0x6d, 0x4d, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0xffffffba, 0xffffffaa, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0xfffffff6, 0xffffffd6, }, new uint [] {0x76, 0x56, }, 
			new uint [] {0x63, 0x43, }, new uint [] {0xffffffe7, 0xffffffc7, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {0x73, 0x53, }, 
			new uint [] {0x62, 0x42, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [57] = new KeyboardLayout (1037, "Israelian keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, 0x3b, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0x2f, }, 
			new uint [] {0x77, 0x57, 0x27, }, new uint [] {0x65, 0x45, 0xfffffff7, }, 
			new uint [] {0x72, 0x52, 0xfffffff8, }, new uint [] {0x74, 0x54, 0xffffffe0, }, 
			new uint [] {0x79, 0x59, 0xffffffe8, }, new uint [] {0x75, 0x55, 0xffffffe5, }, 
			new uint [] {0x69, 0x49, 0xffffffef, }, new uint [] {0x6f, 0x4f, 0xffffffed, }, 
			new uint [] {0x70, 0x50, 0xfffffff4, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, 0xfffffff9, }, 
			new uint [] {0x73, 0x53, 0xffffffe3, }, new uint [] {0x64, 0x44, 0xffffffe2, }, 
			new uint [] {0x66, 0x46, 0xffffffeb, }, new uint [] {0x67, 0x47, 0xfffffff2, }, 
			new uint [] {0x68, 0x48, 0xffffffe9, }, new uint [] {0x6a, 0x4a, 0xffffffe7, }, 
			new uint [] {0x6b, 0x4b, 0xffffffec, }, new uint [] {0x6c, 0x4c, 0xffffffea, }, 
			new uint [] {0x3b, 0x3a, 0xfffffff3, }, new uint [] {0x27, 0x22, 0x2c, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffe6, }, 
			new uint [] {0x78, 0x58, 0xfffffff1, }, new uint [] {0x63, 0x43, 0xffffffe1, }, 
			new uint [] {0x76, 0x56, 0xffffffe4, }, new uint [] {0x62, 0x42, 0xfffffff0, }, 
			new uint [] {0x6e, 0x4e, 0xffffffee, }, new uint [] {0x6d, 0x4d, 0xfffffff6, }, 
			new uint [] {0x2c, 0x3c, 0xfffffffa, }, new uint [] {0x2e, 0x3e, 0xfffffff5, }, 
			new uint [] {0x2f, 0x3f, 0x2e, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [58] = new KeyboardLayout (1037, "Israelian phonetic keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xfffffff7, }, 
			new uint [] {0x77, 0x57, 0xffffffe5, }, new uint [] {0x65, 0x45, 0xffffffe0, }, 
			new uint [] {0x72, 0x52, 0xfffffff8, }, new uint [] {0x74, 0x54, 0xfffffffa, }, 
			new uint [] {0x79, 0x59, 0xfffffff2, }, new uint [] {0x75, 0x55, 0xffffffe5, }, 
			new uint [] {0x69, 0x49, 0xffffffe9, }, new uint [] {0x6f, 0x4f, 0xfffffff1, }, 
			new uint [] {0x70, 0x50, 0xfffffff4, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, 0xffffffe0, }, 
			new uint [] {0x73, 0x53, 0xfffffff9, }, new uint [] {0x64, 0x44, 0xffffffe3, }, 
			new uint [] {0x66, 0x46, 0xfffffff4, }, new uint [] {0x67, 0x47, 0xffffffe2, }, 
			new uint [] {0x68, 0x48, 0xffffffe4, }, new uint [] {0x6a, 0x4a, 0xffffffe9, }, 
			new uint [] {0x6b, 0x4b, 0xffffffeb, }, new uint [] {0x6c, 0x4c, 0xffffffec, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffe6, }, 
			new uint [] {0x78, 0x58, 0xffffffe7, }, new uint [] {0x63, 0x43, 0xfffffff6, }, 
			new uint [] {0x76, 0x56, 0xffffffe5, }, new uint [] {0x62, 0x42, 0xffffffe1, }, 
			new uint [] {0x6e, 0x4e, 0xfffffff0, }, new uint [] {0x6d, 0x4d, 0xffffffee, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [59] = new KeyboardLayout (1037, "Israelian Saharon keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0xfffffff7, }, 
			new uint [] {0x77, 0x57, 0xfffffff1, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, 0xfffffff8, }, new uint [] {0x74, 0x54, 0xffffffe8, }, 
			new uint [] {0x79, 0x59, 0xffffffe3, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, 0xfffffff4, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, 0xffffffe0, }, 
			new uint [] {0x73, 0x53, 0xffffffe5, }, new uint [] {0x64, 0x44, 0xffffffec, }, 
			new uint [] {0x66, 0x46, 0xfffffffa, }, new uint [] {0x67, 0x47, 0xffffffe2, }, 
			new uint [] {0x68, 0x48, 0xffffffe4, }, new uint [] {0x6a, 0x4a, 0xfffffff9, }, 
			new uint [] {0x6b, 0x4b, 0xffffffeb, }, new uint [] {0x6c, 0x4c, 0xffffffe9, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffe6, }, 
			new uint [] {0x78, 0x58, 0xffffffe7, }, new uint [] {0x63, 0x43, 0xfffffff6, }, 
			new uint [] {0x76, 0x56, 0xfffffff2, }, new uint [] {0x62, 0x42, 0xffffffe1, }, 
			new uint [] {0x6e, 0x4e, 0xfffffff0, }, new uint [] {0x6d, 0x4d, 0xffffffee, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [60] = new KeyboardLayout (1033, "VNC keyboard layout", 4, 8, new uint [][] {
			new uint [] {0x31, 0x21, }, new uint [] {0x32, 0x40, }, 
			new uint [] {0x33, 0x23, }, new uint [] {0x34, 0x24, }, 
			new uint [] {0x35, 0x25, }, new uint [] {0x36, 0x5e, }, 
			new uint [] {0x37, 0x26, }, new uint [] {0x38, 0x2a, }, 
			new uint [] {0x39, 0x28, }, new uint [] {0x30, 0x29, }, 
			new uint [] {0x2d, 0x5f, }, new uint [] {0x3d, 0x2b, }, 
			new uint [] {0x5b, 0x7b, }, new uint [] {0x5d, 0x7d, }, 
			new uint [] {0x3b, 0x3a, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x60, 0x7e, }, new uint [] {0x2c, 0x3c, }, 
			new uint [] {0x2e, 0x3e, }, new uint [] {0x2f, 0x3f, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x62, 0x42, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x64, 0x44, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x69, 0x49, }, 
			new uint [] {0x6a, 0x4a, }, new uint [] {0x6b, 0x4b, }, 
			new uint [] {0x6c, 0x4c, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x73, 0x53, }, 
			new uint [] {0x74, 0x54, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x77, 0x57, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x79, 0x59, }, 
			new uint [] {0x7a, 0x5a, }, new uint [] {}, 
			new uint [] {}, 		});
		table [61] = new KeyboardLayout (1032, "Greek keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x40, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x5e, }, new uint [] {0x37, 0x26, }, 
			new uint [] {0x38, 0x2a, }, new uint [] {0x39, 0x28, }, 
			new uint [] {0x30, 0x29, }, new uint [] {0x2d, 0x5f, }, 
			new uint [] {0x3d, 0x2b, }, new uint [] {0x71, 0x51, 0x3b, 0x3a, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, 0xffffffe5, 0xffffffc5, }, 
			new uint [] {0x72, 0x52, 0xfffffff1, 0xffffffd1, }, new uint [] {0x74, 0x54, 0xfffffff4, 0xffffffd4, }, 
			new uint [] {0x79, 0x59, 0xfffffff5, 0xffffffd5, }, new uint [] {0x75, 0x55, 0xffffffe8, 0xffffffc8, }, 
			new uint [] {0x69, 0x49, 0xffffffe9, 0xffffffc9, }, new uint [] {0x6f, 0x4f, 0xffffffef, 0xffffffcf, }, 
			new uint [] {0x70, 0x50, 0xfffffff0, 0xffffffd0, }, new uint [] {0x5b, 0x7b, }, 
			new uint [] {0x5d, 0x7d, }, new uint [] {0x61, 0x41, 0xffffffe1, 0xffffffc1, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, 0xffffffe4, 0xffffffc4, }, 
			new uint [] {0x66, 0x46, 0xfffffff6, 0xffffffd6, }, new uint [] {0x67, 0x47, 0xffffffe3, 0xffffffc3, }, 
			new uint [] {0x68, 0x48, 0xffffffe7, 0xffffffc7, }, new uint [] {0x6a, 0x4a, 0xffffffee, 0xffffffce, }, 
			new uint [] {0x6b, 0x4b, 0xffffffea, 0xffffffca, }, new uint [] {0x6c, 0x4c, 0xffffffeb, 0xffffffcb, }, 
			new uint [] {0x3b, 0x3a, 0xffffffb4, 0xffffffa8, }, new uint [] {0x27, 0x22, }, 
			new uint [] {0x5c, 0x7c, }, new uint [] {0x7a, 0x5a, 0xffffffe6, 0xffffffc6, }, 
			new uint [] {0x78, 0x58, 0xfffffff7, 0xffffffd7, }, new uint [] {0x63, 0x43, 0xfffffff8, 0xffffffd8, }, 
			new uint [] {0x76, 0x56, 0xfffffff9, 0xffffffd9, }, new uint [] {0x62, 0x42, 0xffffffe2, 0xffffffc2, }, 
			new uint [] {0x6e, 0x4e, 0xffffffed, 0xffffffcd, }, new uint [] {0x6d, 0x4d, 0xffffffec, 0xffffffcc, }, 
			new uint [] {0x2c, 0x3c, }, new uint [] {0x2e, 0x3e, }, 
			new uint [] {0x2f, 0x3f, }, new uint [] {0x3c, 0x3e, }, 
			new uint [] {}, 		});
		table [62] = new KeyboardLayout (1054, "Thai (Kedmanee)  keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x60, 0x7e, 0x5f, 0x25, }, new uint [] {0x31, 0x21, 0xffffffe5, 0x2b, }, 
			new uint [] {0x32, 0x40, 0x2f, 0xfffffff1, }, new uint [] {0x33, 0x23, 0x2d, 0xfffffff2, }, 
			new uint [] {0x34, 0x24, 0xffffffc0, 0xfffffff3, }, new uint [] {0x35, 0x25, 0xffffffb6, 0xfffffff4, }, 
			new uint [] {0x36, 0x5e, 0xffffffd8, 0xffffffd9, }, new uint [] {0x37, 0x26, 0xffffffd6, 0xffffffdf, }, 
			new uint [] {0x38, 0x2a, 0xffffffa4, 0xfffffff5, }, new uint [] {0x39, 0x28, 0xffffffb5, 0xfffffff6, }, 
			new uint [] {0x30, 0x29, 0xffffffa8, 0xfffffff7, }, new uint [] {0x2d, 0x5f, 0xffffffa2, 0xfffffff8, }, 
			new uint [] {0x3d, 0x2b, 0xffffffaa, 0xfffffff9, }, new uint [] {0x71, 0x51, 0xffffffe6, 0xfffffff0, }, 
			new uint [] {0x77, 0x57, 0xffffffe4, 0x22, }, new uint [] {0x65, 0x45, 0xffffffd3, 0xffffffae, }, 
			new uint [] {0x72, 0x52, 0xffffffbe, 0xffffffb1, }, new uint [] {0x74, 0x54, 0xffffffd0, 0xffffffb8, }, 
			new uint [] {0x79, 0x59, 0xffffffd1, 0xffffffed, }, new uint [] {0x75, 0x55, 0xffffffd5, 0xffffffea, }, 
			new uint [] {0x69, 0x49, 0xffffffc3, 0xffffffb3, }, new uint [] {0x6f, 0x4f, 0xffffffb9, 0xffffffcf, }, 
			new uint [] {0x70, 0x50, 0xffffffc2, 0xffffffad, }, new uint [] {0x5b, 0x7b, 0xffffffba, 0xffffffb0, }, 
			new uint [] {0x5d, 0x7d, 0xffffffc5, 0x2c, }, new uint [] {0x61, 0x41, 0xffffffbf, 0xffffffc4, }, 
			new uint [] {0x73, 0x53, 0xffffffcb, 0xffffffa6, }, new uint [] {0x64, 0x44, 0xffffffa1, 0xffffffaf, }, 
			new uint [] {0x66, 0x46, 0xffffffb4, 0xffffffe2, }, new uint [] {0x67, 0x47, 0xffffffe0, 0xffffffac, }, 
			new uint [] {0x68, 0x48, 0xffffffe9, 0xffffffe7, }, new uint [] {0x6a, 0x4a, 0xffffffe8, 0xffffffeb, }, 
			new uint [] {0x6b, 0x4b, 0xffffffd2, 0xffffffc9, }, new uint [] {0x6c, 0x4c, 0xffffffca, 0xffffffc8, }, 
			new uint [] {0x3b, 0x3a, 0xffffffc7, 0xffffffab, }, new uint [] {0x27, 0x22, 0xffffffa7, 0x2e, }, 
			new uint [] {0x5c, 0x7c, 0xffffffa3, 0xffffffa5, }, new uint [] {0x7a, 0x5a, 0xffffffbc, 0x28, }, 
			new uint [] {0x78, 0x58, 0xffffffbb, 0x29, }, new uint [] {0x63, 0x43, 0xffffffe1, 0xffffffa9, }, 
			new uint [] {0x76, 0x56, 0xffffffcd, 0xffffffce, }, new uint [] {0x62, 0x42, 0xffffffda, }, 
			new uint [] {0x6e, 0x4e, 0xffffffd7, 0xffffffec, }, new uint [] {0x6d, 0x4d, 0xffffffb7, 0x3f, }, 
			new uint [] {0x2c, 0x3c, 0xffffffc1, 0xffffffb2, }, new uint [] {0x2e, 0x3e, 0xffffffe3, 0xffffffcc, }, 
			new uint [] {0x2f, 0x3f, 0xffffffbd, 0xffffffc6, }, new uint [] {}, 
			new uint [] {}, 		});
		table [63] = new KeyboardLayout (1043, "Dutch keyboard layout", 0, 0, new uint [][] {
			new uint [] {0x40, 0xffffffa7, }, new uint [] {0x31, 0x21, }, 
			new uint [] {0x32, 0x22, }, new uint [] {0x33, 0x23, }, 
			new uint [] {0x34, 0x24, }, new uint [] {0x35, 0x25, }, 
			new uint [] {0x36, 0x26, }, new uint [] {0x37, 0x5f, }, 
			new uint [] {0x38, 0x28, }, new uint [] {0x39, 0x29, }, 
			new uint [] {0x30, 0x27, }, new uint [] {0x2f, 0x3f, }, 
			new uint [] {0xffffffb0, 0x7e, }, new uint [] {0x71, 0x51, }, 
			new uint [] {0x77, 0x57, }, new uint [] {0x65, 0x45, }, 
			new uint [] {0x72, 0x52, }, new uint [] {0x74, 0x54, }, 
			new uint [] {0x79, 0x59, }, new uint [] {0x75, 0x55, }, 
			new uint [] {0x69, 0x49, }, new uint [] {0x6f, 0x4f, }, 
			new uint [] {0x70, 0x50, }, new uint [] {0xffffffa8, 0x7e, }, 
			new uint [] {0x2a, 0x7c, }, new uint [] {0x61, 0x41, }, 
			new uint [] {0x73, 0x53, }, new uint [] {0x64, 0x44, }, 
			new uint [] {0x66, 0x46, }, new uint [] {0x67, 0x47, }, 
			new uint [] {0x68, 0x48, }, new uint [] {0x6a, 0x4a, }, 
			new uint [] {0x6b, 0x4b, }, new uint [] {0x6c, 0x4c, }, 
			new uint [] {0x2b, 0xffffffb1, }, new uint [] {0x27, 0x60, }, 
			new uint [] {0x3c, 0x3e, }, new uint [] {0x7a, 0x5a, }, 
			new uint [] {0x78, 0x58, }, new uint [] {0x63, 0x43, }, 
			new uint [] {0x76, 0x56, }, new uint [] {0x62, 0x42, }, 
			new uint [] {0x6e, 0x4e, }, new uint [] {0x6d, 0x4d, }, 
			new uint [] {0x2c, 0x3b, }, new uint [] {0x2e, 0x3a, }, 
			new uint [] {0x2d, 0x3d, }, new uint [] {0x5b, 0x5d, }, 
			new uint [] {}, 		});


		rsxw.AddResource ("keyboard_table", table);

		short [][] scan_table = new short [][] {
			main_key_scan_qwerty, main_key_scan_dvorak, main_key_scan_abnt_qwerty,
			main_key_scan_qwerty_jp106, main_key_scan_vnc
		};
		rsxw.AddResource ("scan_table", scan_table);

		VirtualKeys [][] vkeys = new VirtualKeys [][] {
			main_key_vkey_qwerty, main_key_vkey_qwertz, main_key_vkey_dvorak,
			main_key_vkey_qwertz_105, main_key_vkey_azerty, main_key_vkey_qwerty_v2,
			main_key_vkey_abnt_qwerty, main_key_vkey_qwerty_jp106, main_key_vkey_vnc
		};
		int [][] vkey_table = new int [vkeys.Length][];
		for (int i = 0; i < vkeys.Length; i++) {
			int [] cp = new int [vkeys [i].Length];
			for (int r = 0; r < vkeys [i].Length; r++)
				cp [r] = (int) vkeys [i][r];
			vkey_table [i] = cp;
		}
		
		rsxw.AddResource ("vkey_table", vkey_table);
		
		rsxw.Close ();
	}
        private BaseOnScreenKeyViewModel KeyForScanCode(int scanCode, KeyboardLayout layout, int widthWeight = 10, bool isE0 = false, bool isE1 = false)
        {
            var sc = layout.ScanCodes.FirstOrDefault(x => x.Code == scanCode && x.E0Set == isE0 && x.E1Set == isE1);

            if (sc == null)
                throw new Exception(string.Format("The scan code {0:X} isn't valid.", scanCode));

            var virtualKey = (VirtualKeyCode)(sc.VirtualKey & 0xFF);

            var virtualKeyInfo = layout.VirtualKeys.SingleOrDefault(x => x.Key == sc.VirtualKey);

            var scanCodeText = layout.CodeText.SingleOrDefault(x => x.ScanCode == scanCode);

            return new VirtualKey(virtualKey,
                scanCodeText != null ? scanCodeText.Text : null,
                virtualKeyInfo != null ? virtualKeyInfo.Characters.ToList() : new List<int>(),
                virtualKeyInfo != null && virtualKeyInfo.Attributes == 1)
                {
                    ButtonWidth = new GridLength(widthWeight, GridUnitType.Star)
                };
        }