Есть полезнейшая возможность в MacroLib — запуск макросов удержанием, двойным нажатием, и др.
Хорошо бы подобное и в родные макросы (тикет на мантисе есть).
А пока попробуем приблизится к решению задачи имеющимися средствами.
Предлагаю скрипт MacroEx, расширяющий возможности запуска макросов следующим образом:
В имени клавиши через двоеточие теперь можно указывать дополнительные модификаторы Hold и Double:
key:Double — макрос будет выполнен при двукратном нажатии клавиши (в течении 300 мс, не отпуская клавиши-модификаторы)
key:Hold — макрос будет выполнен при удержании (>300 мс)
Пример:
Поддерживаются последовательности из двух нажатий, перечисленные через "-":
key-key2 — макрос будет выполнен при нажатии последовательности клавиш.
Последовательность следует нажимать так:
— нажать первую клавишу (с модификатором)
— сразу отпустить саму клавишу, но продолжать удерживать модификатор
— нажать вторую клавишу и отпустить вместе с модификатором
.
Если вторая клавиша последовательности в течении секунды не будет нажата, то появится подсказка: из описаний возможных макросов. Пример:
На один и тот же key можно назначить произвольное число макросов, конфликты разрешаются по правилам, принятым в LuaMacro.
Макросы с модификаторами не лишают указанную комбинацию исходного значения: короткое нажатие выполнит исходное действие (или макрос, если назначен).
Ограничения:
В качестве key поддерживаются только комбинации клавиш с модификаторами Ctrl/Alt/Shift.
Установка: достаточно расположить прилагаемый macroEx.lua где-либо в scripts.
John Doe wrote: фар сейчас не запускает макрос на Alt при нажатом Ctrl
Поупражнявшись с макросами, назначенными на двойное нажатие на Ctrl, Alt и Shift , убедился в удобстве этой возможности. Поэтому весьма желательно, чтобы макросы и на двойное нажатие на CtrlAlt, CtrlShift и AltShift тоже появились бы.
Поддержка комбинаций из нескольких модификаторов, например CtrlAlt:Double.
Также работают и последовательности, например CtrlAlt-F8, CtrlF8-Alt. CtrlAlt:Hold тут в принципе смысла не имеет, поскольку с модификаторами событие происходит при отпускании.
Но даже Hold сейчас работает, хоть и со спецификой: нажимать надо дважды, как Double, но в конце клавишу не отпускать, а продолжать удерживать.
Поддержка ScriptsBrowser.
Помимо прочего, некоторые параметры (бывшие ранее константами в коде) сейчас доступны для изменения:
John Doe, правильно ли я понимаю, что этот скрипт не поддерживает ключи, описанные регэкспами?
macroapi_manual.ru.chm wrote:поле key может быть задано как регулярное выражение, обрамлённое слешами (/).
<...> надо явно обозначать /[LR]Ctrl/
Пример (из Вашего ме скрипта 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-символ - \)?
buniak_a_h wrote: ↑Fri 27 Apr, 2018 02:10
правильно ли я понимаю, что этот скрипт не поддерживает ключи, описанные регэкспами?
Вероятно, мне этого не требовалось.
buniak_a_h wrote: ↑Fri 27 Apr, 2018 02:10
Кстати, в этом описании регэкспы имеются в виду в стандарте lua (escape-символ - %) или в стандарте PCRE (escape-символ - \)?
В свете обострившейся борьбы за чистоту ГУИДов,
на всякий случай доношу до сведения общественности,
что у @JD строчка номер 127 в macroEx.lua имеет явно неприличный вид:
--local is_mod = k.mod[area] or k.mod.common --todo extramod
понятно что это "туду", но непонятен замысел автора.
Спрашиваю потому что рассматриваю возможность расширить ваш этот замечательный скрипт
уже причесал его, потому что мне казалось (воможно ошибочно) что подглючивает,
в принципе почти во всем разобрался
добавил в descriptions эстетики,
теперь будет например MacroEx handler for "LCtrlF4",
вместо MacroEx handler for "lctrlf4"
citRiks wrote: ↑Tue 29 Dec, 2020 16:22
a что означает эта закоментированная строчка?
С большой долей вероятности речь об использовать нестандартных модификаторов. Точнее сейчас не скажу.
citRiks wrote: ↑Tue 29 Dec, 2020 16:22
что подглючивает,
Не должно подглючивать.
Искать разницу между вашим и моим кодом времени нет. Если хотите предметного обсуждения, то выложите на гитхабе: исходный код, и ваши изменения осмысленными коммитами.
изменения не коснулись вашей логики, как я ее понимаю,
только рефакторинг с целью читаемости и неизбыточности кода.
например - имена переменных k, a, b, c - это жестко
и в остальном код приведен в более читаемый вид.
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
изменения касаются еще замены пробелов на табуляции,
и переносы строки мне удобоваримы как правило совсем в других местах чем как выы предпочитаете,
поэтому если сравнивать гитхабовским ДИФФ-ом, то наверное получится полный бардак.
Но при этом основная структура и логика не изменены.
Может я просто коментарии напишу без ссылок и реверансов на ваш исходный код?
citRiks wrote: ↑Sun 03 Jan, 2021 13:53
я понимаю что комментариев не хватает?
Не понимаете.
Работа в любой системе версионирования начинается с того, что загружается исходный текст (в неизменном виде), после чего поэтапно вносятся изменения, отдельными коммитами, объединяющими связанные правки.
Каждый коммит содержит сообщение, в котором описана цель правок.
citRiks wrote: ↑Sun 03 Jan, 2021 13:53
поэтому если сравнивать гитхабовским ДИФФ-ом, то наверное получится полный бардак.
Если изменения вносить поэтапно, то всё будет чётко и наглядно.
citRiks wrote: ↑Sun 03 Jan, 2021 13:53
Может я просто коментарии напишу без ссылок и реверансов на ваш исходный код?
Дело ваше: я не прошу ничего делать, а лишь объясняю в каком виде принято обсуждать изменения.
citRiks wrote: ↑Sun 03 Jan, 2021 13:53
А вы собсно хотите довоплотить какие-то features в этот скрипт?
Так-то я не жалуюсь, у меня работает неожиданно как ожидаемо.
у меня из идей - только доделать сочетания из трех нажатий например.
возможно перенести Вимовские кей биндинги?
Планов конкретных нет. О последовательностях из более чем 2х нажатий я когда-то и сам думал. Практического смысла нет, хотя и несложно. Впрочем как несложно, на самом деле как всегда захочется сделать красиво, потянет за собой рефакторинг, и конца этому не будет))
Вимовские биндинги это аналогично тому как я делал на Турбо? Да, интересно, но это ж будет отдельный пакет макросов. Дерзайте.
P.S.
Сейчас (как по мне) скрипт прекрасен своей простотой. При этом он вынужден повторять часть логики луамакро (с неизбежными упрощениями).
Когда-то у меня была идея совсем избавиться от дублирования, получив доступ в 'внутренностям' луамакро. Но не сложилось.
1. Нельзя ли сделать возможным обозначение в ключах макросов двойных нажатий клавиш в т.ч. просто по key: (т.е. завершающим двоеточием без постфикса), а не только по key:Double?
2. В теме приведён работающий способ применения в качестве ключей с двойными нажатиями модификаторов Ctrl, Alt, Shift и их сочетаний. Но в результирующем скрипте пока что эта весьма полезная возможность не реализована. Нельзя ли дополнить эту замечательную возможность непосредственно в скрипт?
Ann wrote: ↑Mon 18 Jan, 2021 05:20
1. Нельзя ли сделать возможным обозначение в ключах макросов двойных нажатий клавиш в т.ч. просто по key: (т.е. завершающим двоеточием без постфикса), а не только по key:Double?
Если сильно хочется то можно, но зачем?
для вашего понимания эстетики что ли?
функциональность ровно та же ведь, если я правильно понял
Ann wrote: ↑Mon 18 Jan, 2021 05:20
В теме приведён работающий способ применения в качестве ключей с двойными нажатиями модификаторов Ctrl, Alt, Shift и их сочетаний. Но в результирующем скрипте пока что эта весьма полезная возможность не реализована. Нельзя ли дополнить эту замечательную возможность непосредственно в скрипт?
я вроде проверял, и у меня работают для хоткеев и скрипты из этой темы, и с xModKeys из этой упомянутой.
Конкретно CtrlShift(:Double) кажется тоже работал, проверьте сами
хоть тема очень интетресная, мне пока сильно некогда, сожалею