public bool IsKeyToggled(DIKCode keyCode) { if (!keyInScope) { return(false); } return((pressedKeys[(int)keyCode] & 1) != 0); }
public void SetToggleState(DIKCode keyCode, bool toggled) { if (toggled) { pressedKeys[(int)keyCode] |= 1; } else { pressedKeys[(int)keyCode] &= 0xFD; } }
/// <summary> /// tries Parse an integer representing a DIK code to its representing enum value. /// </summary> /// <param name="code">The integer code.</param> /// <param name="dik">The variable to assign the dik code.</param> /// <returns></returns> public static bool TryParse(int code, out DIKCode dik) { try { dik = (DIKCode)code; return(true); } catch (InvalidCastException) { dik = DIKCode.NONE; return(false); } }
/// <summary> /// Set the state of the given key code. /// </summary> /// <param name="code"></param> /// <param name="pressed"></param> public static void SetKeyState(DIKCode code, bool pressed) { int scode = (int)code; // Move the DIK entension flag to a higher byte // ex: DIK_RCONTROL (bin 1001 1100) -> bin 1 0001 1100 scode = (scode & 0x80) << 1 | scode & 0x7F; string state = pressed ? "down" : "up"; string cmd = "send {{sc{0:X3} {1}}}"; ahk.ExecRaw(string.Format(cmd, scode, state)); }
public bool WasKeyPressed(DIKCode keyCode) { if (!keyInScope) { return(false); } int val = pressedKeys[(int)keyCode] & 4; pressedKeys[(int)keyCode] &= 3; return(val == 4); }
public DIKCode[] GetPressedKeys() { if (!keyInScope) { return new DIKCode[] { } } ; var pressed = new List <DIKCode>(); for (int i = 0; i < pressedKeys.Length; i++) { DIKCode dik = (DIKCode)i; if (IsKeyPressed(dik)) { pressed.Add(dik); } } return(pressed.ToArray()); }
/// <summary> /// Test if the given key was put down before the call. Use it in loops to toggle stuff. /// </summary> /// <param name="keyCode">The key code.</param> /// <returns></returns> public static bool OnKeyDown(DIKCode keyCode) { return(SafeInvoke(f => f.WasKeyPressed(keyCode))); }
/// <summary> /// Set the toggled state of a given key. This does NOT simulate a key press. /// </summary> /// <param name="keyCode">The key code.</param> /// <param name="toggled">The state of the key.</param> public static void SetToggledFlag(DIKCode keyCode, bool toggled) { SafeInvoke(f => f.SetToggleState(keyCode, toggled)); }
/// <summary> /// Test if the given key is toggled. /// </summary> /// <param name="keyCode">The key code.</param> /// <returns></returns> public static bool IsKeyToggled(DIKCode keyCode) { return(SafeInvoke(f => f.IsKeyToggled(keyCode))); }
/// <summary> /// Simulate a keypress on the given key. /// </summary> /// <param name="code">The key code.</param> /// <param name="pressTimeMS">The time the key will be pressed.</param> public static void PressKey(DIKCode code, int pressTimeMS) { SetKeyState(code, true); Thread.Sleep(pressTimeMS); SetKeyState(code, false); }
/// <summary> /// Simulate a keypress on the given key. /// </summary> /// <param name="code">The key code.</param> public static void PressKey(DIKCode code) { PressKey(code, 20); }
/// <summary> /// Create an input binding from a key. /// </summary> /// <param name="key"></param> public InputBinding(DIKCode key) { KeyBinding = key; MouseBinding = MouseCode.None; }
/// <summary> /// Create an input binding from a key and a mouse button. /// </summary> /// <param name="key"></param> /// <param name="btn"></param> public InputBinding(DIKCode key, MouseCode btn) { KeyBinding = key; MouseBinding = btn; }