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 59 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:В поле key какого-то из ваших макросов встречается строка "дополнить-0", которую скрипт принимает за комбинацию, требующую обработки (и как по мне, то справедливо принимает).
Фантастика! Действительно, в восьми макросах от марта 2013 года в полях key присутствуют: 'дополнить*0', 'дополнить*1', 'дополнить+0', 'дополнить+1', 'дополнить-0', 'дополнить-1', 'дополнитьСлеш0', 'дополнитьСлеш1'. И уж не помню целей того эксперимента. А вот до сих пор это работало. Просто поразительное стечение обстоятельств. Благодарю Вас за помощь! Самому мне было бы до такого ни за что не достичь — воображения бы не хватило о подобном подумать.
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 »

sToLp wrote: А вот до сих пор это работало.
А чего б ему не работать.
Сейчас поле key необязательно, а когда-то надо было обязательно заполнять, иначе luamacro не загружал их.
(полезно для макросов, которые не предполагают запуск с клавиатуры, а запускаются например из MacroBrowser)
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 »

Довёл до ума и выложил в шапку новую версию
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:Double — макрос будет выполнен при двукратном нажатии клавиши (в течении 300 мс, не отпуская клавиши-модификаторы)
А нельзя ли сделать и по-другому — чтобы дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.
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 »

Пример?
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

sToLp wrote:дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.
Полагаю, что иногда пользователю это будет даже чисто физически сложнее. К тому же нажатие–отпускание сочетания модификаторов нередко является самостоятельным шоткатом. Поэтому предлагаю оставить, как сейчас.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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:Пример?
Дважды нажать LCtrlScrollLock (тоже с Apps или Pause), а затем уже букву H явно проще, чем одновременно все три. Да и даже просто дважды нажать Shift, а уже затем (м.б. даже той же освободившейся рукой) другую клавишу — это проще, чем жать их одновременно одной рукой, а тем более если двумя.
HaRT wrote:
sToLp wrote:дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.
Полагаю, что иногда пользователю это будет даже чисто физически сложнее.
Задумался над этим, но так и не понял как может одномоментное нажатие меньшего количества клавиш оказаться физически сложнее, чем нажатие большего их количества.
HaRT wrote:К тому же нажатие–отпускание сочетания модификаторов нередко является самостоятельным шоткатом.
Так, вроде бы, и хорошо же — нажали их дважды подряд (ТукТук), а потом их же в третий раз (-Тук). Имхо, это вполне удобно.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

sToLp wrote: как может одномоментное нажатие меньшего количества клавиш оказаться физически сложнее
Как я понял, Вы предлагаете нажать сочетание модификаторов, отпустить их все и нажать одновременно снова. Правильно? При таком подходе очень просто недожать какой-то модификатор или отпустить прежде времени. Традиционный же подход — это просто держать их нажатыми, а отпустить–нажать только одну клавишу — ключевую. Т.е. одним пальчиком пошевелить вверх–вниз.
Поэтому я считаю, что если уж и реализовывать такой режим, то не вместо имеющегося, а в дополнение к нему; соответственно, и назвать иначе. Если John Doe идея понравится, то я готов помочь придумать обозначение.
sToLp wrote: нажали их дважды подряд (ТукТук), а потом их же в третий раз (-Тук)
Я вообще не об этом, а о том, что одиночное (более-менее) одновременное нажатие и последующее отпускание группы модификаторов — это иное действие, нежели их нажатие, затем нажатие–отпускание ключевой клавиши, а затем отпускание модификаторов.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

