public override void SetProperties()
    {
        foreach (var key in keysDic.Keys)
        {
            keysDic[key].name = "Key_" + key;

            keysDic[key].transform.parent = this.transform;
            if (PRINTABLEKEYS.ContainsKey(key))
            {
                keysDic[key].transform.Find("Text").GetComponent <TextMeshPro>().text = PRINTABLEKEYS[key].ToString().ToUpper();
            }
            keysDic[key].AddComponent <KeyEvents>();
            keysDic[key].AddComponent <KeyProperties>();
            if (PRINTABLEKEYS.ContainsKey(key))
            {
                keysDic[key].GetComponent <KeyProperties>().KeyText = PRINTABLEKEYS[key].ToString();
            }
            keysDic[key].GetComponent <KeyProperties>().ID = key;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyFocused   += KeyboardEventHandler_OnFocusedHandler;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyUnfocused += KeyboardEventHandler_OnUnfocusedHandler;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyPressed   += KeyboardEventHandler_OnPressedHandler;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyReleased  += KeyboardEventHandler_OnReleasedHandler;
        }
        keysDic[KeyID.Shift].transform.Find("Text").GetComponent <TextMeshPro>().fontSize     -= 6;
        keysDic[KeyID.Shift].transform.Find("Text").GetComponent <TextMeshPro>().text          = "Shift";
        keysDic[KeyID.Next].transform.Find("Text").GetComponent <TextMeshPro>().fontSize      -= 6;
        keysDic[KeyID.Next].transform.Find("Text").GetComponent <TextMeshPro>().text           = "Next";
        keysDic[KeyID.Enter].transform.Find("Text").GetComponent <TextMeshPro>().fontSize     -= 6;
        keysDic[KeyID.Enter].transform.Find("Text").GetComponent <TextMeshPro>().text          = "Enter";
        keysDic[KeyID.Backspace].transform.Find("Text").GetComponent <TextMeshPro>().fontSize -= 6;
        keysDic[KeyID.Backspace].transform.Find("Text").GetComponent <TextMeshPro>().text      = "Backspace";
    }
 public GameObject GetKeyObject(char item)
 {
     if (PRINTABLEKEYS.ContainsValue(item))
     {
         return(keysDic[PRINTABLEKEYS.FirstOrDefault(x => x.Value == item).Key]);
     }
     return(null);
 }
    public override void SetProperties()
    {
        var normalMat = Resources.Load("NormalKeyMaterial") as Material;;

        foreach (var key in keysDic.Keys)
        {
            keysDic[key].name = "Key_" + key;

            keysDic[key].transform.parent = this.transform;
            if (PRINTABLEKEYS.ContainsKey(key))
            {
                keysDic[key].transform.Find("Text").GetComponent <TextMeshPro>().text = PRINTABLEKEYS[key].ToString().ToUpper();
            }
            keysDic[key].AddComponent <KeyEvents>();
            keysDic[key].AddComponent <KeyProperties>();
            if (PRINTABLEKEYS.ContainsKey(key))
            {
                keysDic[key].GetComponent <KeyProperties>().KeyText = PRINTABLEKEYS[key].ToString();
            }
            keysDic[key].GetComponent <KeyProperties>().ID = key;

            keysDic[key].transform.Find("MainShape").GetComponent <MeshRenderer>().material = normalMat;


            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyFocused   += KeyboardEventHandler_OnFocusedHandler;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyUnfocused += KeyboardEventHandler_OnUnfocusedHandler;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyPressed   += KeyboardEventHandler_OnPressedHandler;
            keysDic[key].GetComponent <KeyEvents>().KeyEvents_OnKeyReleased  += KeyboardEventHandler_OnReleasedHandler;
        }

        keysDic[KeyID.Backspace].transform.Find("Text").GetComponent <TextMeshPro>().rectTransform.localScale = new Vector3(0.5f, 2, 1);
        keysDic[KeyID.Backspace].transform.Find("Text").GetComponent <TextMeshPro>().fontSize             = 1.5f;
        keysDic[KeyID.Backspace].transform.Find("Text").GetComponent <TextMeshPro>().text                 = "Backspace";
        keysDic[KeyID.Enter].transform.Find("Text").GetComponent <TextMeshPro>().rectTransform.localScale = new Vector3(0.5f, 2, 1);
        keysDic[KeyID.Enter].transform.Find("Text").GetComponent <TextMeshPro>().fontSize                 = 2f;
        keysDic[KeyID.Enter].transform.Find("Text").GetComponent <TextMeshPro>().text = "Enter";

        keysDic[KeyID.Shift].transform.Find("Text").GetComponent <TextMeshPro>().fontSize = 1.9f;
        keysDic[KeyID.Shift].transform.Find("Text").GetComponent <TextMeshPro>().text     = "Shift";
        keysDic[KeyID.Next].transform.Find("Text").GetComponent <TextMeshPro>().fontSize  = 1.9f;
        keysDic[KeyID.Next].transform.Find("Text").GetComponent <TextMeshPro>().text      = "Next";
    }