Создание удобного и наглядного keymap/hotkey для PyCharm или любой другой программы

от автора

Предисловие

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

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

Эта история началась с покорения 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.

ссылка на оригинал статьи https://habr.com/ru/post/549612/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *