MacroEx eXtended @Xer0X Ed. - запуск макросов нетрадиционными способами ! MULTIPLE UNLIMITED KEY STROKES ASSIGN TO MACRO

Здесь обсуждается всё, что касается макросов.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

MacroEx eXtended @Xer0X Ed. - запуск макросов нетрадиционными способами ! MULTIPLE UNLIMITED KEY STROKES ASSIGN TO MACRO

Post by citRiks »

ВВИДУ ОТСУТСТВИЯ ОБЩЕСТВЕННОГО ИНТЕРЕСА (нет лайков)
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)

MULTIPLE KEY SEQUENCES (COMBINATIONS) CONSISTING OF UNLIMITED MULTIPLE KEY STROKES

The original idea and script:
viewtopic.php?f=15&t=8764

MacroEx — запуск макросов нетрадиционными способами eXtended @Xer0X Edition
https://github.com/dr-dba/far-lua-key-efficiency
The latest version which is still similar to the @JD original,
next modifications will differ significantly:
https://github.com/dr-dba/far-lua-key-e ... 4cc83fd023

The differences from the original MacroEx:
  • Shorter sequences/extension takes precedence and thus priority other longer ones.
    for example: CtrlF1-AltF2 will be executed, rather than CtrlF1-AltF2-ShiftF3
    That seems to be the most natural and obvious behavior, but opposite to the original idea, though.
    Same way and logic, all the "normal" keys takes precedence/priority other sequenced/extended ones.
    As for example: CtrlF1 will be executed, rather than CtrlF1-AltF2
  • (R|L)(Alt|Ctrl) differentiated, handled correctly traditional (for single key presses) in the FAR way
  • Key sequence can be of an unlimited length, the original has only two keypresses possible
  • Key sequences can be of any letters, for example X-Y-Z is a completely legit sequence.
  • :(Hold|Double) can be at any place in the sequence any times (the original the first position only)
  • You can cancel the current incomplete sequence by pressing Escape
  • Conditioned and pre-conditioning for macro execution by function + file mask + flags, if those defined
  • Now such as these key combinations are handled correctly:
  • CtrlAlt-CtrlAlt works as following:
    Ctrl[DOWN]==>>Alt[DOWN]==>>Alt[UP]==>>Ctrl[UP] ... Ctrl[DOWN]==>>Alt[DOWN]==>>Alt[UP]==>>Ctrl[UP]
  • CtrlAlt-Alt works as following:
    Ctrl[DOWN]==>>Alt[DOWN]==>>Alt[UP]==>>Ctrl[UP] ... Alt[DOWN]==>>Alt[UP]
  • CtrlAlt:Double works as following:
    Ctrl[DOWN]==>>Alt[DOWN]==>>Alt[UP]==>>Alt[DOWN]==>>Alt[UP]
  • CtrlAlt:Hold works as following:
    Ctrl[DOWN]==>>Alt[DOWN]==>>Alt[UP] ... {STILL HOLDING CTRL FOR THE CERTAIN TIME} ... Ctrl[UP]
предполагаются следующие варианты применения
1.) Назначение на любой макро-скрипт по желанию
2.) Использовать для вставки templates при некоторых многобуквенных сочетаниях,
например forip произведет for ii, vv in pairs(tbl1) do .. end
3.) например транслит где есть такое как "shch" для "щ"
4.) ВИМовские кнопкосочетания типа :q! (exit without saving)
5.) еще? ну итд итп. Свобода полета вобщем

Некоторые детали реализации:
  • Для обуславливания за основу взята функция GetMacro из %FarHome%\Plugins\LuaMacro\utils.lua
  • Функция для капитализации (key prettify) кнопочек сидит в модуле %APPDATA%\Far Manager\Profile\Macros\modules\Lib-Common-@Xer0X.lua
  • handler-ы, каждый хандлер это макрос который работает для многих расширенных нажатий.
    перед тем как возбудиться, в своем condition он проверяет есть ли у него согласные исполнятся макросы.
    Если таких нет, то ничего не происходит.
    если есть, то составляется таблица согласных исполнятся макросов,
    дальнейшее происходит в зависимости от то что именно понажимал юзер.
При нахождении в незавершенной последовательности действуют такие правила:
  • AltEscape просто отменяет последовательность, ничего не запускается
  • ShiftSpace прекращает последовательность, кнопочки бегут по отдельности как обычные
При этом и ShiftSpace и AltEscape могут быть в начале последовательности,
так как как им там не доступна роль контолирующих кнопочек, например:
ShiftSpace-Space-1-2-3
AltEsc:Double-Space-A-B-C

