Сконструировал вот макрос, который по двойному нажатию модификатора Shift в меню выбора макросов, запущенного из панелей, запускает нативную команду, соответствующую ключу, которым было вызвано данное меню выбора.
Он составлен на случаи, когда собираешься вызвать внутреннюю команду Far, не заботясь о том, не навешаны ли на данный ключ макросы, перебивающие нативную команду. А, вызвав меню выбора макросов просто нажимаешь дважды Shift и получаешь-таки ожидаемый результат.
Хотелось бы ещё расширить возможности этого макроса так:
а) чтобы он мог работать из меню выбора макросов, запущенных макросами из любой макрообласти, а не только из Shell;
и
б) чтобы в случаях отсутствия нативной команды выдавалось бы сообщение об этом.
Но у меня, увы, не достаёт для этого компетенции. Поэтому желательна помощь форумчан.
Простой вызов нативных команд из меню выбора макросов
Простой вызов нативных команд из меню выбора макросов
- Attachments
-
- {{_запускНативныхКомандСоответствующихМенюВыбораМакросовВызванногоИзПанелей(sToLpПоJD)menShe.lua
- (4.63 KiB) Downloaded 183 times
- John Doe
- Бюрократ
- Posts: 13866
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Простой вызов нативных команд из меню выбора макросов
Настоятельно прошу вас воздержаться от использования Лишних функций.
Нет никакого желания разбираться чего вы там из них наворотили.
а) примерно так (но не тестировал)
б) это можно сделать используя вашу базу стандартных сочетаний, другого пути нет.
Нет никакого желания разбираться чего вы там из них наворотили.
Code: Select all
local maxDelay = 500 -- промежуток времени между двумя нажатиями пусковой клавиши (в миллисекундах)
local t = 0
local ID = "165AA6E3-C89B-4F82-A0C5-C309243FD21B"
Macro {
description=[[Выйти из меню выбора lua-макросов, с запуском соответствующей данному меню нативной команды по двойному нажитию Shift`а
(задумка sToLp реализуется методами, перенятыми на форуме Far)]];
area="Menu";
key="Shift"; -- нажимать дважды подряд
id="F7F35368-2574-4EB9-98CD-6E3D7C74A5F1";
condition=function()
if Menu.Id==ID then
local t1 = Far.UpTime
local delay = t1-t
t = t1
return delay<maxDelay
-- данный condition обеспечивает срабатывание ключа на двойное нажатие
-- и работу макроса только в меню выбора макросов, запущенном макросом из панелей
end
end;
action=function()
local key=Object.Title:match"| (.+)$"
Keys("F10") -- возврат из меню
Keys(key)
end;
}
б) это можно сделать используя вашу базу стандартных сочетаний, другого пути нет.
Простой вызов нативных команд из меню выбора макросов
Изящно и шикарно! Очень Вам благодарен за помощь!
Используя замечательные свойства меню выбора макросов из них можно простыми способами составлять удобные и полезные контекстные меню. И, при этом, в них часто целесообразно включать также и эмуляцию нативных команд, перекрываемых ключами вызова макросов. Теперь же, благодаря Вашему варианту сабжевого макроса, это включение будет обеспечивается автоматически, без дополнительных усилий.
Ниже прикрепляю версию макроса от John Doe для тех, кто захочет макрос скачать.
"База стандартных сочетаний" сама по себе несообразно велика по сравнению с данным изящным макросом. В интересах освоения способов применения макросов попробую-таки всё же с нею и данным макросом поупражняться. И посмотрю, что из этого получится. Хотя, сугубо интуитивно, совсем не хочется утяжелять данный макрос. И, поскольку нет простого способа выявления отсутствия назначения нативных команд на клавиши и их сочетания, то, наверное, пока целесообразно всё же будет довольствоваться фактом отсутствия реакции на попытки вызова внутренних команд клавишами, на которые таковые ещё не назначены.
Большое спасибо Вам за вполне конкретный совет! Попробую освоить указанную махину информации. Но не могу гарантировать, что практический результат будет скорым.John Doe wrote: ↑Thu 23 Nov, 2017 19:22Настоятельно прошу вас воздержаться от использования Лишних функций
- Attachments
-
- {{_запускНативныхКомандСоответствующихМенюВыбораМакросов(JD)men.lua
- (1.83 KiB) Downloaded 198 times
Простой вызов нативных команд из меню выбора макросов
Собственно получается, на мой взгляд, вполне приемлемо. С учётом вышеуказанной громоздкости "Базы стандартных сочетаний", как Вы её называете.
Для удобства работы с предваряющими сообщениями добавил макрос для их выполнения также двойными нажатиями Shift`а. Чтобы можно было в меню выбора макросов дважды нажать Shift, увидеть диалог с предупреждением, и снова дважды нажав всё тот же Shift получить ожидаемый результат.
- Attachments
-
- {{_запускНативныхКомандСоответствующихМенюВыбораМакросов-сВыводомДопИнфы(JD)[20171124-2]men.lua
- (168.93 KiB) Downloaded 151 times