internal static string GetKeyboardLayoutXml(KeyboardLayoutName name) { string xml; switch (name) { default: Debug.Assert(name == KeyboardLayoutName.Default, "Default layout is default!"); xml = Properties.Resources.Default; break; case KeyboardLayoutName.Tabtip: xml = Properties.Resources.KeyboardLayoutTabTip; break; case KeyboardLayoutName.Tobii: xml = Properties.Resources.KeyboardLayoutTobii; break; case KeyboardLayoutName.ThreeRowed: xml = Properties.Resources.ThreeRowed; break; case KeyboardLayoutName.Krohn: xml = Properties.Resources.KrohnKeyboard; break; case KeyboardLayoutName.NonArturo14: xml = Properties.Resources.NonArturo14; break; case KeyboardLayoutName.Supersize: xml = Properties.Resources.Supersize; break; case KeyboardLayoutName.Q15: xml = Properties.Resources.Q15; break; case KeyboardLayoutName.Q9: xml = Properties.Resources.Q9; break; case KeyboardLayoutName.Q6: xml = Properties.Resources.Q6; break; case KeyboardLayoutName.Custom: // Indicate custom layout. xml = null; break; } return(xml); }
static KeyboardLayout GetKeyboardLayout(IKeyboardHost host, KeyboardLayoutName name) { var layoutXml = GetKeyboardLayoutXml(name); if (layoutXml == null) { try { var myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var fileName = "KeyboardLayout.xml"; var path = Path.Combine(myDocuments, fileName); layoutXml = File.ReadAllText(path); } catch (Exception ex) { host.ShowException("Error loading custom keyboard", ex); layoutXml = GetKeyboardLayoutXml(KeyboardLayoutName.Default); } } KeyboardLayout layout; try { layout = KeyboardLayout.Load(layoutXml); } catch (Exception ex) { host.ShowException("Error parsing custom keyboard", ex); layoutXml = GetKeyboardLayoutXml(KeyboardLayoutName.Default); layout = KeyboardLayout.Load(layoutXml); } return(layout); }