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

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

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

Postby zg » Wed 11 Jan, 2012 17:14

Latest post of the previous page:

Skirda wrote:...ладно. На чем доступном можно проверить? (комбайны с .Net не предлагать ;-))
в любом плагине с ProcessPanelInputW ставишь лог в начале. 1 — подозреваю KEY_IDLE :)

User avatar
Skirda
Posts: 3473
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

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

Postby Skirda » Wed 11 Jan, 2012 17:54

я тоже это подозреваю.
Но я бы поставил на KEY_NONE :-)
We are the Borg. You will be assimilated.
So Say We All!

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

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

Postby zg » Wed 11 Jan, 2012 18:14

Skirda wrote:я тоже это подозреваю.
Но я бы поставил на KEY_NONE :-)
а чего ему сыпаться при бездействии?

User avatar
Skirda
Posts: 3473
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

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

Postby Skirda » Wed 11 Jan, 2012 18:17

А ХЗ.
Будет прилетать 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: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Wed 11 Jan, 2012 18:33

а чего ему сыпаться при бездействии?

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

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: 3473
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

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

Postby Skirda » Wed 11 Jan, 2012 18:46

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: 5187
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 40 times
Contact:

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

Postby zg » Wed 11 Jan, 2012 18:47

NightRoman wrote:Не-не, это не бездействие.
я смотрел в своём плагине. открытый фар, ничего не делаю, единички падают.

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

KEY_IDLE

Postby John Doe » Thu 12 Mar, 2015 15:13

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

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

Update: John Doe @ KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)

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

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

Postby zg » Thu 12 Mar, 2015 20:45

John Doe wrote:(не знаю на кой чёрт они вообще приходят)
KEY_IDLE.

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

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

Postby John Doe » Fri 13 Mar, 2015 08:00

zg wrote:Source of the postKEY_IDLE
Предполагается что плагины будут это использовать?

User avatar
ctapmex
Posts: 990
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 2 times
Contact:

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

Postby ctapmex » Fri 13 Mar, 2015 09:11

они и используют.
это легальный способ получить управление, чтобы что-нибудь сделать . колорер на этих сообщениях разбирает текст как бы в фоне

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

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

Postby John Doe » Fri 13 Mar, 2015 09:19

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

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

Update: http://bugs.farmanager.com/view.php?id=2972

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

KEY_IDLE

Postby John Doe » Fri 13 Mar, 2015 10:10

P.S.
Нашёл старое обсуждение: KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Если KEY_IDLE востребовано, то может стоит выделить отдельный EventType?

User avatar
ctapmex
Posts: 990
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 2 times
Contact:

KEY_IDLE

Postby ctapmex » Fri 13 Mar, 2015 11:22

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

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: 2835
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 72 times

KEY_IDLE

Postby 2useven10 » Fri 13 Mar, 2015 11:31

Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
В просмотре, например, пришлось вставить костыль, который генерит KEY_IDLE из KEY_NONE.

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

KEY_IDLE

Postby zg » Fri 13 Mar, 2015 12:45

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. но костыли — это конечно лучше.

2useven10
Posts: 2835
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 72 times

KEY_IDLE

Postby 2useven10 » Fri 13 Mar, 2015 13:46

zg wrote:Source of the post KEY_IDLE будет удалено в ближайшее время.
... правильным решением было бы что-то вроде события no_user_input.

Как чёрта называть вопрос не самый важный.
А пока вода в стакане успокоится, да - лучше костыль.


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

Who is online

Users browsing this forum: No registered users and 1 guest