Помогая другим стать клавиатурными ниндзя VS с помощью Code Ninja Spy
Вообразите себя клавиатурным ниндзя Visual Studio. Ваши руки никогда не покидают клавиатуры, вы пренебрегаете мышью и просто позволяете своим пальцам летать.
Теперь вы выступаете на сцене, или работаете в связке с другим, или организуете скринкаст, пальцы летают как обычно. Затем начинают появляться вопросы… «Как вы это сделали?», «Как сделать так?», «Какую комбинацию вы использовали?», «Где вы этому научились?», «Так какая это была комбинация?» и т. д., и т. д., и т. д.
Поезд вашей мысли терпит крушение, вы запинаетесь, вам приходится вслух повторять каждое действие, шлифовка вашей презентация останавливается, и, хуже всего, вы понимаете, что не можете сообщить то, что имеете в виду, вы не можете выстроить свои с трудом собранные знания и опыт и поделиться ими с аудиторией.
Если бы был какой-то визуализатор клавиатурных команд. Что-то показывающее, какие команды клавиатуры вы использовали, так чтобы каждый зритель видел, что вы нажали и следовать за вами.
Что-то вроде…
Этот инструмент загружает все клавиатурные команды Visual Studio. Когда вы нажимаете какую-то комбинацию клавиш, она высвечивается вместе с соответствующей командой Visual Studio. Таким образом вы можете смотреть через плечо опытного сотрудника и учиться тому, какие комбинации клавиш он использует.
Запускается с помощью View -> Other Windows -> CodeNinjaSpy
Показываются последние три комбинации клавиш. Если у вас есть предложения, запросы на новые возможности или сообщения об ошибках, свяжитесь со мной через твиттер (@papaMufflon) или GitHub, где это ПО также доступно (https://github.com/PapaMufflon/CodeNinjaSpy).
Так что это не только здорово, но и не было бы сообщением блога Coding4Fun, если бы не был предоставлен в общее пользование код…
Исходник этого инструмента полностью доступен для анализа.
Вот снимок решения:
И небольшой фрагмент кода:
private static string ConvertToKeyBinding(List<List<Keys>> keyCombinations)
{
var keyBinding = "";
foreach (var pressedKeysParameter in keyCombinations)
{
var pressedKeys = pressedKeysParameter.Select(k => k); // just copy
var singleKeyBinding = "";
// first ctrl
if (pressedKeys.Any(IsControlKey))
{
singleKeyBinding = "ctrl+";
pressedKeys = pressedKeys.Where(k => !IsControlKey(k));
}
// then shift
if (pressedKeys.Any(IsShiftKey))
{
singleKeyBinding += "shift+";
pressedKeys = pressedKeys.Where(k => !IsShiftKey(k));
}
// then alt
if (pressedKeys.Any(IsAltKey))
{
singleKeyBinding += "alt+";
pressedKeys = pressedKeys.Where(k => !IsAltKey(k));
}
singleKeyBinding = pressedKeys.Aggregate(singleKeyBinding, (current, pressedKey) => current + (KeyToString(pressedKey) + "+"));
singleKeyBinding = singleKeyBinding.Substring(0, singleKeyBinding.Length - 1);
keyBinding += singleKeyBinding + ", ";
}
return keyBinding.Substring(0, keyBinding.Length - 2);
}
Если вы стремитесь расширить свои знания по созданию расширений для Visual Studio или получить знание клавиатурных команд от других людей, этот проект стоит посмотреть…