Контекстные меню VS2010/2012 и клавиатура

от автора

Как разработчик, я много времени провожу в Visual Studio. И, должен заметить, что большую часть времени Visual Studio меня вполне устраивает. Но иногда бывают и не очень приятные моменты. Одна из таких проблем, которая долго мне мешала, заключается в том, что в VS2010 контекстные меню работают немного не так, как в VS2005/2008. И в VS2012 эта ситуация не изменилась.

Итак, что это за отличия? Так сложилось, что при работе в Visual Studio я пользуюсь в основном клавиатурой. И контекстные меню в редакторе кода я тоже открываю с клавиатуры – с помощью соответствующей клавиши (Apps key). Кроме того, я давно привык использовать какие-то клавиатурные паттерны, и использую я их, не задумываясь.

В VS2008 положение курсора мыши не влияло на навигацию по контекстному меню с клавиатуры. И я был уверен, что последовательное нажатие клавиш «Apps, Down, Down, Enter, Up, Enter» всегда вызовет функцию «Organize Usings > Remove and Sort»:

image

А вот в VS2010 это поведение изменилось! Если курсор мыши расположен над открывшимся контекстным меню, то тот пункт, над которым он оказался, сразу становится активным. Соответственно, последовательность «Apps, Down, Down, Enter, Up, Enter» далеко не всегда приводит к желаемому результату.

А иногда результат может быть и не очень приятным. При использовании Visual SVN в некоторых случаях приведенная выше последовательность нажатий на кнопки может вызвать функцию «Revert whole file»!

image

Это не фатально, функция Undo восстанавливает все изменения, но такое поведение Visual Studio здорово раздражает.

В Visual Studio 2012 контекстные меню ведут себя немного по другому, но суть осталась та же – положение курсора мыши по-прежнему влияет на их работу, и такое поведение по-прежнему мешает работать.

Я попробовал выяснить, можно ли как-то изменить такое поведение Visual Studio, но не смог быстро найти решение. Тогда я пошел напролом и написал небольшую утилиту, которая исправляет эту проблему. Эта утилита отслеживает нажатия на клавишу Apps, и если эта клавиша нажата в Visual Studio, она просто сдвигает курсор мыши к верхней границе экрана до того, как будет открыто контекстно меню.

Скомпилированную версию и исходный код можно найти здесь:

http://code.google.com/p/vs-ctx-menu-fix/downloads/list

Утилита работает в Windows 7 и Windows 8 x64. Первую версию я написал в январе 2011 года, сейчас я ее просто обновил для работы с Visual Studio 2012.

Надеюсь, что эта утилита окажется полезной не только мне! 🙂

ссылка на оригинал статьи http://habrahabr.ru/post/157389/