ProcessConsoleInput

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

Re: ProcessConsoleInputW

Post by Yegor » Thu 12 May, 2011 12:37

Latest post of the previous page:

А какие "непонятки", с тем чтобы убрать const у INPUT_RECORD *Rec в структуре и разрешить ее модифицировать?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 » Fri 13 May, 2011 11:50

Есть предложение в структуру добавить:
1. Макрооблость и тип текущего окна. Смысл - плагину можеет быть нужно обрабатывать только нажатия клавиш только в панелях (или только в диалогах). Их конечно можно получить дернув апи, но зачем лишние вызовы, если и так все заранее известно. Почему два параметра - заранее не ясно, что там получится со списком автодополнения...
2. HANDLE hPanel. Если активны панели. Иначе - NULL, например. Плагину может быть нужно обрабатывать только свою панель.

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 » Fri 13 May, 2011 12:11

А на счет того откуда вызывать... GetInputRecord кажется подходящим местом, если эту функцию поправить. Сейчас там много кода заточено на то, что ReadInput вернет в точности то же, что вернул PeekInput

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: ProcessConsoleInputW

Post by Skirda » Fri 13 May, 2011 12:50

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: 979
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 4 times
Been thanked: 15 times

Re: ProcessConsoleInputW

Post by Yegor » Fri 13 May, 2011 14:06

Skirda wrote:...видимо после обработки основного кода GetInputRecord. не?
А как же ж тогда вот это:
1 - плагин польностью обработал событие (бегать по плагинам не надо, Фар тоже событие не обрабатывает)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 » Fri 13 May, 2011 14:23

WINDOWINFO_TYPE?
Тогда нет возможности понять, что активно, например, автодополнение, или QSearch. Я и предлагаю, помимо WINDOWINFO_TYPE добавить FARMACROAREA.

User avatar
zg
zero-gravity
Posts: 5549
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 87 times
Contact:

Re: ProcessConsoleInputW

Post by zg » Fri 13 May, 2011 15:22

Maximus5 wrote:Тогда нет возможности понять, что активно, например, автодополнение, или QSearch. Я и предлагаю, помимо WINDOWINFO_TYPE добавить FARMACROAREA.
как бы логичнее допилить WINDOWINFO_TYPE, нет?

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: ProcessConsoleInputW

Post by Max Rusov » Fri 13 May, 2011 16:09

Зачем? Есть же уже MCMD_GETAREA.

User avatar
zg
zero-gravity
Posts: 5549
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 87 times
Contact:

Re: ProcessConsoleInputW

Post by zg » Fri 13 May, 2011 16:20

Max Rusov wrote:Зачем?
чтобы работало, не?

Yegor
Posts: 979
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 4 times
Been thanked: 15 times

Re: ProcessConsoleInputW

Post by Yegor » Fri 13 May, 2011 19:26

MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 » Fri 13 May, 2011 21:02

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

Как втиснуть две разные сущности одновременно в WINDOWINFO_TYPE я слабо представляю.
Разве что WINDOWINFO_TYPE не трогать, а структуру с информацией об окне добавить отсутствующее. Вот только смысл?

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: ProcessConsoleInputW

Post by Skirda » Sat 14 May, 2011 06:08

Yegor wrote:MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
MCMD_GETAREA не затычка, это совершенно из другой области.
Ты путаешь макросы и плагины.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: ProcessConsoleInputW

Post by Skirda » Sat 14 May, 2011 06:18

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: 979
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 4 times
Been thanked: 15 times

Re: ProcessConsoleInputW

Post by Yegor » Sat 14 May, 2011 07:48

Skirda wrote:
Yegor wrote:MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
MCMD_GETAREA не затычка, это совершенно из другой области.
Ты путаешь макросы и плагины.
Валентин, ты неправильно меня понял, я имею в виду что использовать MCMD_GETAREA, там где нужно теоретически использовать WINDOWINFO - не логично. Например, в Screen Gadgets, я использую MCMD_GETAREA, потому что информации из WINDOWINFO недостаточно.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 » Thu 02 Jun, 2011 22:19

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

Зачем это надо: синхронизация каталогов, двигаем курсор по одной панели, плагин отслеживает текущий элемент на активной панели и пытается выделить одноименный на пассивной панели.
Можно, конечно, постоянно звать Synchro для проверки, но зачем? Было бы красивее выполнять обработку сразу после того, как фар обработал кнопку Down (например).

User avatar
zg
zero-gravity
Posts: 5549
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 87 times
Contact:

Re: ProcessConsoleInputW

Post by zg » Thu 02 Jun, 2011 22:44

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

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: ProcessConsoleInputW

Post by Max Rusov » Thu 02 Jun, 2011 22:45

IMHO - дурная мысль. Понятие "выполнил свои действия" - вообще непонятно что значит. Если по кнопке модальный диалог открывается - то в какой момент этот POSTPROCESS вызывать?

Post Reply

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