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

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

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.7z
(3.69 KiB) Downloaded 335 times
User avatar
John Doe
Бюрократ
Posts: 13387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 54 times
Been thanked: 350 times

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

Post by John Doe »

Latest post of the previous page:

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: 13387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 54 times
Been thanked: 350 times

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: 134 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: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 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: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 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) кажется тоже работал, проверьте сами
хоть тема очень интетресная, мне пока сильно некогда, сожалею
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Mon 18 Jan, 2021 20:48
Ann wrote: Mon 18 Jan, 2021 05:20 1. Нельзя ли сделать возможным обозначение в ключах макросов двойных нажатий клавиш в т.ч. просто по key: (т.е. завершающим двоеточием без постфикса), а не только по key:Double?

функциональность ровно та же ведь, если я правильно понял
1. Насколько я понял, Ann хочет, чтобы было двойное нажатие простой клавиши (без модификатора Ctrl/Shift/Alt).
2. Обратите внимание: после двоеточия может быть не только Double, но и Hold.
З.Ы. У себя я немного переделал скрипт т.о., что можно писать, например, AltF1-F1 вместо AltF1:Double. Сейчас уже не припомню, зачем это понадобилось, но причина была. Я не настолько трудолюбив, чтобы что-то делать без нужды.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 134 times
Been thanked: 45 times

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

Post by Ann »

buniak_a_h wrote: Mon 18 Jan, 2021 22:25 Насколько я понял, Ann хочет, чтобы было двойное нажатие простой клавиши (без модификатора Ctrl/Shift/Alt).

Нет, не так. Видимо в предыдущем посте я не вполне доходчиво выразился.

Я хотел бы, если это осуществимо, иметь возможность использовать двойные нажатия как обычных хоткеев и шорткатов, так и "чистых" модификаторов и их сочетаний. Простым обозначением двойного нажатия в ключах макросов одним двоеточием на конце ключа, без постфикса Double. Будь то обособленная клавиша, клавиша в сочетании с модификатор(ом/ами) или "чисты(й/е)" модификатор(ы). Причём, хорошо бы, без особых специальных ухищрений в коде составляемых макросов. Но для этого очевидно нужно внести соответствующее дополнение в сабжевый скрипт, о чём я и прошу уважаемых форумчан.
Обратите внимание: после двоеточия может быть не только Double, но и Hold.
Ключи, обозначаемые как key:Hold (т.е. с задержкой при удержании >300 мс), в моей практике не прижились. После неоднократно повторившейся в неподходящий момент путаницы я воздерживаюсь от их применения.

А вот двойные нажатия (обозначаемые в сабжевом скрипте как key:Double) очень даже пришлись по вкусу. И как раз особенно прижились двойные нажатия модификаторов. В частности, для вызова нативного быстрого поиска в панелях я использую двойное нажатие модификатора Alt, и это не только само по себе оказалось весьма удобным, а ещё и освободило этот модификатор для составления других макросов.
У себя я немного переделал скрипт т.о., что можно писать, например, AltF1-F1 вместо AltF1:Double.
Обнародуйте, пожалуйста, по возможности, этот скрипт. Любопытно попробовать попрактиковаться в его применении (как в написании макросов с такими ключами, так и в их использовании).

А двойные нажатия "чистых" модификаторов в этом Вашем скрипте можно предусмотреть?
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Ann wrote: Tue 19 Jan, 2021 02:57 Обнародуйте, пожалуйста, по возможности, этот скрипт
На самом деле я вспомнил, что меня не устраивало.
У меня много сочетаний, начинающихся со стандартного хоткея. В частности, работа в редакторе, начинающаяся с CtrlK (CtrlK-B - начало блока; CtrlK-K - конец блока; CtrlK-n - установка номерной метки). Но при этом просто CtrlK - стирание конца строки правее курсора (нативный хоткей). Поэтому я просто убрал проверку таймаута в строке № 181: заменил if not timeout then на просто do.
Запись вида CtrlA-A вместо CtrlA:Double и так работала; просто в каких-то моих скриптах удобнее анализировать AKey, если он записан без :Double. Да и подсказка появляется: в примере с хоткеями редактора (CtrlK-K) - после нажатия CtrlK появляется меню с перечислением вторых символов хоткеев.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 134 times
Been thanked: 45 times

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

Post by Ann »

buniak_a_h wrote: Tue 19 Jan, 2021 04:10 Запись вида CtrlA-A вместо CtrlA:Double и так работала; просто в каких-то моих скриптах удобнее анализировать AKey, если он записан без :Double.
Ясно. Благодарю за разъяснение.

