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

Здесь обсуждается всё, что касается макросов.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

Latest post of the previous page:

IgorZ wrote: Wed 19 Dec, 2018 06:32вот новая версия
Замечательно!
[*]добавлена глобальная настройка bdsize, аналогичная одноимённому параметру функции Macro и при наличии действующая на все макросы с key2, в которых отсутствует локальное поле bdsize;
Спасибо! По-моему, это очень правильное решение! Ведь изредка подстраивать размер поля при необходимости гораздо удобнее, чем постоянно настраивать его в каждом макросе.
[*]если описание начинается с "Native", быстрая клавиша не изменяется.
Тоже очень хорошо! Большое спасибо!

При этом проявилась одна существенная необходимость. Уберите, пожалуйста, из обработки скриптом двойные нажатия на чистые модификаторы. В моём случае, использование таких ключей распространяется сразу на группы макросов и поэтому обработка настоящим скриптом конкретно этих ключей не удобна.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

IgorZ,
На иллюстрации приводится реальное "исторически сложившееся" на текущий момент меню, вызываемое ключом F2:
F02.png
Полагаю, что было бы целесообразным, если это технически возможно, в правой колонке ключей исключать из подсвечиваемых конечные цифры и литеры, совпадающие с присутствующими в левой колонке цифрами/литерами. Не только из состава функциональных клавиш, а из любых одноклавиш и сочетаний. Это в идеале. Возможно, проще было бы вообще не подсвечивать конечные цифры от 1 до 9 и семь конечных литер — A B C D E F и G. Вероятно, этого набора неподсвечиваемых конечных знаков было бы достаточно, поскольку больше шестнадцати позиций в меню это уже, как правило, перебор.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Почему-то в последние дни перестали приходить оповещения на почту, поэтому новые сообщения увидел только сегодня.
sToLp wrote: Wed 19 Dec, 2018 09:36Уберите, пожалуйста, из обработки скриптом двойные нажатия на чистые модификаторы. В моём случае, использование таких ключей распространяется сразу на группы макросов и поэтому обработка настоящим скриптом конкретно этих ключей не удобна.
Не понял. Можно подробнее и с конкретным примером?
sToLp wrote: Thu 20 Dec, 2018 04:46 IgorZ,
На иллюстрации приводится реальное "исторически сложившееся" на текущий момент меню, вызываемое ключом F2:
F02.png
Полагаю, что было бы целесообразным, если это технически возможно, в правой колонке ключей исключать из подсвечиваемых конечные цифры и литеры, совпадающие с присутствующими в левой колонке цифрами/литерами. Не только из состава функциональных клавиш, а из любых одноклавиш и сочетаний. Это в идеале. Возможно, проще было бы вообще не подсвечивать конечные цифры от 1 до 9 и семь конечных литер — A B C D E F и G. Вероятно, этого набора неподсвечиваемых конечных знаков было бы достаточно, поскольку больше шестнадцати позиций в меню это уже, как правило, перебор.
Надо подумать, как это лучше сделать. Сильно перегружать код тоже нежелательно.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

IgorZ wrote: Fri 21 Dec, 2018 05:11
sToLp wrote: Thu 20 Dec, 2018 04:46 Полагаю, что было бы целесообразным, если это технически возможно, в правой колонке ключей исключать из подсвечиваемых конечные цифры и литеры, совпадающие с присутствующими в левой колонке цифрами/литерами. Не только из состава функциональных клавиш, а из любых одноклавиш и сочетаний.
Надо подумать, как это лучше сделать. Сильно перегружать код тоже нежелательно.
Вполне согласен. Поскольку думать всегда полезно. Вплоть до того, что м.б. рассмотреть и вариант оставить как есть сейчас. Поскольку опытный пользователь быстро сообразит как поменять ключи дабы хоткеи не пересекались. А не очень опытный решится задать вопрос на форуме и тоже получит аналогичный совет.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

IgorZ wrote: Fri 21 Dec, 2018 05:11
sToLp wrote: Wed 19 Dec, 2018 09:36Уберите, пожалуйста, из обработки скриптом двойные нажатия на чистые модификаторы.
Не понял. Можно подробнее и с конкретным примером?
Привожу ограниченный практический пример применения двойных нажатий на левый и правый контролы. Большинство макросов, необходимо приведённых в составе данного примера, не проверялись на возможные отказы срабатывания в условиях отличных от тех конкретных, в которых они практически используются, и поэтому при тестировании примера могут быть и некоторые локальные сбои, для целей примера не существенные. Поскольку, всё же, необходимые для демонстрации работы чистых модификаторов меню выбора макроса должны вызываться и макросы, активируемые двойными нажатиями на LCtrl или на RCtr, также должны полноценно работать.

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



