Предисловие

Современные программы имеют богатый функционал. Беда в том, что на хорошее овладение этим богатым функционалом уходят килограммы времени.

Некоторые приемы и лайфхаки могут здорово сократить эти самые затраты времени на изучение практически любой программы.

Началось всё с покорения CAD-системы 3D-моделирования NX от компании Siemens. Большая, навороченная, с множеством возможностей, модулей, команд, кнопок и менюшек программа, в которой на данный момент трудится добрая половина инженеров-конструкторов-авиастроителей Руси-матушки.

Конечно, чтобы не шокировать обилием значков и команд, в программе есть так называемые "роли". Например в роли для начинающего показано ровно столько команд и менюшек, чтобы смоделировать что-нибудь угловатое/простое. Потом, по мере прокачки навыков в этой программе, открываешь для себя новые команды, новые возможности и т.д. И для таких случаев, есть "роль" пожирнее и повкуснее. Однако, в этом вашем авиастроении детали настолько замученные и закрученные, что в конце концов начинает не хватать и "Расширенной роли с полными меню", и тут начинается... весь экран программы в кнопках, все в инструментальных панелях.
Со временем у каждого конструктора складывается характерный для него "стиль" работы в CAD-системе. Наиболее часто используемые кнопки вытаскиваются "поближе", редкие кнопки наоборот пропадают с "инструментальных панелей". Как вдруг, к тебе подходит коллега, просит подойти к его компьютеру и чего-нибудь там помочь, с какой-нибудь там подсечкой на профиле. А там все кнопки в других местах, все по другому и не там где у тебя, в голове начинается дикий скрип.

А потом подходит другой, третий, десятый. И в пятьдесят пятый раз в многочисленных выпадающих меню поиск нужной команды. ПАМАГИТИ.

Hotkey/Горячие клавиши/бинды/комбинации или создание панацеи

Критическая масса для создания серьезного решения этой проблемы набралась быстро).
Идея состояла в том, чтобы создать универсальный интерфейс, максимально удобный для всех, но не задевающий "инструментальные панели" и индивидуально-настроенное положение кнопок каждого.
В итоге решил настроить комбинации на основную массу используемых в повседневной практике команд, и установить такую настройку вообще всем, и более никогда мучительно не вспоминать ГДЕ же она, нужная кнопка.

Так сложилось, что наверное все современные программы при невообразимо богатом функционале и внушительном количестве команд, в большинстве своем имеют весьма слабый набор горячих клавиш/hotkey. И даже те комбинации, которые идут "из коробки", доставляют мало удовольствия, потому что требуют обе руки, а иногда и ноги для нажатия, распылены по клавиатуре, бессистемны. Это связано с тем, что используется идеология "первой буквы" команды. Например, Ctrl+P=Print(печать), Ctrl+O=Open(Открыть). Такой подход в назначении горячих клавиш и эффективном взаимодействии с программой весьма и весьма ограничен количеством букв в алфавите. А количество возможных комбинаций для самой обычной клавиатуры, оно же за 4 сотки переваливает.

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

Т.е. для удобства работы в графических редакторах ТРЕБУЕТСЯ, чтобы все бинды "были" на левой свободной руке, на левой половине клавиатуры.

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

Итак, первый этап это сбор названий команд и соответствующих им иконок из программы.

Стоит отдать должное, в графических редакторах почти на все команды есть иконки. Иконки показывают суть выполняемой команды, информативны и удобны к запоминанию и узнаванию. Очень скундный набор иконок к командам оказался в PyCharm. Добавьте к этому слабое владение английским, полное непонимание описаний команд из-за специальных терминов и получите ощущение, что даже поверхностно разобраться в функционале программы - недели или даже месяцы. Как результат, неиспользование мощных возможностей заложенных в программу, просто потому что "какая-то непонятная команда".

Так вот, общий алгоритм действий был такой. Собрать список всех команд с иконками, перевести все это дело на русский язык, попробовать/понажимать/понять что команда делает. И если команда интересная, но нет иконки, то подобрать свою (например с сайта https://www.flaticon.com/). А если иконка есть, то на помощь приходят такие классные программы как: скриншотер Greenshot для вырезания области экрана, и графический редактор GIMP для обрезания иконки уже "поточнее".

К сожалению, не нашел как вытянуть разом весь список, а перепечатывание названий over9000 команд казалось делом не самым бодрым и веселым, то крайне полезной оказалась программа для распознавания текста с выделенной области экрана CaptureToText. Все рекомендуемые программы opensourse.

Далее создаем Word-файл, в нем табличку. В одной колонке будут названия команд, в другой иконки, в третьей (по желанию) перевод названия команд на великий и могучий.

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

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

Для PyCharm, в частности, удалось собрать неплохой навигационный блок команд. Перемещение по коду (не переставляя и не отрывая рук от клавиатуры) стало просто захватывающим, по сравнению с кручением-верчением колесика мыши туда-сюда. Оказалось, что можно "прыгать" к интересующему месту, а потом обратно, а потом сразу в другое место... это было почти откровением)

СОВЕТ: сразу проверяйте как нажимается та или иная комбинация, потому что есть зоны не самые удобные для нажатия одной рукой. Например комбо Ctrl+Alt+Shift+6 требует минимум длинных и гибких пальцев или владения слепым десятипальцевым кунг-фу набора текста).

Человеческая голова хорошо запоминает образы (иконки) и плохо списки (Ctrl+Alt+Shift+6). Поэтому, распечатываем keymap на A4, вешаем рядом с монитором, и за пару месяцев руки сами потянутся в поисках нужной комбинации. И даже заучивать ничего не надо. Подзабыл - подсмотрел.

В скриншоте ниже keymap/208 комбинаций для PyCharm. Таблица, как можно видеть, без рядов с модификатором Shift, потому что при работе с текстом Shift+буква=БОЛЬШАЯ БУКВА. Однако, такого ограничения нет в графических редакторах.

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

После того как карта с комбинациями готова, остается забить все комбинации в программу.

Наработки/исходники

Итог

Для NX такой keymap на 160 комбинаций делал долго и назвал BFR= BigFuc*ingRole (по времени совпало с созданием некоей ракеты от некоей космокомпании). Впервые всегда долго.

Зато сейчас у многих конструкторов на ЭМЗ им. В.М. Мясищева такая штука есть и приносит удовольствие от использования каждый день.

И когда приходят молодые ребята, только только после университета, то сразу учатся и осваивают NX "на комбинациях", и это оказалось очень даже удобно и продуктивно. Потому что запомнить 100 комбинаций много проще и быстрее, чем запомнить 100 извилистых путей по менюшкам до нужной команды (особенно когда подсказка перед глазами).

На PyCharm keymap на +200 комбинаций сделал быстро - технология отработана). Ей и спешу поделиться.

Заключение

Конечно, хотелось бы, чтобы спустя время, в любой сложной программе появилось окно настройки с такой вот картой команд и иконок, и переназначение комбинаций осуществлялось простым перетаскиванием нужной иконки в нужную ячейку, а не как сейчас: "окно, а в нём список команд длиной с рулон туалетной бумаги". Вот это был бы EpicWin.