private void GenerateQWERTY() { RowStructure.Clear(); RowsToBuild = 5; //Default a QWERTY in OnScreenKeyboardRowBuilder nBuilder1 = new OnScreenKeyboardRowBuilder(); nBuilder1.keyCount = 14; nBuilder1.keyCodeValues = new List <KeyCode>(new KeyCode[] { KeyCode.BackQuote, KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4, KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9, KeyCode.Alpha0, KeyCode.Minus, KeyCode.Equals, KeyCode.Backspace }); nBuilder1.upperValues = new List <string>(new string[] { "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "◄" }); nBuilder1.lowerValues = new List <string>(new string[] { "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "◄" }); nBuilder1.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.Backspace }); OnScreenKeyboardRowBuilder nBuilder2 = new OnScreenKeyboardRowBuilder(); nBuilder2.keyCount = 13; nBuilder2.RowShiftHorizontal = 0.55f; nBuilder2.keyCodeValues = new List <KeyCode>(new KeyCode[] { KeyCode.Q, KeyCode.W, KeyCode.E, KeyCode.R, KeyCode.T, KeyCode.Y, KeyCode.U, KeyCode.I, KeyCode.O, KeyCode.P, KeyCode.LeftBracket, KeyCode.RightBracket, KeyCode.Backslash }); nBuilder2.upperValues = new List <string>(new string[] { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "{", "}", "|" }); nBuilder2.lowerValues = new List <string>(new string[] { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\" }); nBuilder2.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String }); OnScreenKeyboardRowBuilder nBuilder3 = new OnScreenKeyboardRowBuilder(); nBuilder3.keyCount = 12; nBuilder3.RowShiftHorizontal = 0.55f; nBuilder3.keyCodeValues = new List <KeyCode>(new KeyCode[] { KeyCode.A, KeyCode.S, KeyCode.D, KeyCode.F, KeyCode.G, KeyCode.H, KeyCode.J, KeyCode.K, KeyCode.L, KeyCode.Semicolon, KeyCode.DoubleQuote, KeyCode.Return }); nBuilder3.upperValues = new List <string>(new string[] { "A", "S", "D", "F", "G", "H", "J", "K", "L", ":", "\"", "←" }); nBuilder3.lowerValues = new List <string>(new string[] { "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "←" }); nBuilder3.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.Return }); OnScreenKeyboardRowBuilder nBuilder4 = new OnScreenKeyboardRowBuilder(); nBuilder4.keyCount = 11; nBuilder4.RowShiftHorizontal = 1.66f; nBuilder4.keyCodeValues = new List <KeyCode>(new KeyCode[] { KeyCode.Z, KeyCode.X, KeyCode.C, KeyCode.V, KeyCode.B, KeyCode.N, KeyCode.M, KeyCode.Comma, KeyCode.Period, KeyCode.Slash, KeyCode.RightShift }); nBuilder4.upperValues = new List <string>(new string[] { "Z", "X", "C", "V", "B", "N", "M", "<", ">", "?", "↓" }); nBuilder4.lowerValues = new List <string>(new string[] { "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "↑" }); nBuilder4.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.Shift }); OnScreenKeyboardRowBuilder nBuilder5 = new OnScreenKeyboardRowBuilder(); nBuilder5.keyCount = 1; nBuilder5.RowShiftHorizontal = 6.6f; nBuilder5.keyCodeValues = new List <KeyCode>(new KeyCode[] { KeyCode.Space }); nBuilder5.upperValues = new List <string>(new string[] { " " }); nBuilder5.lowerValues = new List <string>(new string[] { " " }); nBuilder5.types = new List <KeyClass>(new KeyClass[] { KeyClass.String }); RowStructure.Add(nBuilder1); RowStructure.Add(nBuilder2); RowStructure.Add(nBuilder3); RowStructure.Add(nBuilder4); RowStructure.Add(nBuilder5); }
private void GenerateQWERTY() { RowStructure.Clear(); RowsToBuild = 5; //Default a QWERTY in OnScreenKeyboardRowBuilder nBuilder1 = new OnScreenKeyboardRowBuilder(); nBuilder1.keyCount = 14; nBuilder1.upperValues = new List <string>(new string[] { "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "◄" }); nBuilder1.lowerValues = new List <string>(new string[] { "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "◄" }); nBuilder1.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.Backspace }); OnScreenKeyboardRowBuilder nBuilder2 = new OnScreenKeyboardRowBuilder(); nBuilder2.keyCount = 13; nBuilder2.RowShiftHorizontal = 0.55f; nBuilder2.upperValues = new List <string>(new string[] { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "{", "}", "|" }); nBuilder2.lowerValues = new List <string>(new string[] { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\" }); nBuilder2.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String }); OnScreenKeyboardRowBuilder nBuilder3 = new OnScreenKeyboardRowBuilder(); nBuilder3.keyCount = 12; nBuilder3.RowShiftHorizontal = 0.55f; nBuilder3.upperValues = new List <string>(new string[] { "A", "S", "D", "F", "G", "H", "J", "K", "L", ":", "\"", "←" }); nBuilder3.lowerValues = new List <string>(new string[] { "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "←" }); nBuilder3.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.Return }); OnScreenKeyboardRowBuilder nBuilder4 = new OnScreenKeyboardRowBuilder(); nBuilder4.keyCount = 11; nBuilder4.RowShiftHorizontal = 1.66f; nBuilder4.upperValues = new List <string>(new string[] { "Z", "X", "C", "V", "B", "N", "M", "<", ">", "?", "↓" }); nBuilder4.lowerValues = new List <string>(new string[] { "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "↑" }); nBuilder4.types = new List <KeyClass>(new KeyClass[] { KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.String, KeyClass.Shift }); OnScreenKeyboardRowBuilder nBuilder5 = new OnScreenKeyboardRowBuilder(); nBuilder5.keyCount = 1; nBuilder5.RowShiftHorizontal = 6.6f; nBuilder5.upperValues = new List <string>(new string[] { " " }); nBuilder5.lowerValues = new List <string>(new string[] { " " }); nBuilder5.types = new List <KeyClass>(new KeyClass[] { KeyClass.String }); RowStructure.Add(nBuilder1); RowStructure.Add(nBuilder2); RowStructure.Add(nBuilder3); RowStructure.Add(nBuilder4); RowStructure.Add(nBuilder5); }
private OnScreenKeyboardKey[] GenerateKeys(int row, GameObject keyRoot, OnScreenKeyboardRowBuilder builder, OnScreenKeyboardKey template) { OnScreenKeyboardKey[] results = new OnScreenKeyboardKey[builder.keyCount]; //Loop through and generate the keys for (int i = 0; i < builder.keyCount; i++) { //Generate a new key object with an OnScreenKeyboardKey component GameObject key = GameObject.Instantiate(template.gameObject) as GameObject; key.name = "Row:" + row.ToString() + " Column:" + i.ToString(); //Incase we have our template in our scene as disabled key.SetActive(true); //Get a pointer to the component OnScreenKeyboardKey screenKey = key.GetComponent <OnScreenKeyboardKey>(); key.transform.parent = keyRoot.transform; key.transform.localPosition = Vector3.zero; key.transform.localEulerAngles = Vector3.zero; //Set its values screenKey.keyCode = builder.keyCodeValues[i]; screenKey.UpperCaseValue = builder.upperValues[i]; screenKey.LowerCaseValue = builder.lowerValues[i]; screenKey.type = builder.types[i]; //And we are going to start in lower so set the key value accordingly if (builder.upperValues[i].Trim() == "") { screenKey.Text.text = "_"; } else { screenKey.Text.text = builder.lowerValues[i]; } //While we are here lets setup our left navigation and our buddies right nav if (i > 0) { screenKey.LeftKey = results[i - 1]; results[i - 1].RightKey = screenKey; } results[i] = screenKey; } //Our right nave for the last key isnt set yet so set it here results[results.Length - 1].RightKey = results[0]; results[0].LeftKey = results[results.Length - 1]; return(results); }
public override void OnInspectorGUI() { if (RowStructure.Count == 0) { //Default a QWERTY in GenerateQWERTY(); } //Cast our target pointer OnScreenKeyboard subject = target as OnScreenKeyboard; DrawDefaultInspector(); //If we have a key template populated show the button if (subject.KeyTemplate != null) { showBuilder = EditorGUILayout.Foldout(showBuilder, "Keyboard Builder"); if (showBuilder) { EditorGUILayout.BeginVertical(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Row Count: "); RowsToBuild = EditorGUILayout.FloatField(RowsToBuild); if (RowsToBuild < 1) { RowsToBuild = 1; } EditorGUILayout.EndHorizontal(); //Manage the row structure if (RowsToBuild > RowStructure.Count) { for (int i = 0; i < RowsToBuild; i++) { if (i >= RowStructure.Count) { RowStructure.Add(new OnScreenKeyboardRowBuilder()); } } } if (RowsToBuild < RowStructure.Count) { List <OnScreenKeyboardRowBuilder> nBuilders = new List <OnScreenKeyboardRowBuilder>(); for (int i = 0; i < RowsToBuild; i++) { nBuilders.Add(RowStructure[i]); } RowStructure = nBuilders; } //Render the inputs for each row structure for (int i = 0; i < RowStructure.Count; i++) { if (RowStructure[i] == null) { RowStructure[i] = new OnScreenKeyboardRowBuilder(); } //EditorGUILayout.LabelField("Row: " + (i+1).ToString(), EditorStyles.boldLabel); RowStructure[i].FoldOut = EditorGUILayout.Foldout(RowStructure[i].FoldOut, "Row: " + (i + 1).ToString()); if (RowStructure[i].FoldOut) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Key Count: "); RowStructure[i].keyCount = EditorGUILayout.IntField(RowStructure[i].keyCount); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Key Spacing: "); RowStructure[i].KeyShiftHorizontal = EditorGUILayout.FloatField(RowStructure[i].KeyShiftHorizontal); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Row Offset: "); RowStructure[i].RowShiftHorizontal = EditorGUILayout.FloatField(RowStructure[i].RowShiftHorizontal); EditorGUILayout.EndHorizontal(); for (int ii = 0; ii < RowStructure[i].keyCount; ii++) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Type: ", GUILayout.MinWidth(25)); if (ii >= RowStructure[i].types.Count) { RowStructure[i].types.Add(KeyClass.String); } RowStructure[i].types[ii] = (KeyClass)System.Enum.Parse(typeof(KeyClass), EditorGUILayout.EnumPopup(RowStructure[i].types[ii]).ToString()); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Upper: ", GUILayout.MinWidth(25)); if (ii >= RowStructure[i].upperValues.Count) { RowStructure[i].upperValues.Add("A"); } RowStructure[i].upperValues[ii] = EditorGUILayout.TextField(RowStructure[i].upperValues[ii]); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Lower: ", GUILayout.MinWidth(25)); if (ii >= RowStructure[i].lowerValues.Count) { RowStructure[i].lowerValues.Add("a"); } RowStructure[i].lowerValues[ii] = EditorGUILayout.TextField(RowStructure[i].lowerValues[ii]); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); } } } if (GUILayout.Button("Template QWERTY")) { GenerateQWERTY(); } if (GUILayout.Button("Template AZERTY")) { GenerateAZERTY(); } if (GUILayout.Button("Generate Objects")) { GenerateObjects(subject); } EditorGUILayout.EndVertical(); } } }