private void OnNewInputGestureTextBoxKeyDown(object sender, KeyEventArgs e) { e.Handled = true; var vm = ViewModel as KeyboardMappingsCustomizationViewModel; if (vm != null) { var modifiers = KeyboardHelper.GetCurrentlyPressedModifiers(); if (modifiers.Count == 0 && modifiers[0] == ModifierKeys.Shift) { // Only ignore just shift, control + shift is allowed return; } var key = e.Key; if (!_keyboardMappingsAllowedKeysService.IsAllowed(key)) { return; } var finalModifiers = ModifierKeys.None; foreach (var modifier in modifiers) { finalModifiers = Enum<ModifierKeys>.Flags.SetFlag(finalModifiers, modifier); } var inputGesture = new InputGesture(key, finalModifiers); vm.SelectedCommandNewInputGesture = inputGesture; } }