В наборах макросов примера на двойные нажатия на чистые LCtrl и RCtr навешены переходы от одного меню выбора макроса к другому по кругу туда и обратно без выхода в панели. Обозначения такого перехода приводятся всегда в нижней позиции меню выбора макроса: дважды LCtrl к меню назад ← → вперёд к меню RCtrl дважды.

В самом примере в целях облегчения показа работы этих переходов приоритет макроса обработки вторичной комбинации понижен на один пункт. Но если этого не делать, то при двойном нажатии на соответствующий Ctrl происходит накладка:
nakladka.png
По моему мнению, ввиду специфичности чистых модификаторов как особых ключей обработку двойных нажатий на них макросу обработки вторичной клавиатурной комбинации в меню выбора макроса делать не надо бы. Поэтому я и изложил свою просьбу. Однако, если Вы, по какой-либо причине полагаете, что исключать их из обработки макросом не следует, то, разумеется, можно ограничиться и регулированием этого посредством величины поля priority.
Attachments
2018_12_21.7z
Файлы с примером.
(17.18 KiB) Downloaded 87 times
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

sToLp wrote: Fri 21 Dec, 2018 11:00 По моему мнению, ввиду специфичности чистых модификаторов как особых ключей обработку двойных нажатий на них макросу обработки вторичной клавиатурной комбинации в меню выбора макроса делать не надо бы. Поэтому я и изложил свою просьбу. Однако, если Вы, по какой-либо причине полагаете, что исключать их из обработки макросом не следует, то, разумеется, можно ограничиться и регулированием этого посредством величины поля priority.
Тут вот какой нюанс. Вы везде предлагали предоставлять максимальную гибкость настройки пользователю (и это, хоть и в чём-то спорная, но вполне разумная и логичная позиция). Однако, данное предложение противоречит общей "линии партии". Поэтому из чисто идеологических оснований я предлагаю оставить за пользователем возможность назначить любые, в том числе и такие клавиатурные комбинации. Как следует из Ваших же слов, это не доставит Вам принципиальных проблем.
P. S. А почему двойной Ctrl, а не, скажем, более, на мой взгляд напрашивающийся, да и, пожалуй, более удобный CtrlLeft/CtrlRight? Или Вы их используете в качестве вторичных клавиш?
P. P. S. Кстати, вот и возражение, основывающееся на посылке, более "материальной", чем идеология. Ведь другой пользователь может захотеть "особой" роли для другого комплекта клавиатурных комбинаций. Уж лучше сразу остановиться, чем доводить до абсурда.
P. P. P. S. Собственно, в связи с грядущим Новым Годом я вынужден приостановить любую деятельность на ниве свободного программирования. После зимних каникул можно вернуться к этому вопросу. Наверняка, за это время все мы разродимся новыми идеями, идиотскими или гениальными. Вот и продолжим, ко всеобщему удовольствию.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

