/// <summary> /// Creates a string from the specified KeyCode and KeyModifiers. /// Unfortunately this is tied to the US English keyboard, so it needs a better solution. /// </summary> /// <param name="keyID"></param> /// <param name="mods"></param> /// <returns></returns> public static string GetKeyString(KeyCode keyID, KeyModifiers mods) { if ((int)keyID >= 'A' && (int)keyID <= 'Z') { char result; if (mods.Shift) { result = (char)keyID; } else { result = (char)((int)keyID + 'a' - 'A'); } return(result.ToString()); } switch (keyID) { case KeyCode.Tab: return("\t"); case KeyCode.Return: //case KeyCode.Enter: return("\n"); case KeyCode.Space: return(" "); // I'd love a better way of doing this: // likely, this is not very friendly to non US keyboard layouts. case KeyCode.D0: if (mods.Shift) { return(")"); } else { return("0"); } case KeyCode.NumPad0: return("0"); case KeyCode.D1: if (mods.Shift) { return("!"); } else { return("1"); } case KeyCode.NumPad1: return("1"); case KeyCode.D2: if (mods.Shift) { return("@"); } else { return("2"); } case KeyCode.NumPad2: return("2"); case KeyCode.D3: if (mods.Shift) { return("#"); } else { return("3"); } case KeyCode.NumPad3: return("3"); case KeyCode.D4: if (mods.Shift) { return("$"); } else { return("4"); } case KeyCode.NumPad4: return("4"); case KeyCode.D5: if (mods.Shift) { return("%"); } else { return("5"); } case KeyCode.NumPad5: return("5"); case KeyCode.D6: if (mods.Shift) { return("^"); } else { return("6"); } case KeyCode.NumPad6: return("6"); case KeyCode.D7: if (mods.Shift) { return("&"); } else { return("7"); } case KeyCode.NumPad7: return("7"); case KeyCode.D8: if (mods.Shift) { return("*"); } else { return("8"); } case KeyCode.NumPad8: return("8"); case KeyCode.D9: if (mods.Shift) { return("("); } else { return("9"); } case KeyCode.NumPad9: return("9"); case KeyCode.NumPadMinus: return("-"); case KeyCode.NumPadMultiply: return("*"); case KeyCode.NumPadPeriod: return("."); case KeyCode.NumPadPlus: return("+"); case KeyCode.NumPadSlash: return("/"); case KeyCode.Semicolon: if (mods.Shift) { return(":"); } else { return(";"); } case KeyCode.Plus: if (mods.Shift) { return("+"); } else { return("="); } case KeyCode.Comma: if (mods.Shift) { return("<"); } else { return(","); } case KeyCode.Minus: if (mods.Shift) { return("_"); } else { return("-"); } case KeyCode.Period: if (mods.Shift) { return(">"); } else { return("."); } case KeyCode.Slash: if (mods.Shift) { return("?"); } else { return("/"); } case KeyCode.Tilde: if (mods.Shift) { return("~"); } else { return("`"); } case KeyCode.OpenBracket: if (mods.Shift) { return("{"); } else { return("["); } case KeyCode.BackSlash: if (mods.Shift) { return("|"); } else { return(@"\"); } case KeyCode.CloseBracket: if (mods.Shift) { return("}"); } else { return("]"); } case KeyCode.Quotes: if (mods.Shift) { return("\""); } else { return("'"); } } return(""); }
internal InputEventArgs(KeyCode keyID, KeyModifiers mods, int repeatCount) : this(keyID, mods) { mRepeatCount = repeatCount; }