Page 4 of 9

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

Posted: Sun 20 Jul, 2014 00:42
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.

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

Posted: Mon 11 Jul, 2016 08:27
by sToLp

Latest post of the previous page:

John Doe wrote:key:Double — макрос будет выполнен при двукратном нажатии клавиши (в течении 300 мс, не отпуская клавиши-модификаторы)
А нельзя ли сделать и по-другому — чтобы дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.

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

Posted: Mon 11 Jul, 2016 08:29
by John Doe
Пример?

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

Posted: Mon 11 Jul, 2016 09:50
by HaRT
sToLp wrote:дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.
Полагаю, что иногда пользователю это будет даже чисто физически сложнее. К тому же нажатие–отпускание сочетания модификаторов нередко является самостоятельным шоткатом. Поэтому предлагаю оставить, как сейчас.

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

Posted: Mon 11 Jul, 2016 11:15
by sToLp
John Doe wrote:Пример?
Дважды нажать LCtrlScrollLock (тоже с Apps или Pause), а затем уже букву H явно проще, чем одновременно все три. Да и даже просто дважды нажать Shift, а уже затем (м.б. даже той же освободившейся рукой) другую клавишу — это проще, чем жать их одновременно одной рукой, а тем более если двумя.
HaRT wrote:
sToLp wrote:дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу? Полагаю, что так пользователю удобнее было бы.
Полагаю, что иногда пользователю это будет даже чисто физически сложнее.
Задумался над этим, но так и не понял как может одномоментное нажатие меньшего количества клавиш оказаться физически сложнее, чем нажатие большего их количества.
HaRT wrote:К тому же нажатие–отпускание сочетания модификаторов нередко является самостоятельным шоткатом.
Так, вроде бы, и хорошо же — нажали их дважды подряд (ТукТук), а потом их же в третий раз (-Тук). Имхо, это вполне удобно.

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

Posted: Mon 11 Jul, 2016 11:46
by HaRT
sToLp wrote: как может одномоментное нажатие меньшего количества клавиш оказаться физически сложнее
Как я понял, Вы предлагаете нажать сочетание модификаторов, отпустить их все и нажать одновременно снова. Правильно? При таком подходе очень просто недожать какой-то модификатор или отпустить прежде времени. Традиционный же подход — это просто держать их нажатыми, а отпустить–нажать только одну клавишу — ключевую. Т.е. одним пальчиком пошевелить вверх–вниз.
Поэтому я считаю, что если уж и реализовывать такой режим, то не вместо имеющегося, а в дополнение к нему; соответственно, и назвать иначе. Если John Doe идея понравится, то я готов помочь придумать обозначение.
sToLp wrote: нажали их дважды подряд (ТукТук), а потом их же в третий раз (-Тук)
Я вообще не об этом, а о том, что одиночное (более-менее) одновременное нажатие и последующее отпускание группы модификаторов — это иное действие, нежели их нажатие, затем нажатие–отпускание ключевой клавиши, а затем отпускание модификаторов.

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

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

HaRT wrote:Если John Doe идея понравится, то я готов помочь придумать обозначение
Подобная готовность много значит для поддержания командного духа. Заранее спасибо!

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

Posted: Wed 13 Jul, 2016 14:11
by sToLp
sToLp wrote:А нельзя ли сделать ... чтобы дважды жать именно на клавиши-модификаторы, а затем уже, отпустив их, жать один раз на "целевую" клавишу?
По зрелому размышлению, полагаю, что было бы очень хорошо и достаточно и того, чтобы макросы могли срабатывать просто на двойное нажатие модификаторов и их сочетаний, даже без привязки этого действия к последующему нажатию на другие клавиши. Ведь заинтересованный пользователь при надобности мог бы тогда разнообразно ветвить это действие с помощью меню "Выполнить макрос" или пользовательских меню.

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

Posted: Wed 13 Jul, 2016 14:27
by HaRT
sToLp wrote: двойное нажатие модификаторов и их сочетаний, даже без привязки этого действия к последующему нажатию на другие клавиши
Кстати, да, сперва двойное нажатие чего-то, а затем какое-то нажатие ещё чего-то — это же ведь уже аккорд, а поддержка аккордов — это несколько другое, хотя тоже поддержано (до определённой степени) macroEx'ом.

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

Posted: Wed 13 Jul, 2016 17:03
by John Doe
sToLp wrote: было бы очень хорошо и достаточно и того, чтобы макросы могли срабатывать просто на двойное нажатие модификаторов и их сочетаний,
Приведите примеры желаемых комбинаций

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

Posted: Wed 13 Jul, 2016 18:05
by sToLp
Банальные Ctrl, Alt, Shift, CtrlAlt, CtrlShift, AltShift, CtrlAltShift.

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

Posted: Wed 13 Jul, 2016 19:50
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
Это тоже возможно, но на практике не слишком удобно, имхо врядли стоит усложнять простой скрипт.
(но вы для себя всегда можете допилить конечный макрос, добавив дополнительное условие)

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

Posted: Wed 13 Jul, 2016 20:47
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:(но вы для себя всегда можете допилить конечный макрос, добавив дополнительное условие)
А вот это для моего уха звучит как-то совершенно загадочно.

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

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

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

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

Posted: Wed 13 Jul, 2016 20:59
by zg
John Doe wrote:ведь сам фар не различает такие комбинации для макросов.
в смысле?
Image

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

Posted: Thu 14 Jul, 2016 07:13
by John Doe
Я о комбинациях одних только модификаторов, тех что вызывают макросы при отпускании.

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

Posted: Fri 22 Jul, 2016 14:33
by John Doe
John Doe wrote: Это значит что если (например) будет предоставлена возможность назначить макрос на "Ctrl+Alt", то несложно добавить в макрос на Alt дополнительный condition с проверкой нажат ли Ctrl.
В общем пробовать надо.
Попробовал.
Ничего не выйдет, т.к. фар сейчас не запускает макрос на Alt при нажатом Ctrl.