Как повторить клавиатурный макрос N раз?

Хотите говорить о Far и не знаете, куда обратиться?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel »

Latest post of the previous page:

HaRT, заполнять параметры на этот раз мне было лень :)
Но если уж заполнять, то 1-й параметр должен быть win.Uuid('EF2ACCC7-AD34-4523-8177-295EC05B3F02'), поскольку это API плагинов, а не макросов.
HaRT wrote: А сложно ли сделать, чтобы оно работало и для стационарных макросов?
Должно работать. Приведите пример макроса, на котором у вас это не работает.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Как повторить клавиатурный макрос N раз?

Post by HaRT »

Shmuel wrote: Приведите пример макроса, на котором у вас это не работает.
— выполнять от начала файла, в котором хотя бы 2–3 строки.
Выяснил: происходит не то, что я ожидал, когда у желаемого макроса изначально Условие запуска (condition) не соблюдено, но в результате исполнения встроенных действий начинает соблюдаться. Согласен, случай довольно специфический. Пока даже не представляю, как к нему подступиться.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [spoiler]
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel »

HaRT wrote: ока даже не представляю, как к нему подступиться.
Очень просто - выбросить condition и добавить её код в сам макрос (посредством if).
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Как повторить клавиатурный макрос N раз?

Post by HaRT »

Shmuel wrote: выбросить condition и добавить её код в сам макрос (посредством if)
Спасибо, в данном случае это ещё и исправило ошибку в самом повторяемом макросе. ;)
А вот как бы ещё из нашего макроса–повторителя вывести окошко типа “Теперь нажмите кнопкосочетание”, которое бы закрывалось само, когда клавиша нажата? (Ну и хорошо бы иметь возможность отмены мышкой.) С far.Message у меня что-то не получается (что и не странно, учитывая модальность выводимой диаложки).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel »

HaRT wrote: С far.Message у меня что-то не получается
Задавайте параметр Buttons равным "".
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Как повторить клавиатурный макрос N раз?

Post by HaRT »

Shmuel wrote: Задавайте параметр Buttons равным "".
Спасибо, теперь вообще отлично!
  1. -- See http://forum.farmanager.com/ viewtopic.php?p=141993#p141993
  2.  
  3. local breakBy = 'Break'  -- press CtrlPause
  4.  
  5. Macro {
  6.  
  7.   area='Common'; key='CtrlShiftR'; description='Repeat shortcut/macro';
  8.  
  9.   action=function()
  10.  
  11.     local title = 'Repeat shortcut/macro'
  12.  
  13.     local input = far.InputBox(
  14.  
  15.       win.Uuid('EF2ACCC7-AD34-4523-8177-295EC05B3F02'), title, '&Times')
  16.  
  17.     local num = tonumber(input)
  18.  
  19.     if num and num>0 then
  20.  
  21.       far.Message('Press the shortcut now. Cancel by '..breakBy..'.', title, '')
  22.  
  23.       local key = mf.waitkey(0,0)
  24.  
  25.       if key ~= breakBy then
  26.  
  27.         if eval(key,2)==-2 then
  28.  
  29.           for _=1,num do Keys(key) end
  30.  
  31.         else
  32.  
  33.           for _=2,num do eval(key,2) end
  34.  
  35.         end
  36.  
  37.       end
  38.  
  39.     end
  40.  
  41.   end;
  42.  
  43. }
Перевесил в область Common, переназначил на [b]CtrlShiftR[/b].
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлена возможность отмены ввода кнопкосочетания (по умолчанию — CtrlPause)
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel »

for i=1,num do Keys(key); local _ = i; end - уж очень коряво.
Используйте _ вместо i для подавления варнинга.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Как повторить клавиатурный макрос N раз?

Post by HaRT »

Shmuel wrote: Используйте _ вместо i для подавления варнинга.
Спасибо, исправил.
Заодно добавил возможность отмены ввода кнопкосочетания (по умолчанию — CtrlPause).
Фар есть инструмент, а не нянька. © 2009 DrKnS
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как повторить клавиатурный макрос N раз?

Post by iva »

мне пришлось поставить скобки в 13 строке

Code: Select all

 if not (key == breakBy) then
Или это у меня что-то не так работает?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel »

iva wrote: мне пришлось поставить скобки в 13 строке
Правильно. Там баг.
Можно обойтись и без скобок: if key ~= breakBy then.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Как повторить клавиатурный макрос N раз?

Post by HaRT »

Shmuel wrote:
iva wrote: мне пришлось поставить скобки в 13 строке
Правильно. Там баг.
Можно обойтись и без скобок: if key ~= breakBy then.
Спасибо, исправил.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 »

HaRT wrote:
Shmuel wrote:
iva wrote: мне пришлось поставить скобки в 13 строке
Правильно. Там баг.
Можно обойтись и без скобок: if key ~= breakBy then.
Спасибо, исправил.
Поместите +/- окончательный вариант :-)
Заказчик-то я, если вспомните :-)
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Как повторить клавиатурный макрос N раз?

Post by HaRT »

alex86m6 wrote: +/- окончательный вариант
http://forum.farmanager.com/viewtopic.p ... 93#p141993
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 »

Всем - Большое Спасибо за помщь.
Post Reply

Return to “Обсуждение Far Manager”