IgorZ wrote: Mon 24 Dec, 2018 12:42 предлагаю оставить за пользователем возможность назначить любые, в том числе и такие [т.е. двойные нажатия на чистые модификаторы] клавиатурные комбинации
Хорошо! Посмотрим практику, поупражняемся, подумаем. Ведь и не исключено же, что это будет как раз наилучший вариант.
IgorZ wrote: Mon 24 Dec, 2018 12:42 P. S. А почему двойной Ctrl, а не, скажем, более, на мой взгляд напрашивающийся, да и, пожалуй, более удобный CtrlLeft/CtrlRight? Или Вы их используете в качестве вторичных клавиш?
CtrlLeft/CtrlRight давно уже используются в других макросах, и это уже вошло в привычку. А двойной Ctrl я пока что ни разу не видел в качестве ключа, кроме того варианта, что сам употребляю. И тоже уже привычно и представляется более удобным, чем иные ключи. А кроме того, благодаря John Doe, помимо двойных Ctrl`ов для аналогичных переходов применяю также и двойные Alt`ы, и двойной Shift, в комплексе. Но об этом как нибудь потом.
IgorZ wrote: Mon 24 Dec, 2018 12:42Собственно, в связи с грядущим Новым Годом я вынужден приостановить любую деятельность на ниве свободного программирования. После зимних каникул можно вернуться к этому вопросу. Наверняка, за это время все мы разродимся новыми идеями, идиотскими или гениальными. Вот и продолжим, ко всеобщему удовольствию.
Очень рад, что сабж доставляет Вам удовольствие. И очень надеюсь, что он Вам не наскучит. А спешить, собственно, некуда и, даже напротив, ввиду охвата данной темой множества макросов и ещё большего множества вариантов их возможных комбинаций нужно время как для основательного освоения материала, так и для некоторого отдыха от него тоже.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Новая версия.
  1. local Info = Info or package.loaded.regscript or function(...) return ... end --luacheck: ignore 113/Info
  2.  
  3. local nfo = Info {_filename or ...,
  4.  
  5.   name          = "key2 process";
  6.  
  7.   description   = "Обработка последовательности двух клавиатурных комбинаций";
  8.  
  9.   version       = "0.9.2"; --http://semver.org/lang/ru/
  10.  
  11.   author        = "IgorZ";
  12.  
  13. --  url           = "http://forum.farmanager.com/viewtopic.php?t=8465";
  14.  
  15.   id            = "F571989C-F7FA-4C55-B9AD-5E0974F1CDF5";
  16.  
  17.   minfarversion = {3,0,0,4000,0};
  18.  
  19. --  files         = "*Eng.hlf;*Rus.hlf;*Eng.lng;*Rus.lng";
  20.  
  21.   helptxt       = [[
  22.  
  23.   Обрабатывает два дополнительных поля в определении Macro:
  24.  
  25.     - key2:  вторичная клавиатурная комбинация, работающая в меню выбора макроса;
  26.  
  27.     - bdsize: длина, отводимая под базовую часть описания.
  28.  
  29.   Добавляет key2 в конец описания.
  30.  
  31.   Параметр alignkey определяет, как выравнивать key2:
  32.  
  33.     - L: по левому краю key2;
  34.  
  35.     - C: по границе между модификаторами и клавишей в key2;
  36.  
  37.     - R: по правому краю key2.
  38.  
  39.   Параметр bdsize определяет длину, отводимую под базовую часть описания,
  40.  
  41.     если поле bdsize в Macro не определено.
  42.  
  43.   Параметр excludekeys определяет, какие клавиатурные комбинации следует игнорировать.
  44.  
  45.     Между собой комбинации разделяются пробелами.
  46.  
  47.   Для использования добавить в _macroinit.lua строки ниже.
  48.  
  49.   Если данный файл лежит не в каталоге "scripts", исправить путь.
  50.  
  51.  
  52.  
  53.   local _,Add_key2 = pcall(require,"key2Process")
  54.  
  55.   if type(Add_key2)=="table" then Macro(Add_key2.macro) Add_key2.init() end
  56.  
  57. ]];
  58.  
  59.   history       = [[
  60.  
  61. 2018/12/14 v0.9.0 - Публичная бета.
  62.  
  63. 2018/12/17 v0.9.1 - Скрипт теперь модуль. key2l переименован в bdsize. Добавлена глобальная настройка bdsize, аналогичная одноимённому параметру
  64.  
  65.                     функции Macro. Если описание начинается с "Native", быстрая клавиша не изменяется. Некоторая оптимизация.
  66.  
  67. 2019/01/09 v0.9.2 - Добавлена глобальная настройка excludekeys, указывающая, какие клавиатурные комбинации следует игнорировать.
  68.  
  69.                     Между собой комбинации разделяются пробелами.
  70.  
  71. ]];
  72.  
  73.   options       = {
  74.  
  75.     alignkey = "C",--"L","C","R"
  76.  
  77. --    bdsize = 0,
  78.  
  79.     excludekeys = "",
  80.  
  81.   }
  82.  
  83. }
  84.  
  85. if not nfo then return end
  86.  
  87. -- +
  88.  
  89. --[[константы]]
  90.  
  91. -- -
  92.  
  93. local MSMenuGuid = "165AA6E3-C89B-4F82-A0C5-C309243FD21B" -- меню выбора макросов
  94.  
  95. local rx = regex.new("(.*)(?<=LCtrl|.LAlt|RCtrl|.RAlt|.Ctrl|..Alt|Shift)(?!LCtrl|LAlt|RCtrl|RAlt|Ctrl|Alt|Shift)") -- модификаторы
  96.  
  97. -- +
  98.  
  99. --[[переменные]]
  100.  
  101. -- -
  102.  
  103. local w,OldAddRegularMacro = Far.Width-32
  104.  
  105. -- +
  106.  
  107. --[=[функции]=]
  108.  
  109. -- -
  110.  
  111. local function GetModKey(key) local m,k = ((rx:match("     "..key)or""):sub(6)) k = key:sub(m:len()+1) return m,k end --[=[модификатор и клавиша]=]
  112.  
  113. --
  114.  
  115. local function getUpvalue(f,name) --[=[получить локальную переменную для функции]=]
  116.  
  117. for i=1,math.huge do -- переберём все переменные
  118.  
  119.   local n,v = debug.getupvalue (f,i) -- достанем очередную
  120.  
  121.   if n==nil then error("unable to get upvalue: "..name) end -- кончились - не найдена :(
  122.  
  123.   if n==name then return v,i end -- нашли - вернём и закончим
  124.  
  125. end
  126.  
  127. end
  128.  
  129. --
  130.  
  131. local function AddRegularMacroNew(m,fp) --[=[добавить макрос]=]
  132.  
  133. if type(m.key2)=="string" and type(m.description)=="string" then -- есть key2 и description?
  134.  
  135.   local m2,k2 = GetModKey(m.key2) -- разделим вторичную клавиатурную комбинацию на модификатор и клавишу
  136.  
  137.   local N = m.description:match("^&Native") -- признак макроса, вызывающего команду Far
  138.  
  139.   local wk2 = (math.min(type(m.bdsize)=="number" and m.bdsize or type(nfo.options.bdsize)=="number" and nfo.options.bdsize or w,98))+(N and 1 or 0)
  140.  
  141.   local fmt = "%-"..wk2.."."..wk2.."s %"..(({L="",C=14,R=(19-k2:len())})[nfo.options.alignkey] or 14).."s%s%s" -- формат нового описания
  142.  
  143.   m.description = fmt:format(m.description:gsub("&",N and "&" or ""),m2,(N or k2:len()>1) and "" or "&",k2) -- и само оно
  144.  
  145. end
  146.  
  147. return OldAddRegularMacro(m,fp) -- добавим скорректированный (или нет) макрос с помощью стандартной функции
  148.  
  149. end
  150.  
  151. --
  152.  
  153. local function ReplaceAddRegularMacro() --[=[заменить функцию добавления макроса на свою]=]
  154.  
  155. local LoadMacros = getUpvalue(eval,"utils").LoadMacros -- достанем LoadMacros из utils - он использует AddRegularMacro
  156.  
  157. local AddRegularMacro,iAddRegularMacro = getUpvalue(LoadMacros,"AddRegularMacro") -- достанем сам AddRegularMacro
  158.  
  159. if not OldAddRegularMacro then OldAddRegularMacro = AddRegularMacro end -- запомним его
  160.  
  161. debug.setupvalue (LoadMacros,iAddRegularMacro,assert(AddRegularMacroNew)) -- и заменим на наш
  162.  
  163. end
  164.  
  165. -- +
  166.  
  167. --[=[макрос]=]
  168.  
  169. -- -
  170.  
  171. local macro = {
  172.  
  173.   id="817F6653-F4AC-48DC-809B-7AD94AEFC8EC"; area="Menu"; key="/.+/"; priority=100;
  174.  
  175.   description="Обработка вторичной клавиатурной комбинации в меню выбора макроса";
  176.  
  177.   condition=function(key) return Menu.Id==MSMenuGuid and not (" "..nfo.options.excludekeys.." "):cfind(" "..key.." ",1,true) end;
  178.  
  179.     -- если это меню выбора и клавиатурная комбинация не запрещена, то будем работать
  180.  
  181.   action=function()
  182.  
  183. local m2,k2 = GetModKey(akey(1,0)) -- получим модификатор и клавишу и нажмём, если первичный или вторичный модификатор + клавиша есть в списке
  184.  
  185. Keys((Menu.Select(" "..m2..k2,2,0)>0 or (m2=="" and Menu.Select(" "..GetModKey(Object.Title:match("%S+$"))..k2,2,0)>0)) and "Enter" or "AKey")
  186.  
  187.   end;
  188.  
  189. }
  190.  
  191. --
  192.  
  193. return {init=ReplaceAddRegularMacro,macro=macro} -- вызвавшему отдадим функцию замены AddRegularMacro и макрос
Изменения:
  • Добавлена глобальная настройка excludekeys, указывающая, какие клавиатурные комбинации следует игнорировать. Между собой комбинации разделяются пробелами.
Attachments
key2Process.lua.0.9.2.7z
(2.72 KiB) Downloaded 151 times
Heir
Posts: 4
Joined: Wed 09 Jan, 2019 15:17
Has thanked: 3 times

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

Post by Heir »

IgorZ wrote: Wed 09 Jan, 2019 11:09 Добавлена глобальная настройка excludekeys, указывающая, какие клавиатурные комбинации следует игнорировать. Между собой комбинации разделяются пробелами.
Очень хорошо. Эта настройка обязательно пригодится. А как в ней указать двойные нажатия на модификаторы (применяемые по форме, показанной John Doe)?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Heir wrote: Wed 09 Jan, 2019 15:54
IgorZ wrote: Wed 09 Jan, 2019 11:09 Добавлена глобальная настройка excludekeys, указывающая, какие клавиатурные комбинации следует игнорировать. Между собой комбинации разделяются пробелами.
Очень хорошо. Эта настройка обязательно пригодится. А как в ней указать двойные нажатия на модификаторы (применяемые по форме, показанной John Doe)?
Никак.
Heir
Posts: 4
Joined: Wed 09 Jan, 2019 15:17
Has thanked: 3 times

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

Post by Heir »

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 указано несколько ключей? Какой в этом может быть практический смысл?
Post Reply

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