пример общего вида при исполнении:
MacroEx.png
для того чтобы не устраивать людям балаган там где его не ждут,
вce примеры в MacroEx_test сейчасс filemask = "*.lua.dat", flags = "EVSelection"
лучше начать с того что открыть файл с расширением .lua.dat,
и экспериментировать с кнопочками и условиями выполнения там.
Естессно, можно убирать или менять условия выполнения стандартными в ФАРе способами:
condition(), filemask, flags

DEPENDS ON MODULES:

https://github.com/dr-dba/far-lua-internals
introspection-@Xer0X.lua

https://github.com/dr-dba/far-lua-general-utils
Lib-Common-@Xer0X.Lua

https://github.com/dr-dba/far-lua-diagnostics
StackTracePlusPlus-@Xer0X.Lua

https://github.com/dr-dba/lua-serialize
dmp-tbl-alt-@Xer0X.Lua

"мануал/ридми" старый и не отражает всего функционала
вопросы, пожелания - писать, опять же, см. начало текста
Last edited by citRiks on Fri 27 Aug, 2021 10:47, edited 24 times in total.
LAT
Posts: 343
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 22 times
Been thanked: 39 times

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

Post by LAT »

citRiks wrote: Thu 13 May, 2021 17:02 А я хочу транслитератор например сделать, чтобы было так:
"S", "C", "H" ==>> "Щ"
А зачем там транслитератор?
Last edited by HaRT on Fri 14 May, 2021 23:32, edited 1 time in total.
Reason: Добавлена цитата из исходной темы после переноса сообщений
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

LAT wrote: Thu 13 May, 2021 19:25 А зачем там транслитератор?
не "там", а вообще. чтобы был.
ne "tam", a voobsche. chtoby byl.
LAT
Posts: 343
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 22 times
Been thanked: 39 times

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

Post by LAT »

Так не проще и удобнее сделать отдельно?
Last edited by HaRT on Fri 14 May, 2021 23:32, edited 2 times in total.
Reason: Отменено ошибочное редактирование.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

LAT wrote: Fri 14 May, 2021 18:50 Так не проще и удобнее сделать отдельно?
ваш вопрос имеет смысл конечно
можно конечно делать отдельные поделки для разного,
каждое со своими небольшими воможностями и большими ограничениями.
мне все же кажется что лучше систематизировать это все в одно что-то аккуратное и универсальное
наверное популярностью у других это пользоваться не будет,
но ведь и у нашего любимого ФАРа в целом не все с популярностью хорошо
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

НОВЫЙ ФУНКЦИОНАЛ :Yahoo!: (дедушка Xer0X здорово помог)
Неограниченное количество sequences
Проверено на CtrlAlt-F8-F7-F6-F5 из MacroEx_test.@Xer0X.lua
Все работает, подсказка-статус в углу принимает по мере нажатий вид: CtrlAlt-F8-F6-..?
при отмене sequence уже нажатые клав. кнопочки уходят как обычные клав. кнопочки,
но может быть надо предусмотреть что "Escape" отменяет уже нажатое,
тем более что в принципе это не трудно сделать..
Last edited by citRiks on Sun 16 May, 2021 20:55, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Добавлено рефакторинга и прочей красоты
Улучшена статусная строка и ее информативность
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

много хороших изменений, добавление функционала, и, что немаловажно, проверка функционала.
стали воможными кнопкосочетания типа:
CtrlS:Double-F3-F2-F1
все что в MacroEx_test.@Xer0X.lua проверено и работает как ожидается.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

кто-то уже успел скачать, а потом (сейчас) я кое-что починил, так шта..

UPD
ОБНОВИТь ЗАВИСИМОСТИ,
указаны в самом скрипте и в ReadMe на ГитХабе
Last edited by citRiks on Sat 19 Jun, 2021 18:43, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Еще QA, bugfixes, refactoring.
Вот интересно, ~10 человек сохраняют меня из ГитХаба оперативно всегда, но о багах никто не сообщает.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

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

Post by Ann »

Два последовательные красные после обновления модуля Lib-Common.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Ann, это можно игнорить, это повторные декларации ФФИ, они не обнуляются при операции "перезагрузить все макросы", поэтому повторная деклараця приводит к сообщению об ошибке, но никакая функциональность нигде от этого не страдает. да, надо бы убрать это из библиотеки, согласен что смущает, надо убрать, пока можно игнорить
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Ann, это починил, есть другие минорные изменения, все в гитхабе
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Сделана дифференциация между (R|L)Ctl/Alt
чтобы соблюдался "принцип наименьшего изумления",
проверено, работает
Post Reply

Return to “Обсуждение макросов”