Исходя же из моей практики, всё же макросы, вызываемые ключами-аккордами, удобнее оформлять на базе не сабжевого скрипта, а с использованием модуля key2Process.lua (автор IgorZ). В качестве примера таковых приведу один маленький набор макросов, применяемых мною в редакторе.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 134 times
Been thanked: 45 times

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

Post by Ann »

citRiks wrote: Mon 18 Jan, 2021 20:56 ... тема очень интетресная ...
Очень рассчитываю на то, что интерес Ваш к теме будет и дальше сохраняться и когда образуется очередной островок относительно свободного времени он поспособствует дальнейшему развитию сабжевого скрипта.

В данной теме рассматриваются три нетрадиционных (для Фара) способа задания ключей макрокоманд:
— нажатиями дуплетами,
— нажатиями с задержкой,
— нажатиями аккордами.
И реализация всех этих способов скопом обеспечивается с помощью очень сложного скрипта, ещё и с некоторыми дополнениями.

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

А вот двойные нажатия меня весьма и весьма интересуют. Особенно дуплеты обособленными модификаторами и их не включающими немодификаторные клавиши сочетаниями. Да, в теме показано как их можно применять. Однако для этого приходится в каждый макрос, активируемый таким способом, вставлять солидные блоки дополнительного кода.

А хотелось бы максимально упростить обозначение ключей двойных нажатий. Желательно бы простым завершением их просто двоеточиями. А для этого нужно, чтобы код, обеспечивающий их работу, был усовершенствован и вынесен в отдельный модуль. И вот об этом я и прошу.
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

Ann wrote: Tue 19 Jan, 2021 11:33 Основной автор данной темы John Doe проделал титаническую и полезнейшую работу. Но мне то вот весь этот комбайн целиком то и не требуется.
обьясните плиз чем мешает "комбайн",
если можно просто не использовать то из него что не нужно?
т.е. например НЕ задавать аккорды? (CtrlX-Y например)
"аккордеон" из key2process ведь никак не конфликтует с "комбайном" MacroEx
Может я невномательно прочитал, но где ответ чем лучше ":" вместо ":Double" ?
buniak_a_h wrote: Mon 18 Jan, 2021 22:25 2. Обратите внимание: после двоеточия может быть не только Double, но и Hold.
это понятно, АНН видимо просто хочет что ":<без-ничего>" считался бы как ":Double"
А я ума не приложу чем это лучше чем ":Double", делается -то ведь ровно то же самое,
и даже глаза не мозолит при работе, сидит себе где-то в скрипте.
Поэтому я все еще не уверен что понимаю чего добивается АНН :)
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

Про желаемые CtrlAlt:Double, CtrlShift:Double, AltShift:Double и другое подобное
я кажется понял что это пользуется любовью у АНН,
но это вроде же и так работает в MacroEx (кроме претензий к семантике ":<с/без>Double")
?
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 134 times
Been thanked: 45 times

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

Post by Ann »

citRiks wrote: Tue 19 Jan, 2021 14:03 я все еще не уверен, что понимаю, чего добивается АНН
В идеале, я хотел бы, чтобы при составлении макроса с дуплетными ключами вместо резонно приведённой Вами формы:

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;
}
можно было бы написать существенно проще — не 204, а 84 знака, т.е. почти в 2,5 раза короче:

Code: Select all

Macro {
  area="Editor"; key="Ctrl:";
  action=function()
    far.Message"tada!"
  end;
}
А внутреннюю кухню, обеспечивающую срабатывание подобных ключей каждого из множества макросов с такими ключами, чтобы обслуживал один особый модуль.
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

Ann wrote: Tue 19 Jan, 2021 15:30 А внутреннюю кухню, обеспечивающую срабатывание подобных ключей каждого из множества макросов с такими ключами, чтобы обслуживал один особый модуль.
а в чем непригодность для этого МакроЕкс ?
ну допустим без темы ":<с/без>Double"
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
John Doe
Бюрократ
Posts: 13387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 54 times
Been thanked: 350 times

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

Post by John Doe »

citRiks wrote: Tue 19 Jan, 2021 16:25 а в чем непригодность для этого МакроЕкс ?
Одиночные модификаторы (без основной клавиши) работают иначе, макроэкс не сработает.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 54 times
Been thanked: 350 times

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

Post by John Doe »

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 65 times
https://t.me/FarManager — Telegram чат
Post Reply

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