private static int CommonWndProc(IntPtr oldWndProc, IntPtr hWnd, int msg, int wParam, int lParam) { if (Main.IsPluginDisabled) { return(0); } try { var result = Win32.CallWindowProcW(oldWndProc, hWnd, msg, wParam, lParam); if (msg == WM_KEYDOWN && _onKeyboardDown != null) { _onKeyboardDown.Invoke(wParam); } else if (_onMouseAction != null && Enum.IsDefined(typeof(MouseMessage), msg)) { _onMouseAction.Invoke((MouseMessage)msg); } return(result); } catch (Exception e) { Logger.Error(e.Message, e); return(0); } }
void InvalidName() { if (onInvalidName != null) { onInvalidName.Invoke(); } }
void KeyActionCancel() { if (onCancel != null) { onCancel.Invoke(); } else { Debug.LogWarning("There nothing assigned on Keyboard-Cancel-Button, please assign manualy!"); } }
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); //Console.WriteLine((Keys)vkCode); KeyboardEvent?.Invoke(null, new KeyboardEventArgs((Keys)vkCode)); } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
public override bool Poll() { bool returnStatus = false; KeyStateEventData[] eventDataArray; lock (_keyEventData) { eventDataArray = _keyEventData.ToArray(); _keyEventData.Clear(); } if (eventDataArray.Length == 0) { return(returnStatus); } Key[] currentstate = GetKeyState(_keyStateArray, GetPressedKeys(eventDataArray), GetRelasedKeys(eventDataArray)); Key[] pressedKeys = GetNewItems(_keyStateArray, currentstate); Key[] releasedKeys = GetMissingItems(_keyStateArray, currentstate); _keyStateArray = currentstate; KeyEventData eventData = new KeyEventData(currentstate, pressedKeys, releasedKeys); if (pressedKeys.Length != 0 || releasedKeys.Length != 0 || currentstate.Length != 0) { KeyboardEvent?.Invoke(new KeyEventArgs(eventData)); returnStatus = true; } if (pressedKeys.Length != 0) { KeyboardKeyPressEvent?.Invoke(new KeyEventArgs(eventData)); } if (releasedKeys.Length != 0) { KeyboardKeyReleaseEvent?.Invoke(new KeyEventArgs(eventData)); } return(returnStatus); }
private unsafe static IntPtr LLKeyboardCallback(int nCode, KeyboardButtonsState wParam, KeyBoardLowlevelHookStruct *lParam) { if (nCode > -1) { KeyBoardLowlevelHookStruct hookStruct = *lParam; VirtualKey key = hookStruct.VkCode; if (key == VirtualKey.LShift) { LShiftPress = (wParam == KeyboardButtonsState.WM_KEYDOWN); } if (key == VirtualKey.RShift) { RShiftPress = (wParam == KeyboardButtonsState.WM_KEYDOWN); } if (key == VirtualKey.CapsLock) { CapsPressed = (wParam == KeyboardButtonsState.WM_KEYDOWN); } string v = (LShiftPress || RShiftPress || CapsPressed) ? key.ToString() : key.ToString().ToLower(); KeyboardEvent.Invoke(v, wParam, hookStruct); } return(User32.CallNextHookEx(KBHook, nCode, (IntPtr)wParam, (IntPtr)lParam)); }
private void AddKeyboard(JsonArray rows, Transform container) { Navigation buttonNavNone = new Navigation(); buttonNavNone.mode = Navigation.Mode.None; float x = 0f, y = 0f; for (int r = 0; r < rows.Count; r++) { x = rows[r]["x"]; y = rows[r]["y"]; JsonArray keys = rows[r]["keys"] as JsonArray; for (int k = 0; k < keys.Count; k++) { string keyName = "BLANK"; Vector2 buttonSize = defaultSize; if (keys[k].ContainsKey("size")) { keyName = keys[k]["text"]; buttonSize = otherSizes[keys[k]["size"]]; } else { keyName = keys[k]; } // create GameObject GameObject keyboardKey = new GameObject(); keyboardKey.name = "Keyboard Key " + keyName; RectTransform rectTransform = keyboardKey.AddComponent <RectTransform>(); rectTransform.SetParent(container); rectTransform.localScale = Vector3.one; rectTransform.anchorMin = new Vector2(0, 1); rectTransform.anchorMax = new Vector2(0, 1); rectTransform.pivot = new Vector2(0, 1); rectTransform.sizeDelta = buttonSize; rectTransform.anchoredPosition = new Vector2(x, y); Image image = keyboardKey.AddComponent <Image>(); image.color = keyColor; //Button button = keyboardKey.AddComponent<Button>(); //button.navigation = buttonNavNone; //button.onClick.AddListener(() => { // keyboardEvents.Invoke(keyName); //}); EventTrigger eventTrigger = keyboardKey.AddComponent <EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerClick; entry.callback.AddListener((eventData) => { keyboardEvents.Invoke(keyName); }); eventTrigger.triggers.Add(entry); x += buttonSize.x + spacing; } } }
public void Receive(KeyboardEvent @event) => KeyboardEvent?.Invoke(this, @event);
private void NewKeyboardEvent(IntPtr wParam, KBDLLHOOKSTRUCT hookStruct) { KeyboardEvent?.Invoke(this, new LowLevelKeyEventArgs((EventType)wParam, hookStruct)); }