Почему бы не изменить состояние клавиш-модификаторов, как ожидается во время операций перемещения мыши?
Хотите знать, если кто-то еще имеет эту проблему. При использовании виртуальной машины Windows 10 в Parallels 11 на El Capitan кажется, что вы не можете проверить клавиши-модификаторы, если вы находитесь в событии Mouse с нажатой клавишей мыши.
Я наблюдаю, если мышь в данный момент не работает, Parallels отправляет / сохраняет изменения клавиши-модификатора только тогда, когда кнопка мыши или другая, немодифицирующая клавиша клавиатуры изменяет состояние (или другая клавиша-модификатор отпускается, но не при нажатии).
Итак... кто-нибудь знает, как обойти это? Мы определенно хотим поддержать Parallels. (Я также подал ошибку с ними об этом, потому что это определенно кажется неправильным.)
Вот код Просто создайте новый проект и вставьте его в код основного окна.
bool isDragging;
protected override void OnMouseDown(MouseButtonEventArgs e)
{
if(e.ClickCount == 1 && e.ChangedButton == MouseButton.Left)
{
e.Handled = true;
isDragging = true;
CaptureMouse();
}
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if(isDragging)
{
e.Handled = true;
Title = "Pressed: " + (Keyboard.Modifiers == ModifierKeys.Shift);
}
base.OnMouseMove(e);
}
protected override void OnMouseUp(MouseButtonEventArgs e)
{
if(isDragging && e.ChangedButton == MouseButton.Left)
{
e.Handled = true;
isDragging = false;
ReleaseMouseCapture();
}
base.OnMouseUp(e);
}
1 ответ
Aaaaah! Задача решена! Это не ошибка как таковая, но она вызвана Parallels и должна быть явно включена.
В частности, вы должны изменить настройку клавиатуры на "Оптимизация для игр". Это говорит Parallels о том, чтобы быть более подробным с ключевыми уведомлениями.
Почему они решили назвать это "Оптимизация для игр" вместо чего-то более информативного или, по крайней мере, лучше объяснили, что делает эта функция, мне неведомо. Дни тестирования и пробного обхода, за которым следовал отчет об ошибках, поданный в Parallels, только чтобы выяснить, можно ли его контролировать с помощью настроек. И это от меня, архитектор программного обеспечения. Я даже не представляю, через что здесь пойдет не технарь. Действительно плохой звонок со стороны Parallels.