private static Bitmap WriteCaption(Bitmap bmp, int scancode, int extended, Color fontColour) { string caption = AppController.GetKeyName(scancode, extended) ?? String.Format("SC: {0} EX: {1}", scancode, extended); // Blank keys. if (String.IsNullOrEmpty(caption)) { return(bmp); } bool overlong = false; bool localizable = false; int hash = KeyHasher.GetHashFromKeyData(scancode, extended); if (AppController.IsOverlongKey(hash)) { overlong = true; } if (AppController.IsLocalizableKey(hash)) { localizable = true; } return(WriteCaption(bmp, caption, overlong, localizable, fontColour)); }
public Dictionary <string, int> GetGroupMembers(string groupname, int threshold) { // Enumerate group. string queryExpression; if (groupname == AllKeysGroupName) { queryExpression = @"/KeycodeData/keycodes[group!='Unmappable Keys']"; } else if (groupname == _commonlyUsedKeysGroupName) { queryExpression = @"/KeycodeData/keycodes[useful>='2'" + "]"; } else { queryExpression = @"/KeycodeData/keycodes[group='" + groupname + "' and useful>='" + threshold.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat) + "']"; } XPathNodeIterator iterator; iterator = (XPathNodeIterator)_navigator.Select(queryExpression); // Gives us a bunch of keycode nodes. // Given the scancode / extended from each node, ask for the name from the current layout. int scancode, extended; Dictionary <string, int> dir = new Dictionary <string, int>(iterator.Count); foreach (XPathNavigator node in iterator) { scancode = Int32.Parse(GetElementValue("sc", node), CultureInfo.InvariantCulture.NumberFormat); extended = Int32.Parse(GetElementValue("ex", node), CultureInfo.InvariantCulture.NumberFormat); string name = AppController.GetKeyName(scancode, extended); if (dir.ContainsKey(name)) // ArgumentException results when trying to add duplicate key.. { Console.WriteLine("Duplicate name error: Name {0} Existing Scancode : {1} Scancode: {2}", name, dir[name], scancode); } else { dir.Add(name, KeyHasher.GetHashFromKeyData(scancode, extended)); } } return(dir); }