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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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.
Attachments
MacroEx-3.2.1.7z
(4.9 KiB) Downloaded 69 times
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

Задача из темы http://forum.farmanager.com/viewtopic.p ... 07#p131607 с помощью MacroEx решается например так:

Code: Select all

local Symbols = {
  q="«",
  w="»",
  Space=" ",
  [","]="<",
  ["."]=">",
  ["'"]=""",
  ["7"]="&",
  r="&reg;",
  t="&trade;",
  c="&copy;",
}
local hk = "AltS"
local descr = "Web editor:"
local keys = ""
for key,str in pairs(Symbols) do
  Macro { description=("%5s: %s "):format(key,str);
    area="Editor"; key=hk.."-"..key;
    action=function()
      print(str)
    end;
  }
end
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

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

Post by lurii »

John Doe wrote: Задача из темы lurii @ Пользовательское меню в редакторе с помощью MacroEx решается так:
К сожалению, работает все, кроме пробела.
Сочетание AltS+Пробел вызывает появление виндовой менюшки far как буд-то кликнули мышкой по иконке окна слева вверху.
(Восстановить, Переместить, Размер, Свернуть, Развернуть ...)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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, то можно будет не удерживать.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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

Update: вложение изъято, поскольку обнаружены просто невероятные баги.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote: лучше выложу как есть
Спасибо, а что там ещё нового по сравнению с версией из шапки?
И кстати, отчего эту не в шапку?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

HaRT wrote: Спасибо, а что там ещё нового по сравнению с версией из шапки?
Баги (в смысле правились)).
HaRT wrote: И кстати, отчего эту не в шапку?
Если замечаний не будет.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe
А не целесообразно ли сделать раздельно два макроса: один по пункту 1 (в части модификаторов Hold и Double), а второй по пункту 2 (в части последовательности из двух нажатий, перечисленных через "-") ? Чтобы заведомо исключить возможные конфликты с функцией плагина MacroLib, который в версиях 1.24 - 1.26 поддерживает использование в нативных lua-макросах модификаторов нажатий Release, Hold, Single, Double, Down, Up и Press.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

sToLp wrote: А не целесообразно ли сделать раздельно два макроса:
Нет, обе функции тесно связаны.
А расскажите что например вам удобнее делать через макролиб?
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post 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, благодаря тому, что они разные. Первый удобно использовать для относительно длительных закладок в панелях, а второй — для оперативных.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

sToLp wrote: В частности, по F1:Release вызываю нативную помощь по Фару, а по F1:Hold – расширенную
Это есть в MacroEx, всё работает абсолютно так же (Release только не пишется).
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote:
sToLp wrote: В частности, по F1:Release вызываю нативную помощь по Фару, а по F1:Hold – расширенную
Это есть в MacroEx, всё работает абсолютно так же (Release только не пишется).
Спасибо, это хорошая весть на будущее.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

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

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

Code: Select all

1│ дополнить
2│ дополнить
3│ дополнить
3 arguments
И оно, по видимому, двойное, поскольку убирается либо двумя кликами мышкой по нему, либо двумя Esc. Не могу догадаться как оно вызывается. Особенно удивляет то, что русские слова в нём воспроизводятся независимо от языковых установок в Фаре. :oops:
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Строку 104 закомментируйте, там осталось отладочное сообщение (far.Show), для случаев когда не удаётся опознать клавишу.

P.S.
Сообщение не сильно удачное. Неплохо было бы увидеть что там у вас в поле key
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Неплохо было бы увидеть что там у вас в поле key
Как это можно было бы сделать? Макросы у меня перезагружаются по CtrlShiftR в панелях и по ShiftF12 в редакторе.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

В поле key какого-то из ваших макросов встречается строка "дополнить-0", которую скрипт принимает за комбинацию, требующую обработки (и как по мне, то справедливо принимает).

Что делать:
1. Ничего, просто закомментировать в скрипте far.Show, чтоб не ругался
2. Или немного изменить текст key (например использовать длинное тире, или добавить пробел)
3. И я вообще не уверен, что нужно использовать так поле key, при наличии честного description.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

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

Return to “Полезные макросы и скрипты”