Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Здесь обсуждается всё, что касается макросов.
Heir
Posts: 4
Joined: Wed 09 Jan, 2019 15:17
Has thanked: 3 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Heir »

Latest post of the previous page:

IgorZ, Понятно. Будем использовать ресурсы priority.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

Ann wrote: Thu 11 Feb, 2021 04:45 Если Вы хотите применять аккордные ключи, то, по моему опыту, гораздо удобнее и безопаснее использовать для этого модуль key2Process.lua. Который Вы когда-то остроумно назвали "аккордеоном". Результаты будут те же, что и при использовании macroEx.lua, и даже лучше.
При этом, при наличии в коде скрипта поля key2 в отсутствие модуля key2Process.lua при перезагрузках такого скрипта никакой ошибки выдаваться не будет. А просто в меню выбора макроса не будут появляться вторые ключи, соответствующие полям key2 и всё.
вечером думаю выложу вариант от @Xer0X на эту тему.
еще не выложено потому что тоже "страдает" зависимостями,
Которые фиг знает как оформлять, чтобы и самому ненапряжно, и чтобы людям было понятно.
А так - работает без нареканий.

Правда, если уж на то пошло, то "аккорды" можно добавить используя "&" в description макроса,
тогда будет типа хоткей который сработает в меню выбора макроса.
в этом варианте ограничение будет только на то что не будет всяких "Alt/Ctrl/etc",
но с учетом того что такой вариант это где-то ноль работы, возможно оно того стоит,
вместо ухищрений @Xer0X и/или @IgorZ :)

Иллюстрация принципа:

Code: Select all

Macro { description = "&Goood for you! 111";
	area = "Shell"; key = "CtrlAltBS"; 
	action = function(tbl_mcr) far.Message(tbl_mcr.description) end;
}
Macro { description = "Goood &For you! 222";
	area = "Shell"; key = "CtrlAltBS"; 
	action = function(tbl_mcr) far.Message(tbl_mcr.description) end;
}
Macro { description = "Goood for &You! 333";
	area = "Shell"; key = "CtrlAltBS"; 
	action = function(tbl_mcr) far.Message(tbl_mcr.description) end;
}
Last edited by citRiks on Thu 11 Feb, 2021 09:26, edited 1 time in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks wrote: Thu 11 Feb, 2021 08:50Правда, если уж на то пошло, то "аккорды" можно добавить, используя "&" в description макроса,
тогда будет типа хоткей, который сработает в меню выбора макроса.
в этом варианте ограничение будет только на то, что не будет всяких "Alt/Ctrl/etc",
но с учётом того, что такой вариант — это где-то ноль работы, возможно оно того стоит

Иллюстрация принципа:
#1.png
Действительно, отличная иллюстрация существенных достоинств Меню выбора макроса.

А те, кто читали всю тему, помнят, что с этого то и начиналось инициирование вопроса уважаемым sToLp`ом. Он находил, что использования одних только хоткеев в description макросов недостаточно. И поэтому он изобрёл вспомогательный макрос (приведён в первом посте темы), который позволял из меню выбора макроса "запускать выбранный макрос по обозначенному в нём (в конце поля description) шорткату". Т.е. уже не только по одной клавише, а и по клавишесочетанию.
#2.png
Попутно обратите, пожалуйста, внимание на следующий важный нюанс. Благодаря изобретению sToLp`а уже тогда стало возможным применение ключей двойного нажатия. Ведь если дважды подряд нажать CtrlAltBS, то меню выбора макроса незаметно мелькнёт, и Вы получите нужный результат.

Но автора изобретения не удовлетворяло то, что для его полноценной реализации со стороны составителя макросов требовались значительные усилия по редактированию полей description. На примере меню, в котором только три макроса и у каждого длина содержания description одинаковая, это совсем незаметно. А вот когда и description разные, да ещё и их множество, тогда их редактирование становилось затруднительным. Пример того sToLp привёл в своём посте.

Но сам sToLp не умел преодолеть этот недостаток и поэтому обратился за помощью к форумчанам. И через некоторое время на его призыв (Слава Всевышнему!) откликнулся уважаемый мастер IgorZ. И вот с тех пор, благодаря усилиям последнего, мы и имеем возможность при необходимости с помощью созданного им модуля key2Process.lua без особых усилий оформлять весьма объёмные меню выбора макроса.
#3.png
А Вы, если я правильно Вас понял, пообещали выложить ещё более продвинутый по сравнению с key2Process.lua "вариант от @Xer0X". С большим интересом жду его публикации.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

