private WinKeyboardDescription(TfInputProcessorProfile profile, ushort langId, IntPtr hkl, IKeyboardAdaptor engine) : base(engine, KeyboardType.System) { var winEngine = engine as WinKeyboardAdaptor; Debug.Assert(winEngine != null); InputProcessorProfile = profile; var culture = new CultureInfo(langId); string locale; string cultureName; try { cultureName = culture.DisplayName; locale = culture.Name; } catch (CultureNotFoundException) { // we get an exception for non-supported cultures, probably because of a // badly applied .NET patch. // http://www.ironspeed.com/Designer/3.2.4/WebHelp/Part_VI/Culture_ID__XXX__is_not_a_supported_culture.htm and others cultureName = "[Unknown Language]"; locale = "en-US"; } WinKeyboardAdaptor.LayoutName layoutName; if (profile.Hkl == IntPtr.Zero && profile.ProfileType != TfProfileType.Illegal) { layoutName = new WinKeyboardAdaptor.LayoutName(winEngine.ProcessorProfiles.GetLanguageProfileDescription( ref profile.ClsId, profile.LangId, ref profile.GuidProfile)); } else { layoutName = WinKeyboardAdaptor.GetLayoutNameEx(hkl); } Initialize(cultureName, layoutName, locale, new InputLanguageWrapper(culture, hkl, layoutName.Name)); }
private void Initialize(string displayName, WinKeyboardAdaptor.LayoutName layoutName, string locale, IInputLanguage inputLanguage) { ConversionMode = (int)(Win32.IME_CMODE.NATIVE | Win32.IME_CMODE.SYMBOL); InternalName = GetDisplayName(displayName, layoutName.Name); InternalLocalizedName = GetDisplayName(displayName, layoutName.LocalizedName); Layout = layoutName.Name; Locale = locale; SetInputLanguage(inputLanguage); }
public TfLanguageProfileNotifySink(WinKeyboardAdaptor keyboardAdaptor) { _keyboardAdaptor = keyboardAdaptor; }