Page 3 of 5

MacroEx — запуск макросов нетрадиционными способами

Posted: Sun 20 Jul, 2014 00:42
by John Doe
Есть полезнейшая возможность в MacroLib — запуск макросов удержанием, двойным нажатием, и др.
Хорошо бы подобное и в родные макросы (тикет на мантисе есть).

А пока попробуем приблизится к решению задачи имеющимися средствами.

Предлагаю скрипт MacroEx, расширяющий возможности запуска макросов следующим образом:
  1. В имени клавиши через двоеточие теперь можно указывать дополнительные модификаторы Hold и Double:
    • key:Double — макрос будет выполнен при двукратном нажатии клавиши (в течении 300 мс, не отпуская клавиши-модификаторы)
    • key:Hold — макрос будет выполнен при удержании (>300 мс)
      Пример:
  2. Поддерживаются последовательности из двух нажатий, перечисленные через "-":
    • key-key2 — макрос будет выполнен при нажатии последовательности клавиш.
      Последовательность следует нажимать так: .
      Если вторая клавиша последовательности в течении секунды не будет нажата, то появится подсказка: из описаний возможных макросов.
      Пример:
    На один и тот же key можно назначить произвольное число макросов, конфликты разрешаются по правилам, принятым в LuaMacro.
    Макросы с модификаторами не лишают указанную комбинацию исходного значения: короткое нажатие выполнит исходное действие (или макрос, если назначен).
Ограничения:
  • В качестве key поддерживаются только комбинации клавиш с модификаторами Ctrl/Alt/Shift.
Установка: достаточно расположить прилагаемый macroEx.lua где-либо в scripts.

MacroEx — запуск макросов нетрадиционными способами

Posted: Wed 29 Jul, 2015 10:42
by John Doe

Latest post of the previous page:

lurii wrote: К сожалению, работает все, кроме пробела.
Это особенность консоли, решаемо: http://forum.farmanager.com/viewtopic.php?f=60&t=8481
(впрочем, это может и не понадобиться, см. ниже)
lurii wrote: MacroEx тоже выводить сообщение с подсказкой, но при этом необходимо постоянно удерживать клавишу Alt чтобы сработала 3-я клавиша и тянуться на другой край клавы не всегда получится.
Если в начале MacroEx.lua можно закомментировать строчку local break_sequence_on_mod_release = true, то можно будет не удерживать.

MacroEx — запуск макросов нетрадиционными способами

Posted: Tue 14 Jun, 2016 16:28
by John Doe
John Doe wrote: Распознаётся удержание модификатора (Ctrl/Alt/Shift), а не самой клавиши.
К этому надо приноровиться, ведь чтобы нажатие сработало как одиночное — важно вовремя отпустить модификатор.
Этого ограничения в моей рабочей версии давно нет, честно проверяется удержание основной клавиши.

По скрипту было много разных мыслей, всё собирался доделать, но.. уже больше года не притрагивался.
Поэтому лучше выложу как есть.

Update: вложение изъято, поскольку обнаружены просто невероятные баги.

MacroEx — запуск макросов нетрадиционными способами

Posted: Tue 14 Jun, 2016 16:47
by HaRT
John Doe wrote: лучше выложу как есть
Спасибо, а что там ещё нового по сравнению с версией из шапки?
И кстати, отчего эту не в шапку?

MacroEx — запуск макросов нетрадиционными способами

Posted: Tue 14 Jun, 2016 17:26
by John Doe
HaRT wrote: Спасибо, а что там ещё нового по сравнению с версией из шапки?
Баги (в смысле правились)).
HaRT wrote: И кстати, отчего эту не в шапку?
Если замечаний не будет.

MacroEx — запуск макросов нетрадиционными способами

Posted: Tue 14 Jun, 2016 19:52
by sToLp
John Doe
А не целесообразно ли сделать раздельно два макроса: один по пункту 1 (в части модификаторов Hold и Double), а второй по пункту 2 (в части последовательности из двух нажатий, перечисленных через "-") ? Чтобы заведомо исключить возможные конфликты с функцией плагина MacroLib, который в версиях 1.24 - 1.26 поддерживает использование в нативных lua-макросах модификаторов нажатий Release, Hold, Single, Double, Down, Up и Press.

MacroEx — запуск макросов нетрадиционными способами

Posted: Wed 15 Jun, 2016 09:02
by John Doe
sToLp wrote: А не целесообразно ли сделать раздельно два макроса:
Нет, обе функции тесно связаны.
А расскажите что например вам удобнее делать через макролиб?

MacroEx — запуск макросов нетрадиционными способами

Posted: Wed 15 Jun, 2016 14:03
by sToLp
John Doe wrote:А расскажите что например вам удобнее делать через макролиб?
В части применения модификаторов хорошо прижились пары Release (быстрое нажатие) – Hold (удержание). В частности, по F1:Release вызываю нативную помощь по Фару, а по – расширенную путём вызова меню mf.usermenu(3,"F1.FarMenu.ini").
Аналогично на F2, F3, F4, AltF7 и что-то ещё. Привык уже к этому и представляется вполне удобным.

