Javidan Guliyev
Javidan Guliyev

Reputation: 227

How to know when ctrl+space pushed?

I want to call function when Ctrl+space pushed. I searched more but couldn't find what I want.

Upvotes: 2

Views: 2434

Answers (4)

mlemay
mlemay

Reputation: 1637

If you want to catch all the keys, whether you have the focus or not, in your class you just need to add in the constructor:

// To capture keyboard
EventManager.RegisterClassHandler(typeof(Window), Keyboard.KeyDownEvent, new System.Windows.Input.KeyEventHandler(keyDown), true);

And add the method: (it's an example, it's not for adapted for what you want)

private void keyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Space)
    {
        code;
    }
    else if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) &&    Keyboard.IsKeyDown(Key.T))
    {
        code;
    }
}

Upvotes: 1

Marco
Marco

Reputation: 57573

Use something like this:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Space && 
       (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        // Do what you need here
    }
}

Upvotes: 2

Rohit Vats
Rohit Vats

Reputation: 81243

This should get you working -

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
  if (e.Key == Key.Space && Keyboard.Modifiers == ModifierKeys.Control)
  { 
  }
}

Upvotes: 1

Adrian Fâciu
Adrian Fâciu

Reputation: 12552

You need to add an event handler for KeyDown like: KeyDown="TextBox_KeyDown" on your TextBox. And then in the event handler:

if (e.Key == Key.Space && e.KeyboardDevice.Modifiers == ModifierKeys.Control)
{ 
      //Do Stuff
}

Upvotes: 7

Related Questions