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

Место, где разработчики плагинов могут поделиться своим опытом.
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

Latest post of the previous page:

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

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

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 15:24

2useven10 wrote:Source of the post Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
И точно...

Нашёл ошибку в своём эксперименте:
John Doe wrote:Source of the post 4242: в покое постоянно приходят "пустые" записи (EventType==1)
4303: в покое постоянно приходят "пустые" записи (EventType==0)


Оказывается в последних билдах ничего не менялось.
Просто при постоянном вызове actl_synchro вместо KEY_IDLE приходят те пустые записи с EventType==0 (очевидно это и есть KEY_NONE)

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 » Mon 16 Mar, 2015 15:57

Code: Select all

zg 15.03.2015 03:02:46 +0200 - build 4305

1. в ProcessEditorInput не посылаются псевдоклавиши KEY_IDLE и KEY_NONE.

Замечу, что они всё ещё посылаются в ProcessConsoleInputW

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 » Wed 18 Mar, 2015 09:02

После этого исправления в ProcessEditorInputW перестали приходить сообщения об отпускании клавиш.

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 » Wed 18 Mar, 2015 14:38

4313.

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 » Wed 18 Mar, 2015 15:04

Может быть отпускания стоит посылать и в DN_CONTROLINPUT?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Wed 27 Apr, 2016 17:52

Через год заметил, что KEY_IDLE не стало. Не часто нужно, очевидно. Но иногда было полезно. В частности полезно было то, что оно не вызывалось, когда редактор неактивен.
2useven10 wrote:Source of the post Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
А как добиться чтобы это не вызывалось, когда редактор не активен?
Last edited by HaRT on Wed 27 Apr, 2016 18:22, edited 1 time in total.
Reason: Добавлен источник цитаты

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Wed 27 Apr, 2016 18:39

Кроме того, far.Timer для плагинов не годится. То есть, чтобы заменить KEY_IDLE, надо организовать в плагине свой таймер и отслеживать активность редактора в обработчике syncro. Конечно, это реализуемо. Но было гораздо проще, хоть и не очень красиво, не событием, как в диалогах и панелях, а через псевдо клавишу. Может, EE_IDLE стоило бы иметь вместо KEY_IDLE?

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

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

Postby zg » Wed 27 Apr, 2016 18:58

NightRoman wrote:То есть, чтобы заменить KEY_IDLE, надо организовать в плагине свой таймер и отслеживать активность редактора в обработчике syncro.
и в чём проблема?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Wed 27 Apr, 2016 19:00

zg wrote:
NightRoman wrote:То есть, чтобы заменить KEY_IDLE, надо организовать в плагине свой таймер и отслеживать активность редактора в обработчике syncro.
и в чём проблема?
Делать надо, это неудобно. А в диалогах и панелях этого делать не надо, Фар позаботился, это удобно.

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

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

Postby zg » Wed 27 Apr, 2016 21:41

NightRoman wrote:Делать надо, это неудобно. А в диалогах и панелях этого делать не надо, Фар позаботился, это удобно.
там выше по треду есть пример, про то как оно удобно в диалогах и панелях. просто в диалогах и панелях оно документировано было и для совместимости пришлось оставить, но пользоваться этим тоже не особо рекомендуется, потому что гарантий, что оно приходить будет, никаких нет.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Thu 28 Apr, 2016 06:34

В панелях и диалогах IDLE у меня активно используется, и польза от этого большая. Та же самая польза и в редакторе, только нужно реже в редакторе. Но использование-то было, теперь не работает.

Писать свой таймер муторно. Кроме упомянутых проверок на текущую область надо еще обеспечить, что обработчик не вызывался, если он уже работает или уже послан в async (обработка может занимать время, скажем, показ диалога об ошибке, а таймер продолжает стрелять события, с IDLE из Фара об этом можно не беспокоится). Да и вклиниваться может в работу пользователя, с этим тоже надо еще думать, как быть.

То есть это окончательно, и на EE_IDLE надеятся не стоит?

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

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

Postby zg » Thu 28 Apr, 2016 07:45

нет. не стоит.


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

Who is online

Users browsing this forum: No registered users and 1 guest