Ann,
тута:
key2proxy.lua
дисклаймер
со всеми зависимостями мог что-то упустить, на выходных только смогу проверить.
как выглядит:
image.png
задание дополнительных кнопочек такое же:

Code: Select all

...
Macro {	description = "VC: Визуальное сравнение файлов", 
	area = "Shell",  key = "CtrlAltC", 
	key2 = "CtrlAlt RCtrlRAlt LCtrlLAlt";
	condition = function()
		if	APanel.SelCount == 2 or 
			APanel.SelCount == 1 and 
			PPanel.SelCount <= 1 or
...
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks,

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

По приведённой иллюстрации и примеру задания дополнительных кнопочек вопрос: для чего в поле key2 указано несколько ключей? Какой в этом может быть практический смысл?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

Ann,
а вы зависимости эти в директорию "модули" положили?
модули это кладутся в "модулес" прямо (а не в под-директории там).
У меня есть на самом деле авто-проверка правильной загрузки,
но пока не успел ее сделать, хоть там и работы мало.
а то мне уже неудобно по кочкам гонять вас самому не проверив.
Ann wrote: Fri 12 Feb, 2021 05:50 По приведённой иллюстрации и примеру задания дополнительных кнопочек вопрос: для чего в поле key2 указано несколько ключей? Какой в этом может быть практический смысл?
* key2 не поддержвает регекспы,
* некоторые нажатия могут выглядеть одинаково для юзера но быть разными для системы,
например обычные цифры на клаве и НумПадные цифры.
ну и приведенный пример сам за себя говорит - надо чтобы работал CtrlAlt и правый и левый, и левый Альт с правым Ктрл-ом
* можно задать группу близколежащих кнопочек на клаве, чтобы шмякать по ним не глядя без промаха, например "1 2 3 Q W E"
* кажется какая-то еще причина была которую я забыл
Last edited by citRiks on Fri 12 Feb, 2021 10:19, edited 2 times in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks wrote: Fri 12 Feb, 2021 10:15
Ann wrote: Fri 12 Feb, 2021 11:39
citRiks wrote: Fri 12 Feb, 2021 10:06 а вы зависимости эти в директорию "модули" положили?
Само собой. Я даже об этом недавно писал: "Положил модули в …\Profile\Macros\modules\". Да и в тестовой сборке у меня нет вложенных папок ни в modules, ни в scripts.
У меня есть на самом деле авто-проверка правильной загрузки
С интересом бы испытал и попробовал бы взять на вооружение.
key2 не поддержвает регекспы
key2Process.lua тоже. Да и зачем они для одного шортката, а тем более, хоткея?
некоторые нажатия могут выглядеть одинаково для юзера, но быть разными для системы, например, обычные цифры на клаве и НумПадные цифры
Так ведь в Фаре же они хорошо различаются. Например, та, что 7 на цифровой линейке, на NumPad`е будет num7, а + с цифровой — Add и т.д.
надо чтобы работал CtrlAlt и правый, и левый, и левый Альт с правым Ктрл-ом
А вот тут я, возможно, чего-то недопонял. Ведь чтобы сработали и левые, и правые и Ctrl, и Alt достаточно указать просто CtrlAlt. А если хотим конкретно отметить, что, например, нужно нажимать именно левый Ctrl с правым Alt`ом, тогда добавляем соответствующие префиксы: LCtrlRAlt. И что-то я не припоминаю отступлений от этого порядка.
можно задать группу близколежащих кнопочек на клаве, чтобы шмякать по ним, не глядя без промаха, например "1 2 3 Q W E"
Ну, уж не знаю. На мой взгляд, такая манера привела бы лишь к неопределённости и сумбуру. Ведь если уж очень-очень надо не растеряться и не промахнуться, то назначаю один и тот же ключ и в поле key, и в поле key2 и жмякаю его дважды подряд.

А поскольку для поддержки нескольких дополнительных ключей в поле key2 вероятно нужен и дополнительно усложнённый код, то в данном случае "овчинка выделки не стоит" однозначно.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

Ann, по поводу падений - пока проверьте что у вас распоследние версии модулей из ГитХаба
по поводу различий RCtrl/LCtrl - ну юзер может сам хочет чтобы различались,
а для "1/НумПад1" может наоборот не хочет чтобы различались.
Поповоду автопроверки - это для поставщиков скриптов более полезно, но я расшарю чуть позжее.
По поводу остального - не успеваю ответить :)
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks wrote: Fri 12 Feb, 2021 12:39 пока проверьте что у вас распоследние версии модулей из ГитХаба
Да, самые последние, по указанным Вами ссылкам.
По поводу остального - не успеваю ответить
Ну и не надо спешить. Когда будет возможность и желание, тогда и ответите. Во всяком случае, я Вас не тороплю. Это не сиюминутный процесс и когда выйдет из него позитив, то результат этот будет надолго.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

