public static char Lookup(string button, string systemId) { var key = button.Replace("Key ", ""); if (key.StartsWith("P")) { if (key.Length > 2 && key[1] == '1' && key[2] >= '0' && key[2] <= '9') // Hack to support 10-20 controllers, TODO: regex this thing instead { key = key.Substring(4); } else if (key.Length > 1 && key[1] >= '0' && key[1] <= '9') { key = key.Substring(3); } } if (SystemOverrides.TryGetValue(systemId, out var overridesForSys) && overridesForSys.TryGetValue(key, out var c)) { return(c); } if (BaseMnemonicLookupTable.TryGetValue(key, out var c1)) { return(c1); } if (key.Length == 1) { return(key[0]); } return('!'); }