protected TextClick? GetTextClick(GlobalKeyboardMessage Message, GlobalKeyboardEventSourceCallbackData keyboardHookStruct) { var ret = default(TextClick?); //System.Diagnostics.Debug.WriteLine($@"{Message}: {keyboardHookStruct.ScanCode} => {keyboardHookStruct.KeyCode}" ); if (Message.IsKeyDown()) { var virtualKeyCode = keyboardHookStruct.Data.KeyCode; var scanCode = keyboardHookStruct.Data.ScanCode; var fuState = keyboardHookStruct.Data.Flags; if (keyboardHookStruct.Data.KeyCode == KeyCode.Packet) { var ch = (char)scanCode; ret = new TextClick(new[] { ch }); } else { var UnicodeFlags = ToUnicodeExFlags.None; if (fuState.HasFlag(KeyboardHookStructFlags.Extended)) { UnicodeFlags |= ToUnicodeExFlags.Menu; } if (State.TryGetCharFromKeyboardState(virtualKeyCode, scanCode, UnicodeFlags, out var chars)) { if (chars is { } V1 && V1.Length > 0) { ret = new TextClick(V1); } } } } return ret; }
protected EventSourceEventArgs<KeyInput> GetInputEventArgs(GlobalKeyboardMessage Message, GlobalKeyboardEventSourceCallbackData keyboardHookStruct) { var keyData = keyboardHookStruct.Data.KeyCode; var isKeyDown = Message.IsKeyDown(); var isKeyUp = Message.IsKeyUp(); var isExtendedKey = keyboardHookStruct.Data.Flags.HasFlag(KeyboardHookStructFlags.Extended); var Status = KeyStatusValue.Compute(isKeyDown, isKeyUp); var Data = new KeyInput(keyData, isExtendedKey, keyboardHookStruct.Data.ScanCode, Status); var ret = EventSourceEventArgs.Create(keyboardHookStruct.Data.Time, Data, keyboardHookStruct); return ret; }
public static bool IsKeyUp(this GlobalKeyboardMessage This) { return(This == GlobalKeyboardMessage.KeyUp || This == GlobalKeyboardMessage.SysKeyUp); }
public static bool IsKeyDown(this GlobalKeyboardMessage This) { return(This == GlobalKeyboardMessage.KeyDown || This == GlobalKeyboardMessage.SysKeyDown); }