KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)

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

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by zg »

Latest post of the previous page:

Skirda wrote:...ладно. На чем доступном можно проверить? (комбайны с .Net не предлагать ;-))
в любом плагине с ProcessPanelInputW ставишь лог в начале. 1 — подозреваю KEY_IDLE :)
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by Skirda »

я тоже это подозреваю.
Но я бы поставил на KEY_NONE :-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by zg »

Skirda wrote:я тоже это подозреваю.
Но я бы поставил на KEY_NONE :-)
а чего ему сыпаться при бездействии?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by Skirda »

А ХЗ.
Будет прилетать FOCUS_EVENT на всякие внутренние KEY_*
Хотя, возможно, нужно MENU_EVENT - все равно бестолковое событие
Last edited by Skirda on Wed 11 Jan, 2012 18:18, edited 1 time in total.
Reason: про MENU_EVENT
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by NightRoman »

а чего ему сыпаться при бездействии?
Не-не, это не бездействие. А сыплется "постоянно", потому что из дебаггера все это я смотрел. Я вот что нашел в старых комментах:

Code: Select all

#define INTERNAL_KEY_BASE_2 0x00030000
KEY_NONE=INTERNAL_KEY_BASE_2+1,
KEY_KILLFOCUS=INTERNAL_KEY_BASE_2+6,
KEY_GOTFOCUS
Как раз +1, +6 и +7. Так что вот это что такое, вероятно.

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

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by Skirda »

6 и 7 теперь будут FOCUS_EVENT с FALSE и TRUE.
а 1 - это будет MENU_EVENT с 0
чем не официально? :-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,

Post by zg »

NightRoman wrote:Не-не, это не бездействие.
я смотрел в своём плагине. открытый фар, ничего не делаю, единички падают.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

KEY_IDLE

Post by John Doe »

Сравнил поведение ProcessEditorInputW со стабильной сборкой, и обнаружил странное:
4242: в покое постоянно приходят "пустые" записи (EventType==1)
4303: в покое постоянно приходят "пустые" записи (EventType==0)

(не знаю на кой чёрт они вообще приходят)

Update: http://forum.farmanager.com/viewtopic.p ... 74#p128674
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

John Doe wrote:(не знаю на кой чёрт они вообще приходят)
KEY_IDLE.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

zg wrote:KEY_IDLE
Предполагается что плагины будут это использовать?
User avatar
ctapmex
Posts: 1240
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Глюки и баги, появившиеся в «ночных сборках»

Post by ctapmex »

они и используют.
это легальный способ получить управление, чтобы что-нибудь сделать . колорер на этих сообщениях разбирает текст как бы в фоне
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

В таком случае эти сообщения необходимо документировать.

И это колорер никак не смущает?
John Doe wrote:Сравнил поведение ProcessEditorInputW со стабильной сборкой, и обнаружил странное:
4242: в покое постоянно приходят "пустые" записи (EventType==1)
4303: в покое постоянно приходят "пустые" записи (EventType==0)
Мне сдаётся колорер как раз перестал работать в фоне на последних билдах.

Update: http://bugs.farmanager.com/view.php?id=2972
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

KEY_IDLE

Post by John Doe »

P.S.
Нашёл старое обсуждение: http://forum.farmanager.com/viewtopic.p ... t=KEY_IDLE
Если KEY_IDLE востребовано, то может стоит выделить отдельный EventType?
User avatar
ctapmex
Posts: 1240
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

KEY_IDLE

Post by ctapmex »

да, скорее всего сломался колорер

Code: Select all

int FarEditor::editorInput(const INPUT_RECORD &Rec)
{
  if (Rec.EventType == KEY_EVENT && Rec.Event.KeyEvent.wVirtualKeyCode == 0){
  .....
  }
  else
    if (Rec.EventType == KEY_EVENT){
      idleCount = 0;
    };

  return 0;
}
ранее KEY_IDLE анализировались как KeyEvent.wVirtualKeyCode == 0.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

KEY_IDLE

Post by 2useven10 »

Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
В просмотре, например, пришлось вставить костыль, который генерит KEY_IDLE из KEY_NONE.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

KEY_IDLE

Post by zg »

John Doe wrote:Если KEY_IDLE востребовано, то может стоит выделить отдельный EventType?
не нужен. есть actl_synchro, его достаточно. KEY_IDLE будет удалено в ближайшее время.
2useven10 wrote:Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
во времена w2k любая анимированная иконка в трее генерила нулевые перемещения мыши в текущем окне. что тоже убивало KEY_IDLE. как дела с этой фичей сейчас обстоят — не в курсе, но как пример ущербности KEY_IDLE — думаю подойдёт.
В просмотре, например, пришлось вставить костыль, который генерит KEY_IDLE из KEY_NONE.
в просмотре правильным решением было бы что-то вроде события no_user_input. но костыли — это конечно лучше.
Post Reply

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