Пример #1
0
 private static int GetLcid(ILegacyWritingSystemDefinition ws)
 {
     int lcid;
     if (!Int32.TryParse(ws.WindowsLcid, out lcid))
         lcid = -1; // can't convert ws.WindowsLcid to a valid LCID. Just ignore.
     return lcid;
 }
Пример #2
0
                private static IKeyboardDefinition HandleFwLegacyKeyboards(ILegacyWritingSystemDefinition ws,
					KeyboardControllerImpl controller)
                {
                    var lcid = GetLcid(ws);
                    if (lcid >= 0)
                    {
                        try
                        {
                            if (string.IsNullOrEmpty(ws.Keyboard))
                            {
                                // FW system keyboard
                                var keyboard = controller.Keyboards.FirstOrDefault(
                                    kbd =>
                                    {
                                        var keyboardDescription = kbd as KeyboardDescription;
                                        if (keyboardDescription == null || keyboardDescription.InputLanguage == null || keyboardDescription.InputLanguage.Culture == null)
                                            return false;
                                        return keyboardDescription.InputLanguage.Culture.LCID == lcid;
                                    });
                                if (keyboard != null)
                                    return keyboard;
                            }
                            else
                            {
                                // FW keyman keyboard
                                var culture = new CultureInfo(lcid);
                                if (controller.Keyboards.Contains(ws.Keyboard, culture.Name))
                                    return controller.Keyboards[ws.Keyboard, culture.Name];
                            }
                        }
                        catch (CultureNotFoundException)
                        {
                            // Culture specified by LCID is not supported on current system. Just ignore.
                        }
                    }
                    return null;
                }
Пример #3
0
                public static IKeyboardDefinition GetKeyboardFromLegacyWritingSystem(ILegacyWritingSystemDefinition ws,
					KeyboardControllerImpl controller)
                {
                    if (!string.IsNullOrEmpty(ws.WindowsLcid))
                    {
                        var keyboard = HandleFwLegacyKeyboards(ws, controller);
                        if (keyboard != null)
                            return keyboard;
                    }

                    if (!string.IsNullOrEmpty(ws.Keyboard))
                    {
                        if (controller.Keyboards.Contains(ws.Keyboard))
                            return controller.Keyboards[ws.Keyboard];

                        // Palaso WinIME keyboard
                        var locale = GetLocaleName(ws.Keyboard);
                        var layout = GetLayoutName(ws.Keyboard);
                        if (controller.Keyboards.Contains(layout, locale))
                            return controller.Keyboards[layout, locale];

                        // Palaso Keyman or Ibus keyboard
                        var keyboard = controller.Keyboards.FirstOrDefault(kbd => kbd.Layout == layout);
                        if (keyboard != null)
                            return keyboard;
                    }

                    return null;
                }