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

Здесь выкладываются готовые к использованию макросы и скрипты.
Post Reply
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
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

Latest post of the previous page:

John Doe wrote: фар сейчас не запускает макрос на Alt при нажатом Ctrl
Поупражнявшись с макросами, назначенными на двойное нажатие на Ctrl, Alt и Shift , убедился в удобстве этой возможности. Поэтому весьма желательно, чтобы макросы и на двойное нажатие на CtrlAlt, CtrlShift и AltShift тоже появились бы.
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: Поэтому весьма желательно,
Увы.
Прямой возможности никогда не было.
Обходная была, но убрали.

На мантисе есть http://bugs.farmanager.com/view.php?id=2857

Продолжение: http://forum.farmanager.com/viewtopic.p ... 42#p139642
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 »

Версия 3.2 в шапке
  • Поддержка комбинаций из нескольких модификаторов, например CtrlAlt:Double.
    Также работают и последовательности, например CtrlAlt-F8, CtrlF8-Alt.
    CtrlAlt:Hold тут в принципе смысла не имеет, поскольку с модификаторами событие происходит при отпускании.
    Но даже Hold сейчас работает, хоть и со спецификой: нажимать надо дважды, как Double, но в конце клавишу не отпускать, а продолжать удерживать.
  • Поддержка ScriptsBrowser.
    Помимо прочего, некоторые параметры (бывшие ранее константами в коде) сейчас доступны для изменения:
    Изменения могут применяться немедленно (временно), или оставаться постоянно, при использовании пользовательских настроек в scriptcfg
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

John Doe, правильно ли я понимаю, что этот скрипт не поддерживает ключи, описанные регэкспами?

Пример (из Вашего ме скрипта Ctrl-K-blocks.lua):
key="CtrlK-1 CtrlK-2 CtrlK-3 CtrlK-4 CtrlK-5 CtrlK-6 CtrlK-7 CtrlK-8 CtrlK-9 CtrlK-0";
Я попробовал заменить на
key="/[LR]CtrlK-[0-9]/";
а также на
key="/[LR]CtrlK-\d/";
Не работает... :-(
Вставка "%" и "\" перед дефисом положения не исправляет...
Кстати, в этом описании регэкспы имеются в виду в стандарте lua (escape-символ - %) или в стандарте PCRE (escape-символ - \)?
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 »

buniak_a_h wrote: Fri 27 Apr, 2018 02:10 правильно ли я понимаю, что этот скрипт не поддерживает ключи, описанные регэкспами?
Вероятно, мне этого не требовалось.
buniak_a_h wrote: Fri 27 Apr, 2018 02:10 Кстати, в этом описании регэкспы имеются в виду в стандарте lua (escape-символ - %) или в стандарте PCRE (escape-символ - \)?
PCRE (почти).
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

В свете обострившейся борьбы за чистоту ГУИДов,
на всякий случай доношу до сведения общественности,
что у @JD строчка номер 127 в macroEx.lua имеет явно неприличный вид:

Code: Select all

    area="Common"; key=mkey; uid=mkey; FileName=FileName;
Last edited by citRiks on Thu 10 Sep, 2020 23:02, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

John Doe, a что означает эта закоментированная строчка?

Code: Select all

--local is_mod       = k.mod[area] or k.mod.common --todo extramod
понятно что это "туду", но непонятен замысел автора.
Спрашиваю потому что рассматриваю возможность расширить ваш этот замечательный скрипт

уже причесал его, потому что мне казалось (воможно ошибочно) что подглючивает,
в принципе почти во всем разобрался
добавил в descriptions эстетики,
теперь будет например MacroEx handler for "LCtrlF4",
вместо MacroEx handler for "lctrlf4"

https://github.com/dr-dba/far-lua-key-efficiency
Last edited by citRiks on Sat 01 May, 2021 13:41, edited 3 times in total.
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 »

citRiks wrote: Tue 29 Dec, 2020 16:22 a что означает эта закоментированная строчка?
С большой долей вероятности речь об использовать нестандартных модификаторов. Точнее сейчас не скажу.
citRiks wrote: Tue 29 Dec, 2020 16:22 что подглючивает,
Не должно подглючивать.
Искать разницу между вашим и моим кодом времени нет. Если хотите предметного обсуждения, то выложите на гитхабе: исходный код, и ваши изменения осмысленными коммитами.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

John Doe,
Вот оно
https://github.com/dr-dba/far-lua-key-efficiency/
Предметное обсуждение это хорошо,
а цель это сделать ФАР Great Again юзабельным

изменения не коснулись вашей логики, как я ее понимаю,
только рефакторинг с целью читаемости и неизбыточности кода.
например - имена переменных k, a, b, c - это жестко :)
и в остальном код приведен в более читаемый вид.
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 »

citRiks wrote: Sun 03 Jan, 2021 08:24Вот оно
Нет, это не оно. Перечитайте.
John Doe wrote: Wed 30 Dec, 2020 09:19 имена переменных k, a, b, c - это жестко
В локальном и простом цикле считаю вполне допустимым идиоматические имена типа k,v.

А предметно мне сейчас сложно прокомментировать, не ожидаете же вы что я построчно буду сравнивать, ещё и с телефона
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

