/// <summary> /// 获取默认的一套IBatis Map的 各项操作Key /// </summary> /// <param name="state">标记值</param> /// <returns>默认操作标记</returns> private string GetKeyExp(KeyFlag state) { if (DefaultKey == null) { throw new Exception("Error : DefaultKey is Null !"); } return(state.ToString() + DefaultKey); }
public static void SendKey(uint keyCode, KeyFlag keyFlag) { INPUT InputData = new INPUT(); InputData.type = 1; InputData.ki.scanCode = (ushort)keyCode; InputData.ki.flags = (uint)keyFlag; Console.WriteLine(InputData.ki.scanCode); Console.WriteLine(keyCode); SendInput((uint)1, ref InputData, (int)Marshal.SizeOf(typeof(INPUT))); }
public static void SendKey(short keyCode, KeyFlag keyFlag) { INPUT[] InputData = new INPUT[1]; InputData[0].type = 1; InputData[0].U.ki.wScan = (ScanCodeShort)(MapVKey((uint)keyCode, MappingType.MAPVK_VK_TO_VSC)); // 0x14 = T for example InputData[0].U.ki.dwFlags = (KEYEVENTF)(keyFlag); InputData[0].U.ki.time = 0; InputData[0].U.ki.dwExtraInfo = UIntPtr.Zero; SendInput(1, InputData, Marshal.SizeOf(typeof(INPUT))); }
public static void SendInput(short keycode, KeyFlag keyFlag) { var inputData = new Input[1]; inputData[0].type = 1; inputData[0].ki.wScan = keycode; inputData[0].ki.dwFlags = (int)keyFlag; inputData[0].ki.time = 0; inputData[0].ki.dwExtraInfo = IntPtr.Zero; SendInput(1, inputData, Marshal.SizeOf(typeof(Input))); }
private int HookProcedureCallback(int code, IntPtr wParam, IntPtr lParam) { if (code < 0) { return(CallNextHookEx(IntPtr.Zero, code, wParam, lParam)); } KeyFlag flag = (KeyFlag)wParam; KBDLLHOOKSTRUCT hookStruct = Marshal.PtrToStructure <KBDLLHOOKSTRUCT>(lParam); uint key = hookStruct.virtualKeyCode; bool isExtendedKey; bool isAltPressed; KeyStatus keyStatus; KeyInjectionType injectionType; DateTime timeStamp = new DateTime(hookStruct.time); uint bit1 = (hookStruct.flags & 0b1); uint bit2 = (hookStruct.flags & 0b10) >> 1; uint bit5 = (hookStruct.flags & 0b10000) >> 4; uint bit6 = (hookStruct.flags & 0b100000) >> 5; uint bit8 = (hookStruct.flags & 0b10000000) >> 7; isExtendedKey = (bit1 == 1); isAltPressed = (bit6 == 1); keyStatus = (bit8 == 1) ? KeyStatus.Released : KeyStatus.Pressed; if (bit2 == 1) { injectionType = KeyInjectionType.LowIntegrityInjected; } else if (bit5 == 1) { injectionType = KeyInjectionType.Injected; } else { injectionType = KeyInjectionType.NonInjected; } HookActivated?.Invoke( key: key, injectionType: injectionType, isExtendedKey: isExtendedKey, isAltPressed: isAltPressed, keyStatus: keyStatus ); return(CallNextHookEx(IntPtr.Zero, code, wParam, lParam)); }
public CreateKeySpec( ushort position, ushort length, KeyFlag flag, byte extendedKeyType, byte nullValue, sbyte keyNumber, byte acsNumber) : base( position, length, flag, extendedKeyType, nullValue, keyNumber, acsNumber) { }
internal StatKeySpec( ushort position, ushort length, KeyFlag flag, uint unduplicatedKeyValueCount, byte extendedKeyType, byte nullValue, sbyte keyNumber, byte acsNumber) : base(position, length, flag, extendedKeyType, nullValue, keyNumber, acsNumber) { this.UnduplicatedKeyValueCount = unduplicatedKeyValueCount; }
internal StatKeySpec( ushort position, ushort length, KeyFlag flag, uint unduplicatedKeyValueCount, byte extendedKeyType, byte nullValue, sbyte keyNumber, byte acsNumber) : base( position, length, flag, extendedKeyType, nullValue, keyNumber, acsNumber) { this.UnduplicatedKeyValueCount = unduplicatedKeyValueCount; }
protected KeySpec( ushort position, ushort length, KeyFlag flag, byte extendedKeyType, byte nullValue, sbyte keyNumber, byte acsNumber) { if (position == ushort.MaxValue) { throw new ArgumentOutOfRangeException(); } this.Position = position; this.Length = length; this.Flag = flag; this.ExtendedKeyType = extendedKeyType; this.NullValue = nullValue; this.Number = keyNumber; this.AcsNumber = acsNumber; }
public virtual void Update() { if (lastUpdateFrame != Time.frameCount) { lastUpdateFrame = Time.frameCount; flags = GetFlags(); if (Down != null && IsUp) { Down(); } if (Up != null && IsDown) { Up(); } if (Hold != null && IsHold) { Hold(); } } }
void SetKeyState(ReportStatus status, KeyFlag flag, bool markAsValid = false) { Control tx = flag == KeyFlag.Reg ? textBox_RegKey : textBox_NewKey; Control pb = flag == KeyFlag.Reg ? pictureBox_RegKey_Glow : pictureBox_NewKey_Glow; switch (status) { case ReportStatus.OnlineValid: pb.BackColor = Color.LightGreen; toolTip.SetToolTip(tx, markAsValid ? ReportStatus.OnlineInvalid.ToMessage() : status.ToMessage()); return; case ReportStatus.InvalidKey: pb.BackColor = Color.Red; break; default: pb.BackColor = Color.Orange; break; } toolTip.SetToolTip(tx, status.ToMessage()); }
public void CombineKey() { KeyFlag[] keys = new KeyFlag[4]; //判断组合键 foreach (var key in lockKey) { switch (key) { case 160: case 161: if (keys[0] != KeyFlag.Shift) { keys[0] = KeyFlag.Shift; keyFlag += 4; } break; case 162: case 163: if (keys[1] != KeyFlag.Ctrl) { keys[1] = KeyFlag.Ctrl; keyFlag += 2; } break; case 164: case 165: if (keys[2] != KeyFlag.Alt) { keys[2] = KeyFlag.Alt; keyFlag += 1; } break; case 91: case 92: if (keys[3] != KeyFlag.Win) { keys[3] = KeyFlag.Win; isWin = true; keyFlag += 8; } break; } } //名字固定顺序 List <string> ls = new List <string>(); foreach (var k in keys) { if (k != KeyFlag.None) { ls.Add(k.ToString()); } } keyName = string.Join("+", ls); var comkey = (System.Windows.Forms.Keys)key; keyName += "+" + comkey.ToString(); }
public static void SendKey(short keyCode, KeyFlag keyFlag) { SendInput(keyCode, keyFlag | KeyFlag.ScanCode); }
/// <summary> /// キー入力 /// 左右や上下等同時に押したときにも対応 /// </summary> void InputKey() { Event e = Event.current; if (e.type == EventType.KeyDown) { //移動キーフラグ if (e.keyCode == KeyCode.D) { keyFlag |= KeyFlag.Key_Right; } if (e.keyCode == KeyCode.A) { keyFlag |= KeyFlag.Key_Left; } if (e.keyCode == KeyCode.W) { keyFlag |= KeyFlag.Key_Up; } if (e.keyCode == KeyCode.S) { keyFlag |= KeyFlag.Key_Down; } //左右同時押しの時 if ((keyFlag & (KeyFlag.Key_Right | KeyFlag.Key_Left)) == (KeyFlag.Key_Right | KeyFlag.Key_Left)) { playerVec.x = 0; } else { if ((keyFlag & KeyFlag.Key_Right) == KeyFlag.Key_Right) { playerVec.x = 1; } if ((keyFlag & KeyFlag.Key_Left) == KeyFlag.Key_Left) { playerVec.x = -1; } } //上下同時押しの時 if ((keyFlag & (KeyFlag.Key_Up | KeyFlag.Key_Down)) == (KeyFlag.Key_Up | KeyFlag.Key_Down)) { playerVec.y = 0; } else { if ((keyFlag & KeyFlag.Key_Up) == KeyFlag.Key_Up) { playerVec.y = -1; } if ((keyFlag & KeyFlag.Key_Down) == KeyFlag.Key_Down) { playerVec.y = 1; } } //ショットキーフラグ if (e.keyCode == KeyCode.Space) { keyFlag |= KeyFlag.Key_Space; } } else if (e.type == EventType.KeyUp) { //フラグを削除する if (e.keyCode == KeyCode.D) { keyFlag = keyFlag & ~KeyFlag.Key_Right; } if (e.keyCode == KeyCode.A) { keyFlag = keyFlag & ~KeyFlag.Key_Left; } if (e.keyCode == KeyCode.W) { keyFlag = keyFlag & ~KeyFlag.Key_Up; } if (e.keyCode == KeyCode.S) { keyFlag = keyFlag & ~KeyFlag.Key_Down; } //離した逆側のキーが押されていた時 if ((keyFlag & KeyFlag.Key_Right) == KeyFlag.Key_Right) { playerVec.x = 1; } else if ((keyFlag & KeyFlag.Key_Left) == KeyFlag.Key_Left) { playerVec.x = -1; } else { playerVec.x = 0; } //離した逆側のキーが押されていた時 if ((keyFlag & KeyFlag.Key_Down) == KeyFlag.Key_Down) { playerVec.y = 1; } else if ((keyFlag & KeyFlag.Key_Up) == KeyFlag.Key_Up) { playerVec.y = -1; } else { playerVec.y = 0; } //スペースキーが押されているとき if (e.keyCode == KeyCode.Space) { keyFlag = keyFlag & ~KeyFlag.Key_Space; } } }