Reputation: 2860
I am implementing shortcut key combination logic like
Ctrl + A
Ctrl + Alt + D
but now I am looking for a trick to implement keyboard key combination without hotkey combination like : A + D but not getting any right things.
So please help to implement it.
Updated
Currently I am not able to add key combination other than hotkey combination.because whenever I am pressing two keys like : **A + D**
it returns only single keys ascii so I am not getting two keys combination.
I have used following stuff http://www.codeproject.com/Articles/442285/Global-Shortcuts-in-WinForms-and-WPF
Upvotes: 0
Views: 250
Reputation: 12544
In the past I used the GetKeyState
Api (inside a similar class for catching system wide shortcuts). Perhaps new variants are available nowadays (WPF has a KeyBoard.IsKeyDown I believe), but this should still work:
[DllImport("user32", CharSet = CharSet.Auto,
ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
static extern short GetKeyState(int keyCode);
public static bool CheckKeysPressed(params Keys[] keys)
{
for (int i = 0; i < keys.Length; i++)
if (!CheckKeyPressed((int)keys[i])) return false;
return true;
}
public static bool CheckKeyPressed(Keys key)
{
return CheckKeyPressed((int)key);
}
public static bool CheckKeyPressed(int vkey)
{
short ks = GetKeyState(vkey);
return ks == 1;
}
Usage: if(CheckKeysPressed(Keys.A, Keys.D)) {/*...*/}
Upvotes: 1
Reputation: 339
Declare 2 bool
variable (say IsADown
and IsDDown
) and "true
" them on events of both A and D. Also detect on both events if other bool
is down or not. If it is, then do what you have to do with both button pressed.
Upvotes: 0