ProcessConsoleInput

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: ProcessConsoleInputW

Post by Skirda »

Latest post of the previous page:

Yegor wrote:
Skirda wrote:Цикл опроса прекращается, если плагин вернул 0 (или 1? или... - нужно уточнять)
Я так понимаю, что если плагин нажатие обработал, то сам Фар ее тоже уже не обрабатывает, так?
Как вариант. Кроме того, заканчивается засылка месага плагинам. Обсуждаемо.
Yegor wrote:Для простоты - обернуть вокруг GetInputRecord. В будущем никто не помешает поменять.
Тогда пропадает peek.
Yegor wrote:
Skirda wrote:2. что должна возвращать функция? Достаточно 0 и 1 или нужны какие-то дополнительные указания
Пусть будет int, для начала 0 и 1, опять же потом посмотрим.
Там int и так. Мы тут проектируем кусок АПИ, посему лучше сейчас по максимуму уточнить, иначе потом ждать очередного слома :D
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 »

Думаю, в такой реализации Peek будет бесполезным, на мой взгляд.

Returns:
0 - продолжаем бегать по плагинам
1 - плагин польностью обработал событие (бегать по плагинам не надо, Фар тоже событие не обрабатывает)

2? - плагин обработал событие, но не хочет его отдавать другим, кроме Фара (Фар обрабатывает событие как обычно).
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
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 »

А какие "непонятки", с тем чтобы убрать 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: 6016
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: 6016
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) Мичурин
Post Reply

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