Переключение дисков по Ctrl/Alt/Shift+<-/->

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Fri 02 Nov, 2012 05:53

Макрос написан по мотивам анси-плагина Change Active Drive by Ilya V. Gershman
Стрелки (или другие назначенные клавиши) в сочетании с LeftCtrl/LeftAlt/RightCtrl/RightAlt/Shift в указанных комбинациях меняют диск для левой/правой/активной/пассивной (в зависимости от настроек) панели. Замечания и предложения принимаются с благодарностью.

Attachments
CtrlAltMenuDisk.3.3.0.7z
последняя версия
(14.95 KiB) Downloaded 30 times
CtrlAltMenuDisk2.0.fmlua.7z
Версия 2.0 - последняя fmlua
(1.54 KiB) Downloaded 28 times
CtrlAltMenuDisk1.1.fmlua.7z
Совсем старая версия (1.1) для версий Фара без Mouse.LastCtrlState
(1.62 KiB) Downloaded 23 times
Last edited by IgorZ on Thu 15 Jun, 2017 09:30, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Fri 14 Nov, 2014 10:20

Latest post of the previous page:

Пункт в меню плагинов зачем-то добавляется и для диалогов (при этом не работает).
А в панелях неплохо бы обрабатывать Esc для отмены.
Кстати сейчас последовательность Esc Enter у меня почему-то гасит панели.

P.S.
И я вообще не очень понимаю какой сценарий применения при вызове из меню плагинов.
Какие преимущества перед AltF1/F2?

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Fri 14 Nov, 2014 10:22

John Doe wrote:Пункт в меню плагинов зачем-то добавляется и для диалогов (при этом не работает).
Тупо скопировал из другого, забыв, поправить. Уберу в следующей версии, так как не критично.
John Doe wrote:А в панелях неплохо бы обрабатывать Esc для отмены.
Ctrl+Esc и Alt+Esc обрабатывает сама Windows. Так что увы. Есть Home, возвращающий курсор на исходную позицию - чем не устраивает?
John Doe wrote:И я вообще не очень понимаю какой сценарий применения при вызове из меню плагинов.
Какие преимущества перед AltF1/F2?
Добавлял ради настроек, заодно и это сделал.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Fri 14 Nov, 2014 10:29

IgorZ wrote: Ctrl+Esc и Alt+Esc обрабатывает сама Windows. Так что увы
XKeys позволяет забрать у Windows эту привилегию.
Но при вызове из меню плагинов я не удерживаю ни Alt ни Ctrl, поэтому сейчас речь о просто Esc.
(и что за странный эффект при нажатии Esc Enter)

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Fri 14 Nov, 2014 10:43

John Doe wrote:
IgorZ wrote: Ctrl+Esc и Alt+Esc обрабатывает сама Windows. Так что увы
XKeys позволяет забрать у Windows эту привилегию.
Не пользуюсь им, так что даже забыл, что такой существует.
John Doe wrote:Но при вызове из меню плагинов я не удерживаю ни Alt ни Ctrl, поэтому сейчас речь о просто Esc.
Странно. Для вызова из меню обработка Esc сделана и работает. Только что ещё раз проверил.
John Doe wrote:(и что за странный эффект при нажатии Esc Enter)
Какой именно эффект? Подробнее, пожалуйста.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Fri 14 Nov, 2014 10:56

IgorZ wrote: Странно. Для вызова из меню обработка Esc сделана и работает. Только что ещё раз проверил.
Добавьте в условие такой макрос:

Code: Select all

Macro {
  area="Shell"; key="Esc";
  action=function()
    Keys "CtrlO"
  end;
}
Update: viewtopic.php?f=15&t=8735&p=125590#p125590

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

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by HaRT » Fri 14 Nov, 2014 13:09

IgorZ wrote: люди редактируют скрипт, отключая Ctrl/стрелки, чтобы они не мешали изменять размер панелей Far-а. Для тех, кто до сих пор не знает, подсказываю: для этого можно использовать стрелки на цифровой клавиатуре
У меня, например, в „лучшие“ времена было настроено, чтобы стрелки цифровой клавиатуры задвигали панели в указанном направлении до упора (а обычные — штатно, на одну позицию). Т.ч. некоторая актуальность в упоминаемых правках всё же имеется.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
sToLp
Posts: 774
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 58 times
Been thanked: 5 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by sToLp » Sat 15 Nov, 2014 08:01

