コード例 #1
0
        void hook_HookInvoked(object sender, WindowsAPI.HookEventArgs e)
        {
            KBDLLHOOKSTRUCT keyboardHook = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(e.lParam, typeof(KBDLLHOOKSTRUCT));
            KeyBoardType    type         = (KeyBoardType)e.wParam;

            if (e.HookCode >= 0)
            {
                int vkCode = keyboardHook.vkCode;

                switch (type)
                {
                case KeyBoardType.WM_KEYDOWN:
                    DoKeyDown(vkCode);
                    break;

                case KeyBoardType.WM_KEYUP:
                    DoPress(vkCode);
                    DoKeyUp(vkCode);
                    break;

                case KeyBoardType.WM_SYSKEYDOWN:
                    DoKeyDown(vkCode);
                    break;

                case KeyBoardType.WM_SYSKEYUP:
                    DoKeyUp(vkCode);
                    break;

                default:
                    break;
                }
            }
        }
コード例 #2
0
    // 한/영 키
    public void KorEngChange(KeyBoardType type)
    {
        kor.SetActive(false);
        eng.SetActive(false);
        spe.SetActive(false);

        switch (type)
        {
        case KeyBoardType.Kor1:
            kor.SetActive(true);
            foreach (Key item in KorbuttonList)
            {
                item.Change();
            }
            this.type = type;
            break;

        case KeyBoardType.LowerEng:
            eng.SetActive(true);
            foreach (Key item in EngbuttonList)
            {
                item.Change();
            }
            this.type = type;
            break;

        case KeyBoardType.Special1:
            spe.SetActive(true);
            preType   = this.type;
            this.type = type;
            break;
        }
    }
コード例 #3
0
    // 특문 1~2페이지로 넘어가는 함수
    public void SpecialShift()
    {
        if (type == KeyBoardType.Special1)
        {
            type = KeyBoardType.Special2;
        }

        else
        {
            type = KeyBoardType.Special1;
        }

        string[] str;
        int      count = 0;

        switch (type)
        {
        case KeyBoardType.Special1:
            str = special1.Split('|');

            for (int i = 0; i < SpecialbuttonList.Count; i++)
            {
                if (SpecialbuttonList[i].keyType == Key.Type.SPECIAL && SpecialbuttonList[i].keyname.Length == 1)
                {
                    SpecialbuttonList[i].text.text = str[count];
                    SpecialbuttonList[i].keyname   = str[count++].ToCharArray();
                    SpecialbuttonList[i].keyvalue  = SpecialbuttonList[i].keyname[0];

                    if (count == str.Length)
                    {
                        break;
                    }
                }
            }
            break;

        case KeyBoardType.Special2:
            str = special2.Split('^');

            for (int i = 0; i < SpecialbuttonList.Count; i++)
            {
                if (SpecialbuttonList[i].keyType == Key.Type.SPECIAL && SpecialbuttonList[i].keyname.Length == 1)
                {
                    SpecialbuttonList[i].text.text = str[count];
                    SpecialbuttonList[i].keyname   = str[count++].ToCharArray();
                    SpecialbuttonList[i].keyvalue  = SpecialbuttonList[i].keyname[0];

                    if (count == str.Length)
                    {
                        break;
                    }
                }
            }
            break;
        }
    }
コード例 #4
0
ファイル: KeyBoardModel.cs プロジェクト: f1zcsjll/Game
 /// <summary>
 /// 按键是否被按下
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 public bool KeyIsPress(KeyBoardType type)
 {
     if (KeySetList == null || !KeySetList.ContainsKey(type) || KeySetList[type].KeyList.Count == 0)
     {
         return(false);
     }
     else
     {
         return(KeySetList[type].isPress);
     }
 }
コード例 #5
0
ファイル: KeyBoardModel.cs プロジェクト: f1zcsjll/Game
 /// <summary>
 /// 获取某个按键信息
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 public KeyInfo GetKeyInfo(KeyBoardType type)
 {
     if (KeySetList.ContainsKey(type))
     {
         return(KeySetList[type]);
     }
     else
     {
         return(null);
     }
 }
