Предисловие
Современные программы имеют богатый функционал. Беда в том, что на хорошее овладение этим богатым функционалом уходят килограммы времени.
Некоторые приемы и лайфхаки могут здорово сократить эти самые затраты времени на изучение практически любой программы.
Эта история началась с покорения CAD-системы 3D-моделирования NX от компании Siemens. Большая, навороченная, с множеством возможностей, модулей, команд, кнопок и менюшек программа, в которой на данный момент трудится добрая половина инженеров-конструкторов-авиастроителей Руси-матушки.
Конечно, чтобы не шокировать обилием значков и команд, в программе есть так называемые "роли". Например в роли для начинающего показано ровно столько команд и менюшек, чтобы смоделировать что-нибудь квадратное/угловатое/простое. Потом, по мере прокачки навыков в этой программе, начинаешь открывать для себя новые кнопки, новые возможности и т.д. И для таких случаев, есть "роль" пожирнее и повкуснее. Однако, в этом вашем авиастроении детали настолько замученные и закрученные, что в конце концов начинает не хватать и "Расширенной роли с полными меню", и тут начинается... весь экран программы в кнопках и т.д. и т.п.
Со временем у каждого конструктора складывается характерный для него "стиль" работы в CAD-системе. Наиболее часто используемые кнопки вытаскиваются "поближе", редкие кнопки наоборот пропадают с "инструментальных панелей". И тут, к тебе подходит коллега, просит подойти к его компьютеру и чего-нибудь помочь с какой-нибудь там подсечкой на профиле. А там все команды в других местах, все по другому и не там где у тебя, в голове начинается дикий скрип.
А потом подходит другой коллега и третий и пятый. И третий и пятый, и пятьдесят пятый раз в многочисленных выпадающих менюшках поиск нужной команды. ПАМАГИТИ.
Hotkey или создание панацеи
Критическая масса для создания серьезного решения этой проблемы была набрана быстро). Идея была в том, чтобы настроить горячие клавиши на 99% используемых в повседневной практике команд, и установить их вообще всем, и более никогда мучительно не вспоминать ГДЕ она, нужная кнопка. Идея в том, чтобы создать универсальный интерфейс, максимально удобный и для всех, но не задевающий "инструментальные панели".
Пошли первые потуги. Стоит отдать должное, в CAD-системе NX почти на все команды есть иконки. Иконки показывают суть команды.
Итак, первый этап это сбор иконок из программы. Если на какую-либо команду нет иконки, ничто не мешает воспользоваться готовыми например с сайта https://www.flaticon.com/. А если иконка есть, то на помощь приходят такие классные программы как: скриншотер Greenshot для вырезания области экрана, и графический редактор GIMP для обрезания иконки уже "поточнее". Т.к. перепечатывание названий over9000 команд дело не самое бодрое и веселое, то крайне полезной может оказаться программа для распознавания текста с выделенной области экрана CaptureToText. Все opensourse.
Далее создаем Word-файл, в нем табличку. В одной колонке будут названия команд, в другой иконки, в третьей перевод названия команд на великий и могучий для всяких там (как и автор) слабо понимающих энглиш лангуаге.
Так уж сложилось, что все современные программы при невообразимо богатом функционале и пугающем количестве команд, в большинстве своем имеют весьма слабый набор горячих клавиш/hotkey. И даже те комбинации, которые идут "из коробки", доставляют мало удовольствия, потому что требуют обе руки, а иногда и ноги для нажатия. Это связано с тем, что используется идеология "первой буквы" команды. Например, Ctrl+P=Print(печать), Ctrl+O=Open(Открыть). Этот подход в создании горячих клавиш и эффективном взаимодействии с программой весьма и весьма и весьма ограничен количеством букв в алфавите. А количество возможных комбинаций для самой обычной клавиатуры оно же за 4 сотки переваливает.
В CAD-приложениях 3D-моделирования так вообще, исключительно-желательно не отрывать правой руки от мышки/трекбола... особенно на чемпионатах по профмастерству в авиастроении.
Т.е. для графических редакторов или программ 3D-моделирования ТРЕБУЕТСЯ, чтобы все бинды были так сказать на "левой свободной руке".
Самые частые команды ближе всего к клавишам-модификаторам, те же команды что менее популярны- подальше. Собственно, почти готовый рецепт успеха.
После того, как великий сбор названий команд и иконок окончен, можно приступить к самому интересному. А именно, можно приступить к перекомпоновке этих команд таким образом, чтобы было удобно до безобразия. Создаем еще один файл word. А в нем создаем могучую таблицу по образу и подобию. Системные сочетания клавиш никуда не денешь, хотя они по своему удобны.
Ну а дальше, начинаем перетаскивать из таблицы со всеми командами/иконками в таблицу нашей клавиатуры в соответствующие ячейки. Из первой таблицы убывает, вторая таблица заполняется. Перекомпоновываем команды согласно принципов удобства нажимания, удобства запоминания, смежности выполняемых действий, общности, в общем, создаем наглядную карту/keymap для программы.
СОВЕТ: сразу проверяйте как нажимается та или иная комбинация, потому что есть зоны не самые удобные для нажатия одной рукой, например Ctrl+Alt+Shift+6 требует минимум длинных и гибких пальцев и владения слепым десятипальцевым кунг-фу набора текста).
На скриншоте показан вариант таблицы для PyCharm, т.е. без ряда с модификатором Shift, потому что Shift+буква=БОЛЬШАЯ БУКВА. Однако, такого ограничения нет в графических редакторах. В конце концов, получится первый экспериментальный вариант keymap, который будет много интереснее в обращении нежели огромной длины плохочитаемый список комбинаций.
Человеческая голова хорошо запоминает местоположение и плохо списки. Поэтому распечатав keymap на листочке A4 и повесив рядом с монитором, за пару месяцев руки сами потянутся в поисках нужной комбинации. Я гарантирую это. В скриншоте ниже keymap/208 комбинаций на PyCharm.
Наработки/исходники
После того как мегатаблица Менделеева с комбинациями готова, начинается самое скучное - забить все комбинации в программу.
Потом конечно период озарений и перекомпоновки, допиливания, но это все будут мелкие улучшения.
Итог
Для NX такой keymap на 160 комбинаций делал около двух недель и назвал BFR= BigFuc*ingRole, потому что по времени совпало с созданием некоей ракеты от некоей частной космокомпании). Долго потому что в первый раз, все вкривь и вкось, и вообще начал не оттуда, не в той программе, без нужного софта и не так, в общем, поиск он и есть поиск.
Зато сейчас у многих конструкторов на ЭМЗ им. В.М. Мясищева такая штука есть и приносит удовольствие от использования каждый день. В скором времени надеюсь поделится с остальными авиаторами.
Когда приходят молодые ребята, только только после университета где их "учили" компасу 3де/автосаду/сад системам там всяким, сразу учатся и осваивают NX "на комбинациях" и это оказалось очень даже удобно и продуктивно. Потому что запомнить 160 комбинаций много проще и быстрее, чем запомнить 160 путей по менюшкам до нужной команды (особенно когда подсказка перед глазами на а4 распечатанная висит). И если кому-то, что-то показать, то просто идешь за его рабочий комп и комбинациями хлоп хлоп. Единая универсальная система и всё тут.
На PyCharm keymap на 208 комбинаций сделал за пару тройку вечеров. Осваиваю только.
Заключение
Конечно, хотелось бы, чтобы спустя время, в любой сложной программе появилось окошко с такой вот мегатаблицей команд и иконок, и переназначение комбинаций осуществлялось простым перетаскиванием нужной иконки в нужную ячейку, а не как сейчас: "окно, а в нём список команд длиной с рулон туалетной бумаги". Вот это был бы EpicWin.