Latest post of the previous page:
не с этой ли фичей в ConEmu отдельная борьба ведется: флажок fix alt on alttab/altf9Быстрый поиск
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Быстрый поиск
Вряд ли.ccaid wrote:не с этой ли фичей в ConEmu отдельная борьба ведется: флажок fix alt on alttab/altf9
Скорее наоборот, с открытием быстрого поиска при использовании этих кнопкосочетаний.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
ccaid, спасибо за наводку, оказывается в Conemu предусмотрены фиксы для обоих описанных проблем:
Settings/Main/Keys &Macro/Controls/Miscellaneous wrote:
[ ] Fix Alt on AltTab/AltF9 (to avoid execution of Far Manager macro, linked to Alt-release)
When You set a macro on Alt (RAlt) it can unexpectedly activates on AltTab or AltF9. This issue can be fixed by sending to console Control depress before Alt release
[ ] Skip focus events (dont send to console FOCUS_EVENT, usefull with Far Manager)
Don't send focus events to console to disable autoclosing of fast search dialog in panels
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Есть фантастическая гипотеза появления этой "фичи".zg wrote:есть код, который реализует это намеренно. т.е. вроде фича. насколько полезная — сложно сказать, при отладке приходится отключать, например.John Doe wrote:Это фича или баг?
Давным давно некто из фартим использовал штатный макрос, аналогичный нынешнему AltSearch.lua , функция которого в том, чтобы по нажатию одиночного Alt открывать быстрый поиск.
Но вот проблема: сей макрос зачастую срабатывал и по AltTab и AltF9.
В результате и родился такой кривой фикс, чтобы гасить в фоне Быстрый поиск, ставший "назойливым".
P.S.
Проверил, данный костыль появился в FAR v1.70 beta 4 (в WhatsNew конечно ничего нет)
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Быстрый поиск
Не знаю, насколько это актуально сейчас - убрал "фичу", понажимал AltTab / AltF9 многократно, поиск не появился.http://faqs.org.ru/softw/shells/far2.htm wrote:Q3> Можно ли поиск сделать как в DN,т.е. нажать Alt,а потом набиpать имя файла?
A:
(SF)
Far\Addons\Macros\AltSearch.reg
(PAF)
Если ещё сделать там макрос <.>==<*.>, то получится поиск очень похожий на
that in DN.
Неприятность: из-за козлинских windows в far приходит alt-alone при
переключении задач по alt+tab/esc.
В результате, вернувшись, ты застукаешь FAR за incsearch.
Это не вредно - любая стрелка снимает, но если захочешь написать команду,
НАДО будет звонить через Esc, это неприятно.
Евгений говорил, что, возможно, поборет это под '95, но не под NT.
(SF)
Появился плагин "KillAlt" by SK, можно попробовать его...
(RP)
Пpоблемy можно частично pешить, если в pедактоpе макpосов "yбpать" левый
Альт. То есть, быстpый поиск бyдет только по пpавомy. А по левомy - только
одновpеменно с бyквой. Но зато пpи пеpеключении по Alt+Tab не появляется
вышеyказанный поиск... :)
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Надо нажимать быстро.
И лучше повесить на Alt что-то типа mf.beep(), или far.Show(), для чистоты эксперимента.
- zg
- zero-gravity
- Posts: 6038
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Быстрый поиск
что значит быстрое? сколько пытался — не воспроизводится.John Doe wrote:При быстром переключении между приложениями по AltTab он почему-то срабатывает.
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Быстрым движением, не удерживая долго Alt.
Но видимо зависит от ОС: проблема у меня на Windows XP.
А проверил на 8.1 — не воспроизводится.
Но видимо зависит от ОС: проблема у меня на Windows XP.
А проверил на 8.1 — не воспроизводится.
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Однако не может быть, что проблема нерешаема.
Можно предоставить подходящее макросвойство для использования в condition?
Или каким-либо образом извещать о потере/получении фокуса окном фара (как предлагается в связанном тикете).
Покритикуйте что-ли...
Можно предоставить подходящее макросвойство для использования в condition?
Или каким-либо образом извещать о потере/получении фокуса окном фара (как предлагается в связанном тикете).
Покритикуйте что-ли...
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Code: Select all
drkns 22.01.2015 23:13:47 +0200 - build 4254
...
3. Не закрываем quick search при потере фокуса, если OC новее, чем XP/2k3.
Проблема в том, что костыль не выполняет свою функцию.
Он почему-то заточен на Быстрый поиск, а проблема ведь значительно шире: "ложно" срабатывает любой макрос на
Alt
.Т.е. непонятно зачем костылить Быстрый поиск, ведь макрос может в реальности выводить диалог (или вообще выполнять неинтерактивные действия).
Самое простое решение - это при потере фокуса ничего не закрывать, а посылать специальную макроклавишу, которую макрос обработает по собственному усмотрению.
Это возможно?
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Быстрый поиск
А никак, у меня XP нет.
Быстрый поиск по одиночному Alt - это привычный и востребованный аудиторией паттерн, а "любой макрос на Alt" - это какая-то фантасмагория, не делайте так.Он почему-то заточен на Быстрый поиск, а проблема ведь значительно шире: "ложно" срабатывает любой макрос на Alt
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Быстрый поиск
Ну, во-первых, быстрый поиск есть только на файловых панелях, а в любом другом контексте одиночный Alt можно задействовать для чего-то другого. И во-вторых, какие-то другие макросы частенько назначены на RAlt, для которого, подозреваю, ситуация с переключением окон такая же, как для LAlt.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Вероятно для XP и нет идеального решения, поэтому обсуждаем улучшение костылей.
Ок, не любой.
Но есть как минимум 2 разных плагина/скрипта с усовершенствованным поиском, и их хочется иметь на том же Alt.
Плюс как намекнул HaRT, в редакторе Alt очень подходит к функции инкрементального поиска, и т.п.
Какие по существу возражения против того, чтобы заменить "безусловное закрытие быстрого поиска" посылкой макроклавиши?
Аудитории хуже ведь не станет.
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Хочу продемонстрировать возможно решение с использованием ProcessConsoleInputW.
Текущая версия LuaMacro пока не обрабатывает ProcessConsoleInputW (на мантисе пожелание есть), поэтому прилагаю слегка версию (x86).
Напомню суть проблемы:
Вместо того, чтобы просто гасить быстрый поиск можно дать макросу доступ к фокусным событиям, например:
Тут при поступлении фокусного события обработчик пытается выполнить макрос с именем "GOTFOCUS" или "LOSTFOCUS", что значительно гибче.
- Attachments
-
- consoleinput.7z
- (25.13 KiB) Downloaded 157 times
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстрый поиск
Только что нашёл способ получше, позволяющий вообще не запускать макрос, в случае когда Alt приходит ошибочно (при нажатии AltTab).
Преимущество перед прочими вариантами: если быстрый поиск был открыт до переключения по AltTab, то он и остаётся открытым.
Code: Select all
local F = far.Flags
local LostFocus
Event { description="watch for focus";
group="ConsoleInput";
action=function(Rec)
if Rec.EventType==F.FOCUS_EVENT then
LostFocus = not Rec.SetFocus
return 1
end
end;
}
local function skipAltTab()
LostFocus = false
mf.waitkey(1)
return not LostFocus
end
Macro {
area="Shell"; key="Alt"; description="Use Alt for search by name (activate)";
condition=skipAltTab;
action = function()
Keys('Alt<')
end;
}
Macro {
area="Search"; key="Alt"; description="Use Alt for search by name (deactivate)";
condition=skipAltTab;
action = function()
Keys('Esc')
end;
}