コード例 #6
0
ファイル: KeyBoardModel.cs プロジェクト: f1zcsjll/Game
 /// <summary>
 /// 设定按键
 /// </summary>
 /// <param name="type"></param>
 /// <param name="keylist"></param>
 public void SetKey(KeyBoardType type, List <KeyCode> keylist)
 {
     if (KeySetList.ContainsKey(type))
     {
         KeySetList[type].KeyList.Clear();
         for (int i = 0; i < keylist.Count; i++)
         {
             KeySetList[type].KeyList.Add(keylist[i]);
         }
     }
 }
コード例 #7
0
    // shift 키
    public void ShiftKeyBoard()
    {
        if (type == KeyBoardType.UpperEng)
        {
            type = KeyBoardType.LowerEng;
            foreach (Key item in EngbuttonList)
            {
                item.Change();
            }
        }

        else if (type == KeyBoardType.LowerEng)
        {
            type = KeyBoardType.UpperEng;
            foreach (Key item in EngbuttonList)
            {
                item.Change();
            }
        }

        else if (type == KeyBoardType.Kor1)
        {
            type = KeyBoardType.Kor2;
            foreach (Key item in KorbuttonList)
            {
                item.Change();
            }
        }

        else if (type == KeyBoardType.Kor2)
        {
            type = KeyBoardType.Kor1;
            foreach (Key item in KorbuttonList)
            {
                item.Change();
            }
        }
    }
コード例 #8
0
ファイル: KeyBoardEvent.cs プロジェクト: sunpander/VSDT
 /// <summary>
 /// �����¼�
 /// </summary>
 /// <param name="type"></param>
 /// <param name="keyCode"></param>
 public KeyBoardEvent(KeyBoardType type, System.Windows.Forms.Keys keyCode)
 {
     this.type = type;
     this.keyCode = keyCode;
 }