IgorZ wrote:Версия 3.0.5 - Выбор символа плагина: при нажатии клавиш и комбинаций с длинными названиями (Ctrl, AltQ, etc) возникала ошибка. Исправлено.
Спасибо!

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Mon 29 Dec, 2014 11:45

Перед Новым Годом привожу выкладки в порядок.
Версия 3.0.6 - Esc - отмена выбора диска, Enter - переход на диск. Для нормального использования под Windows необходимо сочетать с XKeys или каким-то аналогом.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Sun 01 Feb, 2015 22:31

В строке 272 скрипт пытается грузить все подряд плагины, что может приводить к ошибкам, в случае если плагин зависит от внешних библиотек, которые находятся в его папке.

Может попробовать вместо этого загружать плагины посредством FAR API, а далее GetModuleHandle + GetProcAddress?

Edit
John Doe wrote: загружать плагины посредством FAR API
Накладно это по ресурсам, и первая загрузка естественно тормозит...

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Tue 03 Mar, 2015 08:27

Вот такой код стабильно вызывает падение какого-либо плагина:

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Tue 03 Mar, 2015 09:27

Вот минимальный код для воспроизведения:

Code: Select all

local ffi = require"ffi"
local plugin = far.GetPlugins()[1]
local name = far.GetPluginInformation(plugin).ModuleName
ffi.load(name)
far.ForcedLoadPlugin("PLT_PATH",name)
collectgarbage()
far.GetPluginInformation(plugin)
Минимальный фикс: собрать мусор до реальной загрузки плагина фаром:

Code: Select all

local ffi = require"ffi"
local plugin = far.GetPlugins()[1]
local name = far.GetPluginInformation(plugin).ModuleName
ffi.load(name)
collectgarbage()
far.ForcedLoadPlugin("PLT_PATH",name)
far.GetPluginInformation(plugin)
Или же честно использовать LoadLibrary+GetProcAddress+FreeLibrary, как и рекомендовалось изначально.

Update: viewtopic.php?f=8&t=9393

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Fri 29 May, 2015 07:31

Правка всё ещё требуется, или уже не актуальна в связи с исправлениями в Far-е?

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by John Doe » Fri 29 May, 2015 09:10

Да, в фаре исправлено.

Но в скрипте я бы тоже кое-что изменил: сейчас все плагины анализируются в момент открытия настроек.
А рациональнее было бы это делать только при нажатии [ Processed plugins ]

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Fri 11 Dec, 2015 06:24

Версия 3.0.7 - Рефакторинг работы с плагинами. Мелкие правки.
John Doe wrote:Да, в фаре исправлено.

Но в скрипте я бы тоже кое-что изменил: сейчас все плагины анализируются в момент открытия настроек.
А рациональнее было бы это делать только при нажатии [ Processed plugins ]
Таки сделал. И выгрузку плагинов (спасибо за образец), и перенёс в обработчик [ Processed plugins ].

User avatar
Mauro72
Posts: 210
Joined: Wed 11 Aug, 2010 00:23
Location: Rosario, Argentina
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by Mauro72 » Wed 16 Dec, 2015 20:26

IgorZ,
- May be a blank space between drives [C D E F..]? Highlighted the current drive in uppercase, not lowercase.
- And a option to show always the drives in two panels?
Something like this:

Thanks!

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

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by HaRT » Wed 16 Dec, 2015 20:40

Mauro72 wrote: Highlighted the current drive in uppercase, not lowercase
How is it now? If [CDEFGhIJKLNS], then it resembles a row of physical buttons, one of them pressed — quite intuitive…
Color highlight would be helpful anyway.
Фар есть инструмент, а не нянька. © 2009 DrKnS

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Переключение дисков по Ctrl/Alt/Shift+<-/->

Post by IgorZ » Thu 17 Dec, 2015 07:47

Mauro72 wrote:May be a blank space between drives [C D E F..]?
Only if as option.
Mauro72 wrote:Highlighted the current drive in uppercase, not lowercase.
Similarly.
Mauro72 wrote:And a option to show always the drives in two panels?
Please, more detail.

Post Reply

Return to “Полезные макросы и скрипты”