Page 3 of 3
KEY_IDLE
Posted: Fri 13 Mar, 2015 13:46
by 2useven10
Latest post of the previous page:
zg wrote: KEY_IDLE будет удалено в ближайшее время.
... правильным решением было бы что-то вроде события no_user_input.
Как чёрта называть вопрос не самый важный.
А пока вода в стакане успокоится, да - лучше костыль.
KEY_IDLE
Posted: Fri 13 Mar, 2015 15:24
by John Doe
2useven10 wrote: Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
И точно...
Нашёл ошибку в своём эксперименте:
John Doe wrote: 4242: в покое постоянно приходят "пустые" записи (EventType==1)
4303: в покое постоянно приходят "пустые" записи (EventType==0)
Оказывается в последних билдах ничего не менялось.
Просто при постоянном вызове actl_synchro вместо KEY_IDLE приходят те пустые записи с EventType==0 (очевидно это и есть KEY_NONE)
KEY_IDLE
Posted: Mon 16 Mar, 2015 15:57
by John Doe
Code: Select all
zg 15.03.2015 03:02:46 +0200 - build 4305
1. в ProcessEditorInput не посылаются псевдоклавиши KEY_IDLE и KEY_NONE.
Замечу, что они всё ещё посылаются в ProcessConsoleInputW
KEY_IDLE
Posted: Wed 18 Mar, 2015 09:02
by John Doe
После этого исправления в ProcessEditorInputW перестали приходить сообщения об отпускании клавиш.
KEY_IDLE
Posted: Wed 18 Mar, 2015 14:38
by zg
4313.
KEY_IDLE
Posted: Wed 18 Mar, 2015 15:04
by John Doe
Может быть отпускания стоит посылать и в DN_CONTROLINPUT?
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Wed 27 Apr, 2016 17:52
by NightRoman
Через год заметил, что KEY_IDLE не стало. Не часто нужно, очевидно. Но иногда было полезно. В частности полезно было то, что оно не вызывалось, когда редактор неактивен.
2useven10 wrote: Если KEY_IDLE нужен, он слишком легко выключается (через far.Timer или actl_synchro).
А как добиться чтобы это не вызывалось, когда редактор не активен?
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Wed 27 Apr, 2016 18:39
by NightRoman
Кроме того, far.Timer для плагинов не годится. То есть, чтобы заменить KEY_IDLE, надо организовать в плагине свой таймер и отслеживать активность редактора в обработчике syncro. Конечно, это реализуемо. Но было гораздо проще, хоть и не очень красиво, не событием, как в диалогах и панелях, а через псевдо клавишу. Может, EE_IDLE стоило бы иметь вместо KEY_IDLE?
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Wed 27 Apr, 2016 18:58
by zg
NightRoman wrote:То есть, чтобы заменить KEY_IDLE, надо организовать в плагине свой таймер и отслеживать активность редактора в обработчике syncro.
и в чём проблема?
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Wed 27 Apr, 2016 19:00
by NightRoman
zg wrote:NightRoman wrote:То есть, чтобы заменить KEY_IDLE, надо организовать в плагине свой таймер и отслеживать активность редактора в обработчике syncro.
и в чём проблема?
Делать надо, это неудобно. А в диалогах и панелях этого делать не надо, Фар позаботился, это удобно.
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Wed 27 Apr, 2016 21:41
by zg
NightRoman wrote:Делать надо, это неудобно. А в диалогах и панелях этого делать не надо, Фар позаботился, это удобно.
там выше по треду есть пример, про то как оно удобно в диалогах и панелях. просто в диалогах и панелях оно документировано было и для совместимости пришлось оставить, но пользоваться этим тоже не особо рекомендуется, потому что гарантий, что оно приходить будет, никаких нет.
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Thu 28 Apr, 2016 06:34
by NightRoman
В панелях и диалогах IDLE у меня активно используется, и польза от этого большая. Та же самая польза и в редакторе, только нужно реже в редакторе. Но использование-то было, теперь не работает.
Писать свой таймер муторно. Кроме упомянутых проверок на текущую область надо еще обеспечить, что обработчик не вызывался, если он уже работает или уже послан в async (обработка может занимать время, скажем, показ диалога об ошибке, а таймер продолжает стрелять события, с IDLE из Фара об этом можно не беспокоится). Да и вклиниваться может в работу пользователя, с этим тоже надо еще думать, как быть.
То есть это окончательно, и на EE_IDLE надеятся не стоит?
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Posted: Thu 28 Apr, 2016 07:45
by zg
нет. не стоит.