HaRT wrote:Как я понял, Вы предлагаете нажать сочетание модификаторов, отпустить их все и нажать одновременно снова. Правильно?
Правильно.
HaRT wrote:одновременное нажатие и последующее отпускание группы модификаторов — это иное действие, нежели их нажатие, затем нажатие–отпускание ключевой клавиши, а затем отпускание модификаторов
Точно, иное.
HaRT wrote:При таком подходе очень просто недожать какой-то модификатор или отпустить прежде времени
А Вы в данном случае не драматизируете, часом? Так ли уж сложно дожать одну-две-три-четыре (CtrlAltShiftWin, к примеру) клавиши? Усилий то физических, вроде бы, не особо нужно, одна только сосредоточенность.
HaRT wrote:Традиционный же подход — это ...
John Doe в данной теме ведь испытания именно нетрадиционных подходов проводит, вроде.
HaRT wrote:если уж и реализовывать такой режим, то не вместо имеющегося, а в дополнение к нему
Так я, вроде бы и писал с самого начала:
sToLp wrote: А нельзя ли сделать и по-другому

HaRT wrote:Если John Doe идея понравится, то я готов помочь придумать обозначение
Подобная готовность много значит для поддержания командного духа. Заранее спасибо!
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

sToLp wrote:А нельзя ли сделать ... чтобы дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу?
По зрелому размышлению, полагаю, что было бы очень хорошо и достаточно и того, чтобы макросы могли срабатывать просто на двойное нажатие модификаторов и их сочетаний, даже без привязки этого действия к последующему нажатию на другие клавиши. Ведь заинтересованный пользователь при надобности мог бы тогда разнообразно ветвить это действие с помощью меню "Выполнить макрос" или пользовательских меню.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

sToLp wrote: двойное нажатие модификаторов и их сочетаний, даже без привязки этого действия к последующему нажатию на другие клавиши
Кстати, да, сперва двойное нажатие чего-то, а затем какое-то нажатие ещё чего-то — это же ведь уже аккорд, а поддержка аккордов — это несколько другое, хотя тоже поддержано (до определённой степени) macroEx'ом.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

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 »

Банальные Ctrl, Alt, Shift, CtrlAlt, CtrlShift, AltShift, CtrlAltShift.
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 »

sToLp wrote: Банальные Ctrl, Alt, Shift

Code: Select all

local maxDelay = 500

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;
}
Пока что вот так делайте. Можно реализовать и в общем виде.
Да, неплохо бы как-то интегрировать эту возможность в MacroEx, но не обещаю.
sToLp wrote: CtrlAlt, CtrlShift, AltShift
Такого пока вообще не различается, но подумываю сделать, в рамках другого скрипта.
sToLp wrote: CtrlAltShift
Это тоже возможно, но на практике не слишком удобно, имхо врядли стоит усложнять простой скрипт.
(но вы для себя всегда можете допилить конечный макрос, добавив дополнительное условие)
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: Банальные Ctrl, Alt, Shift
... Пока что вот так делайте.
Работают! Спасибо!
John Doe wrote:
sToLp wrote: CtrlAlt, CtrlShift, AltShift
Такого пока вообще не различается, но подумываю сделать, в рамках другого скрипта.
Хорошо бы, однако.
John Doe wrote:
sToLp wrote: CtrlAltShift
Это тоже возможно, но на практике не слишком удобно, имхо врядли стоит усложнять простой скрипт.
Это особое сочетание, и поэтому желательно было бы иметь его "двойник", независимый от нативного "однораза".
John Doe wrote:(но вы для себя всегда можете допилить конечный макрос, добавив дополнительное условие)
А вот это для моего уха звучит как-то совершенно загадочно.
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 »

sToLp wrote: независимый от нативного "однораза".
Не знаю о каком одноразе речь, ведь сам фар не различает такие комбинации для макросов.
sToLp wrote: А вот это для моего уха звучит как-то совершенно загадочно.
Это значит что если (например) будет предоставлена возможность назначить макрос на "Ctrl+Alt", то несложно добавить в макрос на Alt дополнительный condition с проверкой нажат ли Ctrl.
В общем пробовать надо.

P.S.: раз эти макросы на отпускание срабатывают, значит Ctrl (например) должен продолжать удерживаться и при отпускании..
Post Reply

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