コード例 #9
0
    // 영문 키보드 or 한글 키보드 제작 게임 오브젝트 생성 및 정렬
    GameObject MakeKeyBoard(KeyBoardType type, bool set)
    {
        // 패널 생성
        GameObject panel = new GameObject(type.ToString());

        panel.layer = LayerMask.NameToLayer("UI");
        panel.AddComponent <CanvasRenderer>();
        Image image = panel.AddComponent <Image>();

        image.color  = Color.white;
        image.sprite = AssetDatabase.GetBuiltinExtraResource <Sprite>("UI/Skin/Background.psd");
        image.type   = Image.Type.Sliced;
        //image.sprite = Resources.GetBuiltinResource(typeof(Sprite), "Background.psd") as Sprite;
        //i.sprite = Resources.Load("Assets/Background") as Sprite;

        panel.transform.SetParent(mainCanvasObj.transform, false);
        panelRect           = panel.GetComponent <RectTransform>();
        panelRect.sizeDelta = new Vector3(resolution.x * 1.05f, resolution.x * 0.4f);

        panelRect.anchoredPosition3D = new Vector3(0, resolution.x * 1.5f, resolution.x);
        panelRect.localRotation      = Quaternion.Euler(35f, 0f, 0f);

        // 세로로 정렬할 부모 오브젝트 생성
        GameObject vertical = new GameObject("VerticalLayer");

        vertical.transform.SetParent(panel.transform);
        VerticalLayoutGroup vV = vertical.AddComponent <VerticalLayoutGroup>();

        vV.spacing = 30f;
        RectTransform vR = vertical.GetComponent <RectTransform>();

        vR.localScale         = new Vector3(1, 1, 1);
        vR.sizeDelta          = new Vector3(resolution.x, resolution.x * 0.3f);
        vR.localRotation      = Quaternion.Euler(Vector3.zero);
        vR.anchoredPosition3D = Vector3.zero;

        // 버튼 오브젝트
        GameObject buttonObj = Resources.Load("Button") as GameObject;

        // 버튼 리스트
        List <Key> buttonList;

        string[] parse;

        if (type == KeyBoardType.LowerEng)
        {
            parse      = EngkeyOrder.Split('|');
            buttonList = EngbuttonList;
        }

        else if (type == KeyBoardType.Special1)
        {
            parse      = special1Order.Split('|');
            buttonList = SpecialbuttonList;
        }

        else
        {
            parse      = KorKeyOrder.Split('|');
            buttonList = KorbuttonList;
        }

        int c = 0;

        // 수평으로 정렬할 빈 오브젝트 5개 생성
        GameObject[] a = new GameObject[5];

        // 1줄에 버튼 여러개 생성
        for (int i = 0; i < 5; i++)
        {
            a[i] = new GameObject("HorizotalLayer");
            HorizontalLayoutGroup aH = a[i].AddComponent <HorizontalLayoutGroup>();
            a[i].transform.SetParent(vertical.transform);
            RectTransform aR = a[i].GetComponent <RectTransform>();
            aR.localScale         = new Vector3(1, 1, 1);
            aR.localRotation      = Quaternion.Euler(Vector3.zero);
            aR.anchoredPosition3D = Vector3.zero;

            switch (i)
            {
            case 0:
            case 1:
                for (int j = 0; j < 10; j++)
                {
                    GameObject button = Instantiate(buttonObj, a[i].transform);
                    button.transform.GetChild(0).GetComponent <Text>().text     = parse[c++];
                    button.transform.GetChild(0).GetComponent <Text>().fontSize = 50;
                    Key k = button.AddComponent <Key>();
                    button.layer = LayerMask.NameToLayer("UI");
                    buttonList.Add(k);
                }
                aH.spacing = 40f;
                break;

            case 2:
            case 3:
                int index = 9;
                if (type == KeyBoardType.Special1 && i == 2)
                {
                    index = 10;
                }

                for (int j = 0; j < index; j++)
                {
                    GameObject button = Instantiate(buttonObj, a[i].transform);
                    if (parse[c] == "shift")
                    {
                        LayoutElement layout = button.AddComponent <LayoutElement>();
                        layout.preferredWidth = shiftSize;
                    }
                    else if (parse[c] == "backspace")
                    {
                        LayoutElement layout = button.AddComponent <LayoutElement>();
                        layout.preferredWidth = backspaceSize;
                    }
                    button.transform.GetChild(0).GetComponent <Text>().text     = parse[c++];
                    button.transform.GetChild(0).GetComponent <Text>().fontSize = 50;
                    Key k = button.AddComponent <Key>();
                    button.layer = LayerMask.NameToLayer("UI");
                    buttonList.Add(k);
                }
                aH.spacing = 40f;
                break;

            case 4:
                for (int j = 0; j < 6; j++)
                {
                    GameObject button = Instantiate(buttonObj, a[i].transform);
                    if (parse[c] == "space")
                    {
                        LayoutElement layout = button.AddComponent <LayoutElement>();
                        layout.preferredWidth = spacebarSize;
                    }
                    else if (parse[c] == "Enter")
                    {
                        LayoutElement layout = button.AddComponent <LayoutElement>();
                        layout.preferredWidth = enterSize;
                    }

                    button.transform.GetChild(0).GetComponent <Text>().text     = parse[c++];
                    button.transform.GetChild(0).GetComponent <Text>().fontSize = 50;
                    Key k = button.AddComponent <Key>();
                    button.layer = LayerMask.NameToLayer("UI");
                    buttonList.Add(k);
                }
                aH.spacing = 40f;
                break;
            }
        }

        panel.SetActive(set);


        return(panel);
    }
コード例 #10
0
ファイル: KeyBoardEvent.cs プロジェクト: sunsunsun000/PEEP
 /// <summary>
 /// 键盘事件
 /// </summary>
 /// <param name="type"></param>
 /// <param name="keyCode"></param>
 public KeyBoardEvent(KeyBoardType type, System.Windows.Forms.Keys keyCode)
 {
     this.type    = type;
     this.keyCode = keyCode;
 }