Page 2 of 5

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.

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

Posted: Tue 19 Aug, 2014 20:55
by John Doe

Latest post of the previous page:

Обновление:
  • Последовательности теперь указываются через знак - (минус), например CtrlK-B.
  • В качестве модификатора теперь поддерживается и Shift.
Всё в шапке.

Update: исправлена ошибка

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

Posted: Thu 21 Aug, 2014 10:54
by AleXH
Напомню что в символы верхнего регистра в фаре фигурируют без Shift, это учитывается и поддерживается.
Удачная ли это мысль, учитывая, что в FAR принято иначе? Также возникает путаница: CtrlK-B это CtrlShift-k-b? Имхо лучше, когда Shift указывается явно.

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

Posted: Thu 21 Aug, 2014 11:00
by John Doe
Я плохо объяснил.
Без Shift могут быть только только простые клавиши, без Ctrl/Alt. Именно так принято в фаре. Т.е. в этом месте путаницы быть не может.

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

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

Posted: Fri 22 Aug, 2014 23:40
by John Doe
Обновление:
  • Исправлена ошибка, модификатор Double не работал с лево/правосторонними комбинациями
В шапке.

P.S.
Только что выложенный Macro Browser alt. r1.3 использует такие комбинации, рекомендую обновиться.

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

Posted: Wed 17 Dec, 2014 23:58
by LanKing
Ctrl/:Double не работает.

Примечание модератора: http://bugs.farmanager.com/view.php?id=2899

turbo — работа с выделением в редакторе

Posted: Thu 16 Jul, 2015 20:40
by HaRT
Некрасивость: при (быстром) нажатии незадействованной комбинации (например, CtrlK-O) происходит срабатывание CtrlK, но в строке статуса при этом остаётся висеть сообщение CtrlO. Хотелось бы, чтобы ни того, ни другого не происходило, а вместо всего этого кратковременно (например, там же в строке статуса) выводилось сообщение, что вызвана незадействованная (unassigned) комбинация.
Кстати, конкретно на CtrlK-O (чтобы как в Студии) я собираюсь повесить переход к парному файлу (только пока не сконвертировал на Луа).

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

Posted: Thu 16 Jul, 2015 21:03
by John Doe
HaRT wrote: при (быстром) нажатии незадействованной комбинации (например, CtrlK-O) происходит срабатывание CtrlK
Не должно быть срабатывания, и в моей рабочей версии MacroEx его и нет (как и сообщения CtrlO).
HaRT wrote: сообщение, что вызвана незадействованная (unassigned) комбинация.
Запишу себе.

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

Posted: Thu 16 Jul, 2015 21:08
by HaRT
John Doe wrote: в моей рабочей версии MacroEx его и нет
Планируете ли её опубликовать?
John Doe wrote: Запишу себе.
Спасибо.

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

Posted: Thu 16 Jul, 2015 21:20
by John Doe
HaRT wrote: Планируете ли её опубликовать?
В текущем виде не хотелось бы (и не знаю буду ли заниматься в ближайшее время).
Но если реально мешают какие-нибудь баги...

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

Posted: Thu 16 Jul, 2015 21:28
by HaRT
John Doe wrote: если реально мешают какие-нибудь баги...
Я вот только сегодня столкнулся то ли с конфликтом между Turbo (выделение строки) и Editor_SmartHomeEnd от SimSU (выделение до начала/конца строки), то ли с ошибкой в одном из них. Пока не разбирался. Как разберусь, отпишусь в соответствующей теме.

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

Posted: Mon 20 Jul, 2015 14:16
by HaRT
HaRT wrote: чтобы была возможность вставить разделители с текстом
John Doe wrote: разделитель будет свойством пункта, перед которым должен появиться
John Doe wrote:
HaRT wrote: А как-нибудь более самостоятельно?
Предлагайте.
Как я понимаю, подсказку MacroEx компонует, собирая в подходящих областях (например, Editor, Common) макросы, у которых начало аккорда совпадает с уже нажатым кнопкосочетанием (скажем, [b]CtrlQ[/b]), а дальше идёт дефис. Это так?
Если да, то разделителями можно было бы считать те макросы, у которых этим дефисом аккорд и заканчивается (т.е. [b]CtrlQ-[/b]), — тогда и с принадлежностью к семейству макросов вопросов не возникнет, и спокойно можно вставить в общую последовательность.
Реально?

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

Posted: Mon 20 Jul, 2015 14:31
by John Doe
Этих псевдо-макросы представляются мне некрасивой и избыточной конструкцией.
Чтобы luamacro их загрузил обязательно должно быть задано поле action.
Плюс эти макросы-разделители будут видны и в MacroBrowser (скорее всего совершенно не в том порядке, как вам хотелось бы)

Стоит оно того?

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

Posted: Mon 20 Jul, 2015 15:31
by HaRT
John Doe wrote: Стоит оно того?
Для меня — да. Чтобы угодить и тем, кому нет, можно добавить опцию.

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

Posted: Mon 20 Jul, 2015 18:02
by John Doe
Так используйте, если устраивает. Должно работать и сейчас.

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

Posted: Wed 29 Jul, 2015 09:27
by John Doe
Задача из темы http://forum.farmanager.com/viewtopic.p ... 07#p131607 с помощью MacroEx решается например так:

Code: Select all

local Symbols = {
  q="«",
  w="»",
  Space=" ",
  [","]="<",
  ["."]=">",
  ["'"]=""",
  ["7"]="&",
  r="&reg;",
  t="&trade;",
  c="&copy;",
}
local hk = "AltS"
local descr = "Web editor:"
local keys = ""
for key,str in pairs(Symbols) do
  Macro { description=("%5s: %s "):format(key,str);
    area="Editor"; key=hk.."-"..key;
    action=function()
      print(str)
    end;
  }
end

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

Posted: Wed 29 Jul, 2015 10:24
by lurii
John Doe wrote: Задача из темы lurii @ Пользовательское меню в редакторе с помощью MacroEx решается так:
К сожалению, работает все, кроме пробела.
Сочетание AltS+Пробел вызывает появление виндовой менюшки far как буд-то кликнули мышкой по иконке окна слева вверху.
(Восстановить, Переместить, Размер, Свернуть, Развернуть ...)

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

Posted: Wed 29 Jul, 2015 10:42
by John Doe
lurii wrote: К сожалению, работает все, кроме пробела.
Это особенность консоли, решаемо: http://forum.farmanager.com/viewtopic.php?f=60&t=8481
(впрочем, это может и не понадобиться, см. ниже)
lurii wrote: MacroEx тоже выводить сообщение с подсказкой, но при этом необходимо постоянно удерживать клавишу Alt чтобы сработала 3-я клавиша и тянуться на другой край клавы не всегда получится.
Если в начале MacroEx.lua можно закомментировать строчку local break_sequence_on_mod_release = true, то можно будет не удерживать.