Макрос, позволяющий RClick-ом выделять / вызывать меню
Макрос, позволяющий RClick-ом выделять / вызывать меню
В Conemu есть удобная фича: короткий Rclick выделяет файл, а длинный вызывает контекстное меню. Но не всегда возможно использовать Conemu. Для чистого Far-а мной написан данный макрос. В качестве основы для первоначальной версии использован макрос Max Rusov для вызова EMenu.
Данный макрос вызывается по нажатию правой кнопки мыши. Если время нажатия правой кнопки мыши меньше MinDelay, выделяется файл, иначе вызывается EMenu.
Версия 1.0. Для MacroLib.
Версия 2.0, для чистого lua.
Последняя версия также есть во вложении.
Данный макрос вызывается по нажатию правой кнопки мыши. Если время нажатия правой кнопки мыши меньше MinDelay, выделяется файл, иначе вызывается EMenu.
Версия 1.0. Для MacroLib.
Версия 2.0, для чистого lua.
Последняя версия также есть во вложении.
- Attachments
-
- RClick.lua.7z
- (697 Bytes) Downloaded 221 times
Re: Макрос, позволяющий RClick-ом выделять / вызывать меню
Хм. Действительно, упустил из виду. Спасибо.2useven10 wrote:Far.UpTime ?IgorZ wrote:Миллисекунды в качестве длительности нажатия были бы удобнее, но чего нет, того нет.
Даже проще получается.
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Макрос, позволяющий RClick-ом выделять / вызывать меню
Тема перенесена из "Обсуждения".
Просьба добавить в шапку полный текст макроса.
Просьба добавить в шапку полный текст макроса.
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Макрос, позволяющий RClick-ом выделять / вызывать меню
WindowsXP
Вместе с графическим меню в 90% случаев выскакивает и меню консоли Изменить {Пометить/Вставить/...}
С чем связано? Можно ли побороть (кроме как поменять вызов на текстовое меню)?
Пробовал уменьшать MinDelay, не влияет.
Update
Немного помогла настройка emenu:
Но проблема видимо глубже: http://forum.farmanager.com/viewtopic.php?f=9&t=7540
Вместе с графическим меню в 90% случаев выскакивает и меню консоли Изменить {Пометить/Вставить/...}
С чем связано? Можно ли побороть (кроме как поменять вызов на текстовое меню)?
Пробовал уменьшать MinDelay, не влияет.
Update
Немного помогла настройка emenu:
Menu position (•) At the mouse cursor
Но проблема видимо глубже: http://forum.farmanager.com/viewtopic.php?f=9&t=7540
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Макрос, позволяющий RClick-ом выделять / вызывать меню
Пока разбирался с описанной выше проблемой обнаружил у макроса пару недостатков:
- Может реагировать на двойное нажатие, без удержания. Решается небольшим изменением логики.
(Кстати в комментарии неточность: сказано будто меню вызывается после отпускания) - При вызове меню макрос инвертирует пометку текущего элемента, в некоторых случаях зря: под указателем мыши может находиться пустая колонка панели, в этом случае rightclick ничего не помечает. (по умолчанию, но см.
hlf:@Panel.RightClickRule
)
Можно побороть, если контролировать изначальное состояние панелей.
(Кстати с этими пустыми колонками и без того не просто) - Есть смысл распространить действие макроса на область Tree.
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Макрос, позволяющий RClick-ом выделять / вызывать меню
Альтернативная модификация: меню вызывается сочетанием ЛКМ + ПКМ (MsLClick+MsRClick):
Особенности:
Особенности:
- При использовании графического меню (rclk_gui:) меню вызывается после отпускания кнопки мыши (в целях обхода бага).
- При использовании текстового меню (rclk_txt:) необходимо убедиться, что в настройках EMenu активна опция
(•) В позиции курсора мыши
, иначе меню будет закрываться сразу после отпускания кнопок мыши.
(Альтернативно: открытьПараметры/Настройки меню
, и для обоих клавиш изменить значение наНичего не делать
)
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Макрос, позволяющий RClick-ом выделять / вызывать меню
Поведение управляется параметрами:
Варианта вызова:
Code: Select all
local GUImenu = true -- показывать графическое / или текстовое меню
local HoldMode = true -- срабатывать при удержании ПКМ / или при нажатии ПКМ+ЛКМ
- Удержанием правой клавиши мыши (ПКМ)
- Одновременным нажатием правой и левой клавиши (ПКМ+ЛКМ).
Можно нажимать одну, а потом другую клавишу, порядок не принципиален.
Примечание:
- Есть возможность вызывать как текстовое меню, так и графическое.
Можно выбрать какой из вариантов будет основным, а какой дополнительным.
(Дополнительный вариант срабатывает при удержании модификаторов Shift или Ctrl) - При использовании графического меню (rclk_gui:) меню вызывается после отпускания кнопки мыши (в целях обхода бага).
- Attachments
-
- RightClickAlt2.lua.7z
- (1.25 KiB) Downloaded 97 times
Макрос, позволяющий RClick-ом выделять / вызывать меню
Не знал, что color в code не отрабатывает. Без выделения цвета:
Code: Select all
RClick выделяет файл/ длинный RClick вызывает контекстное меню (c) IgorZ
...
local EMPath = win.GetEnv("FARHOME").."\\Plugins\\EMenu\\EMenu.dll"
...
local function OnTimer()
timer:Close() timer = nil
if Mouse.Button==2 and (MouseClickOn==APanel.Path.."\\"..APanel.Current) then
Panel.Select(0,2,1)
Plugin.Load(EMPath,0)
far.MacroPost('Plugin.Command("'..EMenu..'","rclk_txt:")')
end
MouseClickOn = ""
end
Macro{
area="Shell"; key="MsRClick"; description="EMenu: mouse activation";
condition=function() return not timer end; action=function()
Plugin.Unload(EMPath);
Keys("MSRClick")
MouseClickOn = APanel.Path.."\\"..APanel.Current
timer = far.Timer(MinDelay,OnTimer)
end;
}
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Макрос, позволяющий RClick-ом выделять / вызывать меню
1. Если плагин лежит в обычном месте (как и указано в скрипте), то он в любом случае будет загружен при старте фара.
2. Фактически EMenu загружается не при старте, а при первом использовании.
3. Даже будучи загруженным, ресурсов он особо не потребляет, и в фоне не работает. Смысла выгружать соответственно мало.
2. Фактически EMenu загружается не при старте, а при первом использовании.
3. Даже будучи загруженным, ресурсов он особо не потребляет, и в фоне не работает. Смысла выгружать соответственно мало.
Макрос, позволяющий RClick-ом выделять / вызывать меню
Да, но скрипт в зависимости от версии FAR'а то работал, то не работал, а так будет работать всегда