John Doe wrote: Sun 03 Jan, 2021 09:35 В локальном и простом цикле считаю вполне допустимым идиоматические имена типа k,v.
ну не буду спорить :) замечу лишь что в Eclipse Lua Development IDE слава богам позволяет делать корректные переименования переменным.
John Doe wrote: Sun 03 Jan, 2021 09:35 Нет, это не оно. Перечитайте.
я понимаю что комментариев не хватает?
Хорошо, допишу со временем.
А вы собсно хотите довоплотить какие-то features в этот скрипт?
Так-то я не жалуюсь, у меня работает неожиданно как ожидаемо.
у меня из идей - только доделать сочетания из трех нажатий например.
возможно перенести Вимовские кей биндинги?
На всякий случай еще раз упомяну что структурно программа осталось той же,
лишь рефакторинг и переименования ("а" и "c" в "alt" "ctrl" например)

PS
изменения касаются еще замены пробелов на табуляции,
и переносы строки мне удобоваримы как правило совсем в других местах чем как выы предпочитаете,
поэтому если сравнивать гитхабовским ДИФФ-ом, то наверное получится полный бардак.
Но при этом основная структура и логика не изменены.
Может я просто коментарии напишу без ссылок и реверансов на ваш исходный код?
Last edited by citRiks on Sun 03 Jan, 2021 13:56, edited 1 time in total.
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 »

citRiks wrote: Sun 03 Jan, 2021 13:53 я понимаю что комментариев не хватает?
Не понимаете.
Работа в любой системе версионирования начинается с того, что загружается исходный текст (в неизменном виде), после чего поэтапно вносятся изменения, отдельными коммитами, объединяющими связанные правки.
Каждый коммит содержит сообщение, в котором описана цель правок.
citRiks wrote: Sun 03 Jan, 2021 13:53 поэтому если сравнивать гитхабовским ДИФФ-ом, то наверное получится полный бардак.
Если изменения вносить поэтапно, то всё будет чётко и наглядно.
citRiks wrote: Sun 03 Jan, 2021 13:53 Может я просто коментарии напишу без ссылок и реверансов на ваш исходный код?
Дело ваше: я не прошу ничего делать, а лишь объясняю в каком виде принято обсуждать изменения.
https://t.me/FarManager — Telegram чат
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 »

citRiks wrote: Sun 03 Jan, 2021 13:53 А вы собсно хотите довоплотить какие-то features в этот скрипт?
Так-то я не жалуюсь, у меня работает неожиданно как ожидаемо.
у меня из идей - только доделать сочетания из трех нажатий например.
возможно перенести Вимовские кей биндинги?
Планов конкретных нет. О последовательностях из более чем 2х нажатий я когда-то и сам думал. Практического смысла нет, хотя и несложно. Впрочем как несложно, на самом деле как всегда захочется сделать красиво, потянет за собой рефакторинг, и конца этому не будет))

Вимовские биндинги это аналогично тому как я делал на Турбо? Да, интересно, но это ж будет отдельный пакет макросов. Дерзайте.

P.S.
Сейчас (как по мне) скрипт прекрасен своей простотой. При этом он вынужден повторять часть логики луамакро (с неизбежными упрощениями).
Когда-то у меня была идея совсем избавиться от дублирования, получив доступ в 'внутренностям' луамакро. Но не сложилось.
https://t.me/FarManager — Telegram чат
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

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

Post by Ann »

citRiks wrote: Sun 03 Jan, 2021 08:24 Вот оно
https://github.com/dr-dba/far-lua-key-efficiency/
1. Нельзя ли сделать возможным обозначение в ключах макросов двойных нажатий клавиш в т.ч. просто по key: (т.е. завершающим двоеточием без постфикса), а не только по key:Double?

2. В теме приведён работающий способ применения в качестве ключей с двойными нажатиями модификаторов Ctrl, Alt, Shift и их сочетаний. Но в результирующем скрипте пока что эта весьма полезная возможность не реализована. Нельзя ли дополнить эту замечательную возможность непосредственно в скрипт?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Ann wrote: Mon 18 Jan, 2021 05:20 1. Нельзя ли сделать возможным обозначение в ключах макросов двойных нажатий клавиш в т.ч. просто по key: (т.е. завершающим двоеточием без постфикса), а не только по key:Double?
Если сильно хочется то можно, но зачем?
для вашего понимания эстетики что ли?
функциональность ровно та же ведь, если я правильно понял
Ann wrote: Mon 18 Jan, 2021 05:20 В теме приведён работающий способ применения в качестве ключей с двойными нажатиями модификаторов Ctrl, Alt, Shift и их сочетаний. Но в результирующем скрипте пока что эта весьма полезная возможность не реализована. Нельзя ли дополнить эту замечательную возможность непосредственно в скрипт?
это что ли?

Code: Select all

local t = 0
Macro {
  area="Editor"; key="Ctrl";
  condition=function()
    local t1 = Far.UpTime
    local delay = t1-t
    t = t1
    return delay<maxDelay
  end;
  action=function()
    far.Message"tada!"
  end;
}
так вроде же есть для этого ":Double" который вы предлагаете заменить/дополнить на просто ":"
":Double" у вас не рабвотает что ли?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Ann wrote: Mon 18 Jan, 2021 05:20 В теме приведён работающий способ применения в качестве..
или вы про это:
John Doe wrote: Wed 13 Jul, 2016 19:50 sToLp писал(а):
CtrlAlt, CtrlShift, AltShift

Такого пока вообще не различается, но подумываю сделать, в рамках другого скрипта.
..?
тогда вам в эту тему, как и указано в том сообщении:
viewtopic.php?f=15&t=10366

я вроде проверял, и у меня работают для хоткеев и скрипты из этой темы, и с xModKeys из этой упомянутой.
Конкретно CtrlShift(:Double) кажется тоже работал, проверьте сами
хоть тема очень интетресная, мне пока сильно некогда, сожалею
Post Reply

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