Хоткеи в Фигме на маке
Мы с дизайнерами M18★ работаем в Скетче, но кто-то сидит на Фигме делая свои проекты. Решил посмотреть чем же отличается Фигма и какие у нее преимущества. На мой взгляд хайп сильно раздут, многие вещи в Скетче удобнее (например автоматическое перемещение мастер-символа с артборда на страницу символов) или скоро будут удобнее. Но мощный плюс Фигмы в синхронизации макетов и дефолтно встроенном гите.
Но сегодня о хоткеях. Клавиатурные сокращения в Фигме решены через жопу (уж простите). После привычной работы в PS и Скетче все вызывает недоумение. Возможно если бы это был первый векторный редактор можно было бы простить но на дворе уже почти 2020, алё.
Хрен знает зачем у вас есть четыре (!) способа переключения вкладок но нет возможности поставить зум до 100 % масштаба на cmd+1 (можно воспользоваться cmd+F1 или любой другой незанятой комбинацией но кому нужны разные хоткеи в разных программах?).
Можно назначить клавиши для десктопной версии через Системные настройки, но и там это не работает гладко — занятые сокращения не заменить, приходится пользоваться свободными комбинациями. Ну то есть если я хочу поставить православный Shift+Cmd+] на Bring to Front то это не получится сделать, потому что эта комбинация зарезервирована под… переключение вкладок (которое вообще нигде не отключить).
С переназначением тоже проблемы — например при задании ctrl+H для выравнивания по центру родителя (а не alt+H, потому что так удобнее) хоткей переназначается но работает со второго нажатия. Напомню, что на винде дефолтно вообще нельзя заменить хоткеи (сейчас вроде как можно но не через само приложение а через сторонние программы.
Что делать. Вариант первый (через систем преференсес)
Этот вариант описывался много раз, повторим. Идем в Системные настройки → Клавиатура → Сочетания клавиш → Сочетания клавиш программ

Нажимаем на плюсик, выбираем в выпадающем списке Фигму, прописываем пункт меню буква в букву и назначаем клавишу:

Все, хоткей переназначен. Идем в программу и пробуем, работает он или нет.
Вариант второй (виндоус-стайл, но единственно рабочий для тех кто хочет сделать все под себя)
Здесь уже придется менять код Фигмы. Идем в Программы, кликаем правой кнопкой мыши на иконке программы и выбираем «Показать содержимое пакета», проваливаемся в контейнер программы. Заходим в Contents и далее в Resources. В этой папке лежит файл app.asar, его и будем менять:

Лучше скопировать куда-то себе оригинал, чтобы случайно не затереть его.
Файл с расширением .asar представляет что-то типа контейнера-архива, в котором могут лежать другие файлы, например js или css. Это формат фреймворка Электрон https://electronjs.org/
Для того чтобы попасть внутрь файла нужен архиватор, поддерживающий .asar, на мак я такого к сожалению не нашел — Unarchiver не поддерживает этот формат, дефолтный маковский архиватор тоже. Пришлось воспользоваться виндовой машиной с 7zip. Кто сможет доходчиво объяснить как развернуть Электрон на рабочей машине — пишите в комменты.
Для 7zip необходим плагин Asar7z, добавляющий поддержку .asar http://www.tc4shell.com/en/7zip/asar/ Скаченный плагин нужно положить в созданную в папке 7zip папку с именем Formats, тогда он заработает.
Заходим в файл (можно не разархивировать а просто зайти в него архиватором). В нем лежат js, html и css файлы Фигмы, нам нужны два — menu.js и window_manager.js Первый отвечает за клавиатурные сокращения пунктов меню, второй за работу с окнами.
Открываем их в текстовом редакторе и меняем необходимые строки кода. Например я хочу назначить на Bring to Front комбинацию Shift+Cmd+], как в люстре и фотошопе. Открываю файл menu.js и ищу строки, отвечающие за перемещение объектов и изменяю их на необходимые:
SEPARATOR,
actionItem('Bring to Front', 'CmdOrCtrl+Shift+]', 'bring-to-front'),
actionItem('Bring Forward', 'CmdOrCtrl+]', 'bring-forward'),
actionItem('Send Backward', 'CmdOrCtrl+[', 'send-backward'),
actionItem('Send to Back', 'CmdOrCtrl+Shift+[', 'send-to-back'),
С выпиливанием переключения табов по Cmd+цифра немного сложнее — идем в window_manager.js и комментируем эти строчки кода (расположены в разных местах):
'CommandOrControl+9': 'SelectLastTab',
'Control+PageUp': 'ShowPreviousTab',
'Control+PageDown': 'ShowNextTab',
for (let i = 1; i < 9; i++) {
shortcuts[`CommandOrControl+${i}`] = 'SelectTabAtIndex';
}
if (IS_MAC) {
Object.assign(shortcuts, {
'CommandOrControl+Shift+{': 'ShowPreviousTab',
'CommandOrControl+Shift+}': 'ShowNextTab',
['SelectTabAtIndex', () => win.postMessageToShellBinding('selectTabAtIndex', +key)],
После всех манипуляций клавиши будут работать как надо. Для тех кто не желает возиться с архиваторами и кодом: моя версия хоткеев по ссылке https://www.dropbox.com/s/257hfqizmyy3yer/app.asar?dl=0 замените файл app.asar у себя в папке Фигмы.
Пока что заменил только работу с табами и перемещение объектов, файл будет апдейтиться в зависимости от того, буду работать в Фигме или нет.
Для тех, кто на винде и полезные ссылки
На виндоус все то же самое, вот пост который помог мне все прояснить для себя https://vk.com/figmadesign?w=wall-131024445_1557
Программа для замены хоткеев на вин https://www.autohotkey.com/
Плагин для 7zip, позволяющий открыть .asar http://www.tc4shell.com/en/7zip/asar/