ProcessConsoleInput

Место, где разработчики плагинов могут поделиться своим опытом.
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: ProcessConsoleInputW

Post by Yegor »

Latest post of the previous page:

А какие "непонятки", с тем чтобы убрать const у INPUT_RECORD *Rec в структуре и разрешить ее модифицировать?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 »

Есть предложение в структуру добавить:
1. Макрооблость и тип текущего окна. Смысл - плагину можеет быть нужно обрабатывать только нажатия клавиш только в панелях (или только в диалогах). Их конечно можно получить дернув апи, но зачем лишние вызовы, если и так все заранее известно. Почему два параметра - заранее не ясно, что там получится со списком автодополнения...
2. HANDLE hPanel. Если активны панели. Иначе - NULL, например. Плагину может быть нужно обрабатывать только свою панель.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 »

А на счет того откуда вызывать... GetInputRecord кажется подходящим местом, если эту функцию поправить. Сейчас там много кода заточено на то, что ReadInput вернет в точности то же, что вернул PeekInput
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: ProcessConsoleInputW

Post by Skirda »

Maximus5 wrote:1. Макрооблость и тип текущего окна.
WINDOWINFO_TYPE?
Maximus5 wrote:2. HANDLE hPanel.
ок.
Maximus5 wrote:GetInputRecord кажется подходящим местом, если эту функцию поправить.
...видимо после обработки основного кода GetInputRecord. не?
We are the Borg. You will be assimilated.
So Say We All!
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: ProcessConsoleInputW

Post by Yegor »

Skirda wrote:...видимо после обработки основного кода GetInputRecord. не?
А как же ж тогда вот это:
1 - плагин польностью обработал событие (бегать по плагинам не надо, Фар тоже событие не обрабатывает)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 »

WINDOWINFO_TYPE?
Тогда нет возможности понять, что активно, например, автодополнение, или QSearch. Я и предлагаю, помимо WINDOWINFO_TYPE добавить FARMACROAREA.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: ProcessConsoleInputW

Post by zg »

Maximus5 wrote:Тогда нет возможности понять, что активно, например, автодополнение, или QSearch. Я и предлагаю, помимо WINDOWINFO_TYPE добавить FARMACROAREA.
как бы логичнее допилить WINDOWINFO_TYPE, нет?
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: ProcessConsoleInputW

Post by Max Rusov »

Зачем? Есть же уже MCMD_GETAREA.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: ProcessConsoleInputW

Post by zg »

Max Rusov wrote:Зачем?
чтобы работало, не?
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: ProcessConsoleInputW

Post by Yegor »

MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 »

Это все же разные вещи. Типа, активное окно (F12 0) - панели, но макрообласть может быть очень разная.

Как втиснуть две разные сущности одновременно в WINDOWINFO_TYPE я слабо представляю.
Разве что WINDOWINFO_TYPE не трогать, а структуру с информацией об окне добавить отсутствующее. Вот только смысл?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: ProcessConsoleInputW

Post by Skirda »

Yegor wrote:MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
MCMD_GETAREA не затычка, это совершенно из другой области.
Ты путаешь макросы и плагины.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: ProcessConsoleInputW

Post by Skirda »

Yegor wrote:А как же ж тогда вот это:
1 - плагин польностью обработал событие (бегать по плагинам не надо, Фар тоже событие не обрабатывает)
А вот здесь уже и не знаю...
Дело в том, что GetInputRecord кроме консольных событий смотрит еще в пару мест - внутренняя очередь + очередь макросов.
Обе эти сущности плагин не сдались, т.к. к плагинам (и консоли) не имеют никакого отношения.
Кроме того, GetInputRecord в основном не делает никаких боевых действий, он просто события консоли берет, превращает в нечто и уже потом готовое варево отдает внутренним компонентам.
Так что здесь можно делать о такой схеме:
1. GetInputRecord
2. плагины
3. после плагинов либо отдаем ФАРу KEY_NONE либо то самое нечто.
We are the Borg. You will be assimilated.
So Say We All!
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: ProcessConsoleInputW

Post by Yegor »

Skirda wrote:
Yegor wrote:MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
MCMD_GETAREA не затычка, это совершенно из другой области.
Ты путаешь макросы и плагины.
Валентин, ты неправильно меня понял, я имею в виду что использовать MCMD_GETAREA, там где нужно теоретически использовать WINDOWINFO - не логично. Например, в Screen Gadgets, я использую MCMD_GETAREA, потому что информации из WINDOWINFO недостаточно.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 »

Хочется странного ) Звать функцию ProcessConsoleInputW не только перед обработкой "кнопки" фаром, но и после того, как фар выполнил свои действия. Например, в PROCESSCONSOLEINPUT_FLAGS добавить флаг PCIF_POSTPROCESS.

Зачем это надо: синхронизация каталогов, двигаем курсор по одной панели, плагин отслеживает текущий элемент на активной панели и пытается выделить одноименный на пассивной панели.
Можно, конечно, постоянно звать Synchro для проверки, но зачем? Было бы красивее выполнять обработку сразу после того, как фар обработал кнопку Down (например).
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: ProcessConsoleInputW

Post by zg »

Maximus5 wrote:Было бы красивее
красотой тут и не пахнет.
Post Reply

Return to “Разработка плагинов”