@Ann, а вообще это та проблема которую я тут поднимал:
Автоматическое обьединение луа-скрипта и его зависимостей в один скрипт?
viewtopic.php?f=57&t=12261
100% что решается, но надо исследовать долго
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

Ann wrote: Fri 12 Feb, 2021 12:00 На мой взгляд, такая манера привела бы лишь к неопределённости и сумбуру.
Ведь если уж очень-очень надо не растеряться и не промахнуться,
то назначаю один и тот же ключ и в поле key, и в поле key2 и жмякаю его дважды подряд.
не, ну один такой повторный может быть, а на других?
вообще никогда лучше не ошибаться ни на чем,
и для этого сделать большие кнопки составные кнопки какие типа
чтобы меньше смотреть на клаву а больше на экран
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks wrote: Fri 12 Feb, 2021 14:24обьединение луа-скрипта и его зависимостей в один скрипт
С этим я вполне согласен. Разумеется, мне было бы удобнее (а начинающему знакомиться с макросами Фара и тем более) просто положить скрипт в %FarProfile%\Macros\scripts\ и всё. И затем лишь периодически обновлять его. Вместо того, чтобы при каждом обновлении озабочиваться не забыть о том, чтобы и прилагаемый модуль (хорошо, если один, а не несколько) попал в %FarProfile%\Macros\modules\ и в соответствующую подпапку. А иногда ещё нужно не забывать и вносить записи в _macroinit.lua.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks,

После установки и корректной регистрации модуля StackTracePlusPlus-@Xer0X.lua при установленном макросе key2proxy.@Xer0X.lua (вчерашней закачки с сопутствующими модулями) последующие нажатия на произвольную кнопку или их сочетание вызывают не убираемое красное сообщение:
error.png
т.е. Фар хотя и не крашится, но становится недееспособным — при нажатиях на { OK } под сообщением иногда меняется картинка, но само сообщение не исчезает и препятствует работе Фара.
citRiks wrote: Sat 13 Feb, 2021 14:00сейчас, кстати, есть гораздо более усовершенствованная версия, ещё не опубликованная
Так м.б. как раз сейчас и стоило бы её опубликовать, чтобы посмотреть: а не выдаст ли она более развёрнутой рекомендации?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by citRiks »

Ann wrote: Sat 13 Feb, 2021 17:26 Так м.б. как раз сейчас и стоило бы её опубликовать, чтобы посмотреть: а не выдаст ли она более развёрнутой рекомендации?
если я успевал делать все то что стоит, то было бы очень здорово ..
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Запуск макросов кнопкосочетаниями, нажатыми в меню выбора макроса.

Post by Ann »

citRiks wrote: Thu 11 Feb, 2021 21:00key2proxy.lua
Как я понял, исходя из предварительного знакомства, то, что кроме самого макроса, нужно устанавливать ещё 2 модуля, говорит (скорее, кричит) явно не в пользу key2proxy по сравнению с key2Process.

А то, что демоверсия макроса пока что обрабатывает только 9 строк меню выбора, оставляя остальные в исходном состоянии, полагаю, лишь временное ограничение.

Попытка выставления вторых ключей в меню слева (сразу вслед за автоматическими хоткеями, выставляемыми самим меню выбора), вроде бы хорошая придумка. Но пока что она не очень вразумительно оформлена:
– местами вторые ключи слипаются с хоткеями меню выбора;
– эта часть строки (участок вторых ключей) не выровнена влево;
– отводимое под этот участок строки место пока что не подстраивается под длину максимального шортката в меню;
– допустимость указания в поле key2 нескольких ключей может весьма негативно сказаться на имидже этого участка строки ввиду возможного чрезмерного растягивания длины данного участка;
– вертикальные линии │, отделяющие участок вторых ключей от описательной части строки (вместо естественных пробелов), по моему убеждению, выглядят как мусор в строке.
demo.png
Отсутствие регулирования ширины меню выбора может сделать неудобочитаемым описание (в поле description) действия макроса.

Однозначно позитивным новшеством key2proxy по сравнению с key2Process, на мой взгляд, является возможность прокрутить описание макроса с помощью нажатия мышью на стрелочки туда » и обратно «. Только вот прокручивать надо бы не всю строку целиком, а лишь её description-участок, оставляя колонки хоткеев и вторых ключей фиксированного размера.
Post Reply

Return to “Обсуждение макросов”