А также есть и ещё более двух десятков макросов на fmlua, некоторые из которых наверняка можно было бы и в lua перевести, да не хочется время тратить — MacroLib то добротно работает. А вот макрос Shell Bookmark, например, и в макролибовском формате отлично работает и вполне уживается с аналогичным по функционалу и дополняющим его макросом BookmarkManager, благодаря тому, что они разные. Первый удобно использовать для относительно длительных закладок в панелях, а второй — для оперативных.

MacroEx — запуск макросов нетрадиционными способами

Posted: Wed 15 Jun, 2016 15:28
by John Doe
sToLp wrote: В частности, по F1:Release вызываю нативную помощь по Фару, а по F1:Hold – расширенную
Это есть в MacroEx, всё работает абсолютно так же (Release только не пишется).

MacroEx — запуск макросов нетрадиционными способами

Posted: Wed 15 Jun, 2016 18:25
by sToLp
John Doe wrote:
sToLp wrote: В частности, по F1:Release вызываю нативную помощь по Фару, а по F1:Hold – расширенную
Это есть в MacroEx, всё работает абсолютно так же (Release только не пишется).
Спасибо, это хорошая весть на будущее.

MacroEx — запуск макросов нетрадиционными способами

Posted: Sat 18 Jun, 2016 09:37
by sToLp
John Doe wrote:По скрипту было много разных мыслей, всё собирался доделать, но.. уже больше года не притрагивался.
Поэтому лучше выложу как есть.

Attachments macroEx3.zip
При установке из архива макроса macroEx.lua при каждой перезагрузке макросов появляется сообщение:

Code: Select all

1│ дополнить
2│ дополнить
3│ дополнить
3 arguments
И оно, по видимому, двойное, поскольку убирается либо двумя кликами мышкой по нему, либо двумя Esc. Не могу догадаться как оно вызывается. Особенно удивляет то, что русские слова в нём воспроизводятся независимо от языковых установок в Фаре. :oops:

MacroEx — запуск макросов нетрадиционными способами

Posted: Sat 18 Jun, 2016 10:40
by John Doe
Строку 104 закомментируйте, там осталось отладочное сообщение (far.Show), для случаев когда не удаётся опознать клавишу.

P.S.
Сообщение не сильно удачное. Неплохо было бы увидеть что там у вас в поле key

MacroEx — запуск макросов нетрадиционными способами

Posted: Sat 18 Jun, 2016 10:59
by sToLp
John Doe wrote: Неплохо было бы увидеть что там у вас в поле key
Как это можно было бы сделать? Макросы у меня перезагружаются по CtrlShiftR в панелях и по ShiftF12 в редакторе.

MacroEx — запуск макросов нетрадиционными способами

Posted: Sat 18 Jun, 2016 11:56
by John Doe
В поле key какого-то из ваших макросов встречается строка "дополнить-0", которую скрипт принимает за комбинацию, требующую обработки (и как по мне, то справедливо принимает).

Что делать:
1. Ничего, просто закомментировать в скрипте far.Show, чтоб не ругался
2. Или немного изменить текст key (например использовать длинное тире, или добавить пробел)
3. И я вообще не уверен, что нужно использовать так поле key, при наличии честного description.

MacroEx — запуск макросов нетрадиционными способами

Posted: Sat 18 Jun, 2016 12:19
by sToLp
John Doe wrote:В поле key какого-то из ваших макросов встречается строка "дополнить-0", которую скрипт принимает за комбинацию, требующую обработки (и как по мне, то справедливо принимает).
Фантастика! Действительно, в восьми макросах от марта 2013 года в полях key присутствуют: 'дополнить*0', 'дополнить*1', 'дополнить+0', 'дополнить+1', 'дополнить-0', 'дополнить-1', 'дополнитьСлеш0', 'дополнитьСлеш1'. И уж не помню целей того эксперимента. А вот до сих пор это работало. Просто поразительное стечение обстоятельств. Благодарю Вас за помощь! Самому мне было бы до такого ни за что не достичь — воображения бы не хватило о подобном подумать.

MacroEx — запуск макросов нетрадиционными способами

Posted: Sat 18 Jun, 2016 12:23
by John Doe
sToLp wrote: А вот до сих пор это работало.
А чего б ему не работать.
Сейчас поле key необязательно, а когда-то надо было обязательно заполнять, иначе luamacro не загружал их.
(полезно для макросов, которые не предполагают запуск с клавиатуры, а запускаются например из MacroBrowser)

MacroEx — запуск макросов нетрадиционными способами

Posted: Sun 03 Jul, 2016 17:01
by John Doe
Довёл до ума и выложил в шапку новую версию

MacroEx — запуск макросов нетрадиционными способами

Posted: Mon 11 Jul, 2016 08:27
by sToLp
John Doe wrote:key:Double — макрос будет выполнен при двукратном нажатии клавиши (в течении 300 мс, не отпуская клавиши-модификаторы)
А нельзя ли сделать и по-другому — чтобы дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.