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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 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 60 times
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

Ann wrote: Tue 19 Jan, 2021 15:30 можно было бы написать существенно проще — не 204, а 84 знака, т.е. почти в 2,5 раза короче:

Code: Select all

Macro {
  area="Editor"; key="Ctrl";
  condition=require"double"();
  action=function()
    far.Message"tada!"
  end;
}
Attachments
modules_double.7z
(297 Bytes) Downloaded 145 times
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Tue 19 Jan, 2021 16:25 а в чем непригодность для этого МакроЕкс ?
Ну, просто Ctrl:Double не пройдёт: MacroEx требует, чтобы на протяжении всего времени нажатия "сложного" хоткея хотя бы одна из Shift-клавиш была нажата. Вот повесить на CtrlAlt:Double - можно. Причём, не имеет значение какая из шифтовых клавиш - Ctrl или Alt - держать нажатой.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

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

Post by Ann »

John Doe wrote: Tue 19 Jan, 2021 16:57
Как раз то, что нужно.
И даже удобнее, чем я предполагал, поскольку не требуется и двоеточие-то ставить после модификаторов.
Большое спасибо!
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Беда только, что akey(1) выдаёт просто Ctrl … Т.е. в самом макросе уже нет следов, как он вызывался на самом деле. Впрочем, обходимо.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

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

Post by Ann »

John Doe wrote: Tue 19 Jan, 2021 16:57
Сделайте, пожалуйста, ещё и модуль по типу double.lua для вызова макросов с ключами с удержанием клавиш-модификаторов и их сочетаний.

Всё-таки нажатие с удержанием и двойное нажатие спутать намного сложнее чем с удержанием и одинарное.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Ann wrote: Sat 23 Jan, 2021 03:35 для вызова макросов с ключами с удержанием клавиш-модификаторов и их сочетаний.
Например?
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 »

John Doe,
Я имею ввиду модуль с условным наименованием hold.lua, который обеспечивал бы работу макросов с ключами key="Ctrl Alt Shift CtrlAlt CtrlShift AltShift CtrlAltShift";, срабатываемыми с задержкой.
Подобно тому как скрипт MacroEx обеспечивает работу ключей обозначаемых как key:Hold.

Только в данном случае желательно, чтобы ключи в макросах обозначались бы как перечислены выше, без добавления :Hold и при наличии в них записи типа condition=require"hold"(); срабатывали бы при нажатии на соответствующие им кнопки с задержкой. (Подобно тому как эти же ключи в макросах, содержащих condition=require"double"();, срабатывают при двойных нажатиях кнопок.)

Беспокоиться же о различении того, как именно запущены макросы с ключами-модификаторами, одинарными ли нажатиями, двойными или с задержкой, не стоит, поскольку практически это делается весьма просто.
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

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

Post by Дмитрий Журко »

Спасибо, очень любопытно.

А есть ли возможность вставить код между нажатием и отпусканием клавиши, ведь, как я представил, макрос уже вызван, когда пользователь ещё не отпустил? То есть, например, вместо waitkey исполнить действие, а после отпускания клавиши Alt погасить оповещения о проделанной работе. У меня пока нет легко обнаружимого события, чтобы убрать временные оповещения.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Дмитрий Журко wrote: Sun 21 Feb, 2021 12:15 А есть ли возможность
Опишите задачу подробнее.
Я даже не понял какой скрипт вы пытаетесь использовать: основной (MacroEx), или какой-то из микрохелперов расбросанных по теме.
https://t.me/FarManager — Telegram чат
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

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

Post by Дмитрий Журко »

John Doe wrote: Sun 21 Feb, 2021 13:06 Я даже не понял какой скрипт вы пытаетесь использовать: основной (MacroEx), или какой-то из микрохелперов расбросанных по теме.
Пока я возможность угадать хочу. И, пока писал, понял, что она, видимо, есть. Задача такая: нажимаю, скажем, Alt+=, но Alt не отпускаю, макрос исполняет Alt+= и показывает отчёт о проделанном поиске. Всё ярко, а после проверки глазами не нужно. Пользователь отпускает Alt и все уведомления исчезают, привычный вид.

Когда я пойму, чего могу натворить, тогда выберу инструмент. И тот воображаемый красивый поиск я не написал пока.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Дмитрий Журко wrote: Sun 21 Feb, 2021 15:46 Пользователь отпускает Alt и все уведомления исчезают, привычный вид.
Цель понятна.
Отследить отпускание модификатора вы можете разными путями:
1) По таймеру (far.Timer) или в цикле (mf.waitkey) проверять состояние Mouse.LastCtrlState
2) Анализируя события ConsoleInput
3) Если в диалоге, то ещё можно по событию DN_ENTERIDLE

MacroEx использует в собственных целях первый способ (пощупать можно например тут viewtopic.php?f=15&t=8815).
Теоретически можно было бы добавить в MacroEx новый тип триггера, типа :ModRelease, но насколько это оправданно я не знаю.
https://t.me/FarManager — Telegram чат
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

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

Post by Дмитрий Журко »

John Doe wrote: Sun 21 Feb, 2021 17:32 Теоретически можно было бы добавить в MacroEx новый тип триггера, типа :ModRelease, но насколько это оправданно я не знаю.
Пока никак не оправданно. Я уже не раз фантазировал сложное, а после упрощал замысел радикально. Например, почти дописал свой диалог, а потом заменил его на inputbox. Правда, не всегда по делу упрощал, надо кое-где вернуться, уже есть навыки.

Большое спасибо, уважаемый. Советы мне очень нужны. Даже когда я их не применяю, я исследую и узнаю больше там, где надо сейчас. Есть ещё вопросы, но найду обсуждение ближе к теме.
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 21 Feb, 2021 17:32 Теоретически можно было бы добавить в MacroEx новый тип триггера, типа :ModRelease, но насколько это оправданно я не знаю.
думаю очень оправдано, и многим (например мне) может дать идеи использования.
простых кнoпочек всегда не хватает, поэтому если есть способ добавить триггеров,
то это замечательно только
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

citRiks wrote: Mon 22 Feb, 2021 14:08 думаю очень оправдано
Вовсе неочевидно что это нужно внедрять именно в MacroEx.
Например помно поступить аналогично modules_double, выложенному выше.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

citRiks wrote: Mon 22 Feb, 2021 17:36 да, это тоже хорошо бы
Вот и займитесь, а пока даже не о чем говорить (никакой задачи не сформулировано).
https://t.me/FarManager — Telegram чат
Post Reply

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