//Get KeyChar public string GetKeyChar(VirtualKeyState state) { string charName = ""; if (virtualKeyInfor == null) { return(charName); } if (virtualKeyInfor.m_CharStateCode == KeyCode.Space) { return(" "); } switch (state) { case VirtualKeyState.Normal: charName = virtualKeyInfor.m_NormalCharacter; break; case VirtualKeyState.NormalShift: charName = virtualKeyInfor.m_ShiftCharacter; break; case VirtualKeyState.Number: charName = virtualKeyInfor.m_NumberCharacter; break; } return(charName); }
/// <summary> /// Sends the specified key to a window. This function calls the window procedure for the /// specified window and does not return until the window procedure has processed the message. /// </summary> /// <param name="hWnd"> /// A handle to the window whose window procedure is to receive the message. /// </param> /// <param name="key"> /// The key to send. /// </param> /// <param name="keyState"> /// The key state to send. /// </param> /// <param name="scanCode"> /// true to send the scan code of the specified key; otherwise, false. /// </param> public static IntPtr SendKeyState(IntPtr hWnd, VirtualKey key, VirtualKeyState keyState, bool scanCode = false) { var wParam = scanCode ? 0u : GetKeyCode(key); var lParam = !scanCode ? 0u : GetScanCode(key); return(WinApi.NativeHelper.SendMessage(hWnd, (uint)keyState, (IntPtr)wParam, (IntPtr)lParam)); }
//static int index = 2; //// create a single key //void CreateKey(string normalChar, string shiftedChar, string numberChar, KeyCode normalCode, KeyCode numberCode, Vector2 pos, Vector2 scale, Transform parent, bool special = false, string imageName = "") //{ // VirtualKey key = new VirtualKey(); //Record State // key.m_NormalCharacter = normalChar; // key.m_ShiftCharacter = shiftedChar; // key.m_NumberCharacter = numberChar; // key.m_CharStateCode = normalCode; // key.m_NumberStateCode = numberCode; // key.m_Pressed = false; // key.m_Special = special; // key.m_KeyImage = imageName; // // create button // GameObject obj = (GameObject)Object.Instantiate(m_KeyButtonPrefab); // obj.name = normalChar; // obj.transform.SetParent(parent, false); // obj.transform.localScale = Vector3.one; // RectTransform rectrans = obj.GetComponent<RectTransform>(); // //Debug.Log(obj.name + " " + pos); // rectrans.anchoredPosition = pos; // rectrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, m_Spacing.x * scale.x); //按照参数的值设置RectTransform 大小 // rectrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, m_Spacing.y * scale.y); // obj.GetComponent<UIEffect>().PointerClickEvent += ButtonPressed; //注册点击事件 // VirtualKeyButton button = obj.GetComponent<VirtualKeyButton>(); // button.m_Index = index; // index++; // button.InitilKey(key); //初始化 // allVirtualKey.Add(button); //} //// create a row of keys //void CreateKeyRow(string chars, string shiftedChars, string numberChar, KeyCode[] charaCodes, KeyCode[] numberCodes, Vector2 pos, float offset, Transform parent, bool special = false, string imageName = "menu_KeyBorad") //{ // pos.x += offset * m_Spacing.x; // for (int i = 0; i < chars.Length; i++) // { // CreateKey(chars[i].ToString(), shiftedChars[i].ToString(), numberChar[i].ToString(), charaCodes[i], numberCodes[i], pos, Vector2.one, parent, special, imageName); // pos.x += m_Spacing.x + m_ItemSpace.x; // } //} //// create a whole keyboard //void CreateKeyboard() //{ // Vector2 pos = m_Origin; // pos.y -= m_Spacing.y; // GameObject Up = CommonOperate.CreateObjWhithName("Up"); // CreateKeyRow( // "qwertyuiop", // "QWERTYUIOP", // "1234567890", // new KeyCode[] { KeyCode.Q, KeyCode.W, KeyCode.E, KeyCode.R, KeyCode.T, KeyCode.Y, KeyCode.U, KeyCode.I, KeyCode.O, KeyCode.P }, // new KeyCode[] { KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4, KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9, KeyCode.Alpha0 }, // pos, // 0.5f, // Up.transform // ); // pos.x += m_ItemSpace.x; // CreateKey("", "", "", KeyCode.Backspace, KeyCode.Backspace, pos + new Vector2(m_Spacing.x * 11f, 0.0f), new Vector2(1.9f, 1.0f), Up.transform, true, "menu_Close"); // pos.y -= m_Spacing.y + m_ItemSpace.y; // GameObject Middle = CommonOperate.CreateObjWhithName("Middle"); // CreateKeyRow( // "asdfghjkl", // "ASDFGHJKL", // "@!?.,_/+-", // new KeyCode[] { KeyCode.A, KeyCode.S, KeyCode.D, KeyCode.F, KeyCode.G, KeyCode.H, KeyCode.J, KeyCode.K, KeyCode.L }, // new KeyCode[] { KeyCode.At, KeyCode.Exclaim, KeyCode.Question, KeyCode.Period, KeyCode.Comma, KeyCode.Underscore, KeyCode.Slash, KeyCode.Plus, KeyCode.Minus }, // pos, // 0.7f, // Middle.transform // ); // CreateKey("", "", "", KeyCode.Clear, KeyCode.Clear, pos + new Vector2(m_Spacing.x * 11f, 0.0f), new Vector2(1.9f, 1.0f), Middle.transform, true, "menu_Keyboard2"); // pos.y -= m_Spacing.y + m_ItemSpace.y; // pos = new Vector2(m_Origin.x + 0.5f * m_Spacing.x, pos.y); // CreateKey("", "", "", KeyCode.LeftShift, KeyCode.LeftShift, pos, new Vector2(1, 1.0f), Middle.transform, true, "menu_keyboard_Shift"); //添加的Shift键位z // pos.x += m_ItemSpace.x; // GameObject Down = CommonOperate.CreateObjWhithName ("Down"); // CreateKeyRow( // "zxcvbnm", // "ZXCVBNM", // "&$()%#*", // new KeyCode[] { KeyCode.Z, KeyCode.X, KeyCode.C, KeyCode.V, KeyCode.B, KeyCode.N, KeyCode.M }, // new KeyCode[] { KeyCode.Ampersand, KeyCode.Dollar, KeyCode.LeftParen, KeyCode.RightParen, KeyCode.F13, KeyCode.Hash, KeyCode.Asterisk }, // //************ KeyCode.F13 present % for This Time // pos, // 1.0f, // Down.transform // ); // pos += new Vector2(m_Spacing.x * 8 + m_ItemSpace.x, 0); // CreateKey("", "", "", KeyCode.Space, KeyCode.Space, pos, new Vector2(1f, 1.0f), Down.transform, true, "space"); //添加的Space键位z // pos += new Vector2(m_Spacing.x + m_ItemSpace.x, 0); // CreateKey("", "", "", KeyCode.Numlock, KeyCode.Numlock, pos, new Vector2(1f, 1.0f), Down.transform, true, "menu_Keyboard_Number"); //添加的切换键位z // pos += new Vector2(m_Spacing.x * 1.5f + m_ItemSpace.x, 0); // CreateKey("", "", "", KeyCode.Return, KeyCode.Return, pos, new Vector2(1.9f, 1.0f), Down.transform, true, "menu_Keyboard2"); //添加的Enter键位z // pos.y -= m_Spacing.y + m_ItemSpace.y; //} #endregion /// <summary> /// 创建虚拟键盘并绑定到UImanager /// </summary> public void InitialVrKeyBoard() { keyboardState = VirtualKeyState.Normal; //KeyBoard State m_NormalInputState = true; m_CapsShift = false; m_InputBG.enabled = false; gameObject.SetActive(false); }
void SpecialShow(VirtualKeyState state) { if (virtualKeyInfor.m_CharStateCode == KeyCode.Numlock) { if (state == VirtualKeyState.Number) { m_KeyName.text = ""; m_ExtraImage.gameObject.SetActive(true); // Image.sprite = SpriteHelper.Instance.GetSpriteByName(virtualKeyInfor.m_KeyImage); } else { m_KeyName.text = "123"; m_ExtraImage.gameObject.SetActive(false); // m_ExtraImage.sprite = SpriteHelper.Instance.GetSpriteByName(m_DefaultImage); } } }
public void Show(VirtualKeyState state) { switch (state) { case VirtualKeyState.Normal: // m_KeyName.text = LauguageTool.Ins.GetText(virtualKeyInfor.m_NormalCharacter); m_KeyName.text = virtualKeyInfor.m_NormalCharacter; break; case VirtualKeyState.NormalShift: m_KeyName.text = virtualKeyInfor.m_ShiftCharacter; // m_KeyName.text = LauguageTool.Ins.GetText(virtualKeyInfor.m_ShiftCharacter); break; case VirtualKeyState.Number: m_KeyName.text = virtualKeyInfor.m_NumberCharacter; // m_KeyName.text = LauguageTool.Ins.GetText(virtualKeyInfor.m_NumberCharacter); break; } SpecialShow(state); }
void ShowKeyView() { if (m_NormalInputState == false) { keyboardState = VirtualKeyState.Number; } else { if (m_CapsShift) { keyboardState = VirtualKeyState.NormalShift; } else { keyboardState = VirtualKeyState.Normal; } } //Debug.Log("keyboardState " + keyboardState); for (int _index = 0; _index < allVirtualKey.Count; _index++) { allVirtualKey[_index].Show(keyboardState); } }
//Get KeyCode public KeyCode GetKeyCode(VirtualKeyState state) { KeyCode code = KeyCode.None; if (virtualKeyInfor == null) { return(code); } switch (state) { case VirtualKeyState.Normal: code = virtualKeyInfor.m_CharStateCode; break; case VirtualKeyState.NormalShift: code = virtualKeyInfor.m_CharStateCode; break; case VirtualKeyState.Number: code = virtualKeyInfor.m_NumberStateCode; break; } return(code); }
protected override void Awake() { Instance = this; keyboardState = VirtualKeyState.Normal; }
static extern short GetKeyState(VirtualKeyState nVirtKey);
public static bool IsKeyToggled(VirtualKeyState virtKey) { return((GetKeyState(virtKey) & KeyToggled) != 0); }
public static bool IsKeyToggled(VirtualKeyState virtKey) { return (GetKeyState(virtKey) & KeyToggled) != 0; }