KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
KEY_NONE, KEY_IDLE, KEY_GOTFOCUS, KEY_KILLFOCUS (ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7)
Не буду заводить новую тему, вопрос у меня вроде связанный с этой. Если тянет на отдельную, просьба модераторам перенести.
Что за загадочные клавиши постоянно приходят в панель наподобие idle:
Key = 0x00030001, 0x00030006, 0x00030007
ControlState = 0
0x00030000 вроде как соответствует Ctrl+Alt, но чего они вообще делают в Key, если ControlState для этого предназначен в ProcessKey? Почему они постояно приходят? Типа idle? Так вроде есть у панелей специальное событие для этого...
Почему интересует. В Фарнет думаю отфильтровать их и не посылать дальше в модули, чтобы модули уже не парились с этими кнопками при отладке или логгировании событий, а их писатели не мучались и не мучали вопросами . Только непонятно: чего я модули лишу при этом, о чем я не знаю?
Что за загадочные клавиши постоянно приходят в панель наподобие idle:
Key = 0x00030001, 0x00030006, 0x00030007
ControlState = 0
0x00030000 вроде как соответствует Ctrl+Alt, но чего они вообще делают в Key, если ControlState для этого предназначен в ProcessKey? Почему они постояно приходят? Типа idle? Так вроде есть у панелей специальное событие для этого...
Почему интересует. В Фарнет думаю отфильтровать их и не посылать дальше в модули, чтобы модули уже не парились с этими кнопками при отладке или логгировании событий, а их писатели не мучались и не мучали вопросами . Только непонятно: чего я модули лишу при этом, о чем я не знаю?
Re: ProcessKey() и KEY_xxxx
Code: Select all
#define INTERNAL_KEY_BASE_2 0x00030000
...
KEY_NONE =INTERNAL_KEY_BASE_2+1,
Code: Select all
KEY_KILLFOCUS =INTERNAL_KEY_BASE_2+6,
KEY_GOTFOCUS =INTERNAL_KEY_BASE_2+7,
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
Skirda
Ага, спасибо, уже полезно и интересно. Но тогда попутный вопрос - они как-то связаны с FE_GOTFOCUS и FE_KILLFOCUS?
Ага, спасибо, уже полезно и интересно. Но тогда попутный вопрос - они как-то связаны с FE_GOTFOCUS и FE_KILLFOCUS?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
А KEY_NONE как то связан с FE_IDLE? Зачем он вообще посылается? Смысл? Если нет смысла, так и напишите в доках - смысла нет, и выдайте себе этим индульгенцию и избавьте от назойливых вопросов
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
Хотя и все равно как сделано, лишь бы как-то работало и было задокументировано, но от критики не могу удержаться: зачем посылать то, что не является Key, а является Event, в ProcessKey() вместо того, чтобы посылать в ProcessEvent()? Может, добавить это в список будущей ломки АПИ?
Re: ProcessKey() и KEY_xxxx
нет. KEY_GOTFOCUS/KEY_KILLFOCUS - это ответные реакции на FOCUS_EVENT (окно Far`а получает или теряет фокус ввода),NightRoman wrote:они как-то связаны с FE_GOTFOCUS и FE_KILLFOCUS?
а FE_ - это внутри Far`а - редактор.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
Хм. Это могло бы быть полезно отдельным событием. Но оно недокументировано. Придется воздержаться.Skirda wrote:нет. KEY_GOTFOCUS/KEY_KILLFOCUS - это ответные реакции на FOCUS_EVENT (окно Far`а получает или теряет фокус ввода),NightRoman wrote:они как-то связаны с FE_GOTFOCUS и FE_KILLFOCUS?
а FE_ - это внутри Far`а - редактор.
ЗЫ: FE_ - это все-таки панели. FileEvent типа, а в редакторе вроде EE_, не помню.
Re: ProcessKey() и KEY_xxxx
Хмм.. я тебе вот что скажу, только ты не обижайсяNightRoman wrote:А KEY_NONE как то связан с FE_IDLE? Зачем он вообще посылается? Смысл? Если нет смысла, так и напишите в доках - смысла нет, и выдайте себе этим индульгенцию и избавьте от назойливых вопросов
None и Idle были изначально. В чем сермяжная правда - ХЗ, как то не задавались вопросом - работает и гуд.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: ProcessKey() и KEY_xxxx
ОНО уже давно не меняется. Задокументируем обязательно.NightRoman wrote:Это могло бы быть полезно отдельным событием. Но оно недокументировано. Придется воздержаться.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
С этим я полностью согласен. Но в писании-то про это нет. Всякий, кто с этими мистическими клавишами будет сталкиваться, будет задаваться вопросами: сначала а не у него ли это глючит, а потом а не в Фаре ли это глючит.как то не задавались вопросом - работает и гуд.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
О, это хорошо. Надо подумать, какая из этого практическая выгода может быть, сразу не придумывается, но чую, что должна быть точно - редко, но метко.Skirda wrote:ОНО уже давно не меняется. Задокументируем обязательно.NightRoman wrote:Это могло бы быть полезно отдельным событием. Но оно недокументировано. Придется воздержаться.
Re: ProcessKey() и KEY_xxxx
нарисуй напоминалку на мантис, в раздел "Энциклопопия"NightRoman wrote:О, это хорошо.Skirda wrote:ОНО уже давно не меняется. Задокументируем обязательно.NightRoman wrote:Это могло бы быть полезно отдельным событием. Но оно недокументировано. Придется воздержаться.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: ProcessKey() и KEY_xxxx
Хорошо:Skirda wrote:нарисуй напоминалку на мантис, в раздел "Энциклопопия"
http://bugs.farmanager.com/view.php?id=1296
Спасибо за объяснения и за полезную инфу. Наведу у себя порядок теперь в этом вопросе, давно собирался.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1, 6, 7
В ProcessPanelInputW приходят KEY_EVENT нажатия с wVirtualKeyCode 1 (вначале), 6, 7 (непрерывно?). Я их игнорирую пока и ничего при этом не теряю вроде.
1) Но что это за события?
2) Если они вдруг шум/мусор, может, Фар их сам, того, отфильтрует? Меньше будет вопросов типа этого.
1) Но что это за события?
2) Если они вдруг шум/мусор, может, Фар их сам, того, отфильтрует? Меньше будет вопросов типа этого.
Re: Фар3: ProcessPanelInputW - что такое wVirtualKeyCode 1,
проверь, как работает keyboard.cpp::TranslateKeyToVK() в части блока "else if (FKey && FKey < WCHAR_MAX)"
есть подозрение, что нужно еще одно условие перед этим блоком, с проверкой FKey на предмет...
...ладно. На чем доступном можно проверить? (комбайны с .Net не предлагать )
есть подозрение, что нужно еще одно условие перед этим блоком, с проверкой FKey на предмет...
...ладно. На чем доступном можно проверить? (комбайны с .Net не предлагать )
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!