Freigeben über


Помогая другим стать клавиатурными ниндзя VS с помощью Code Ninja Spy

Грэг Дункан

Вообразите себя клавиатурным ниндзя Visual Studio. Ваши руки никогда не покидают клавиатуры, вы пренебрегаете мышью и просто позволяете своим пальцам летать.

Теперь вы выступаете на сцене, или работаете в связке с другим, или организуете скринкаст, пальцы летают как обычно. Затем начинают появляться вопросы… «Как вы это сделали?», «Как сделать так?», «Какую комбинацию вы использовали?», «Где вы этому научились?», «Так какая это была комбинация?» и т. д., и т. д., и т. д.

Поезд вашей мысли терпит крушение, вы запинаетесь, вам приходится вслух повторять каждое действие, шлифовка вашей презентация останавливается, и, хуже всего, вы понимаете, что не можете сообщить то, что имеете в виду, вы не можете выстроить свои с трудом собранные знания и опыт и поделиться ими с аудиторией.

Если бы был какой-то визуализатор клавиатурных команд. Что-то показывающее, какие команды клавиатуры вы использовали, так чтобы каждый зритель видел, что вы нажали и следовать за вами.

Что-то вроде…

Code Ninja Spy

clip_image002

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

Запускается с помощью View -> Other Windows -> CodeNinjaSpy

Показываются последние три комбинации клавиш. Если у вас есть предложения, запросы на новые возможности или сообщения об ошибках, свяжитесь со мной через твиттер (@papaMufflon) или GitHub, где это ПО также доступно (https://github.com/PapaMufflon/CodeNinjaSpy).

Так что это не только здорово, но и не было бы сообщением блога Coding4Fun, если бы не был предоставлен в общее пользование код…

Исходник этого инструмента полностью доступен для анализа.

Вот снимок решения:

clip_image004

clip_image006

И небольшой фрагмент кода:

 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 или получить знание клавиатурных команд от других людей, этот проект стоит посмотреть…