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

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

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

Postby Shmuel » Mon 12 Dec, 2016 18:34

Latest post of the previous page:

HaRT wrote:Source of the post ока даже не представляю, как к нему подступиться.
Очень просто - выбросить condition и добавить её код в сам макрос (посредством if).

User avatar
HaRT
Moderator
Posts: 7952
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Postby HaRT » Mon 12 Dec, 2016 19:19

Shmuel wrote:Source of the post выбросить condition и добавить её код в сам макрос (посредством if)
Спасибо, в данном случае это ещё и исправило ошибку в самом повторяемом макросе. ;)
А вот как бы ещё из нашего макроса–повторителя вывести окошко типа “Теперь нажмите кнопкосочетание”, которое бы закрывалось само, когда клавиша нажата? (Ну и хорошо бы иметь возможность отмены мышкой.) С far.Message у меня что-то не получается (что и не странно, учитывая модальность выводимой диаложки).
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 4997
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Postby Shmuel » Mon 12 Dec, 2016 19:39

HaRT wrote:Source of the post С far.Message у меня что-то не получается
Задавайте параметр Buttons равным "".

User avatar
HaRT
Moderator
Posts: 7952
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Postby HaRT » Mon 12 Dec, 2016 20:08

Shmuel wrote:Source of the post Задавайте параметр Buttons равным "".
Спасибо, теперь вообще отлично!
Code: [Select all] [Expand/Collapse] [Download] (Common_RepeatShortcut.lua)
  1. -- See http://forum.farmanager.com/ viewtopic.php?p=141993#p141993
  2. local breakBy = 'Break'  -- press CtrlPause
  3. Macro {
  4.   area='Common'; key='CtrlShiftR'; description='Repeat shortcut/macro';
  5.   action=function()
  6.     local title = 'Repeat shortcut/macro'
  7.     local input = far.InputBox(
  8.       win.Uuid('EF2ACCC7-AD34-4523-8177-295EC05B3F02'), title, '&Times')
  9.     local num = tonumber(input)
  10.     if num and num>0 then
  11.       far.Message('Press the shortcut now. Cancel by '..breakBy..'.', title, '')
  12.       local key = mf.waitkey(0,0)
  13.       if key ~= breakBy then
  14.         if eval(key,2)==-2 then
  15.           for _=1,num do Keys(key) end
  16.         else
  17.           for _=2,num do eval(key,2) end
  18.         end
  19.       end
  20.     end
  21.   end;
  22. }
Перевесил в область Common, переназначил на CtrlShiftR.
Last edited by HaRT on Mon 12 Dec, 2016 22:22, edited 4 times in total.
Reason: Исправлена возможность отмены ввода кнопкосочетания (по умолчанию — CtrlPause)
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 4997
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Postby Shmuel » Mon 12 Dec, 2016 20:44

for i=1,num do Keys(key); local _ = i; end - уж очень коряво.
Используйте _ вместо i для подавления варнинга.

User avatar
HaRT
Moderator
Posts: 7952
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Postby HaRT » Mon 12 Dec, 2016 21:05

Shmuel wrote:Source of the post Используйте _ вместо i для подавления варнинга.
Спасибо, исправил.
Заодно добавил возможность отмены ввода кнопкосочетания (по умолчанию — CtrlPause).
Фар есть инструмент, а не нянька. © 2009 DrKnS

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

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

Postby iva » Mon 12 Dec, 2016 21:34

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

Code: Select all

 if not (key == breakBy) then

Или это у меня что-то не так работает?

Shmuel
Posts: 4997
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Postby Shmuel » Mon 12 Dec, 2016 22:11

iva wrote:Source of the post мне пришлось поставить скобки в 13 строке
Правильно. Там баг.
Можно обойтись и без скобок: if key ~= breakBy then.

User avatar
HaRT
Moderator
Posts: 7952
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Postby HaRT » Mon 12 Dec, 2016 22:24

Shmuel wrote:
iva wrote:Source of the post мне пришлось поставить скобки в 13 строке
Source of the post Правильно. Там баг.
Можно обойтись и без скобок: if key ~= breakBy then.
Спасибо, исправил.
Last edited by HaRT on Mon 12 Dec, 2016 22:25, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

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

Postby alex86m6 » Tue 13 Dec, 2016 11:17

HaRT wrote:Source of the post
Shmuel wrote:
iva wrote:Source of the post мне пришлось поставить скобки в 13 строке
Source of the post Правильно. Там баг.
Можно обойтись и без скобок: if key ~= breakBy then.
Спасибо, исправил.


Поместите +/- окончательный вариант :-)
Заказчик-то я, если вспомните :-)

User avatar
HaRT
Moderator
Posts: 7952
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Postby HaRT » Tue 13 Dec, 2016 12:33

Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

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

Postby alex86m6 » Fri 16 Dec, 2016 11:53

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


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

Who is online

Users browsing this forum: No registered users and 8 guests