DN_CONTROLINPUT

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 14:24

Latest post of the previous page:

4355 не щупал, но если я правильно понимаю, то этот пример будет возвращать nil.

Если какой-то плагин ожидает нажатия Ctrl (и использует при этом FarInputRecordToName), то он не дождётся.
Это гипотетический плагин, и реальных претензий к 4355 у меня нет (свои макросы и плагины как-то приспособлю в любом случае ).

P.S.
Хотя ситуация сейчас не очень правильная, ведь в ProcessEditorInputW постоянно приходят сообщения об отпускании модификаторов, даже если модификатор не одиночный, а в сочетаниях.
Например нажатие/отпускание CtrlA тоже приведёт к приходу сообщения, которое будет преобразовано в "Ctrl". Не очень логично.

Имхо, FarInputRecordToName стоит обрабатывать и нажатия и отпускания, но отпускания можно именовать иначе, типа AltRelease.
(А как это передавать в DN_CONTROLINPUT не нарушая совместимости - воспрос открытый)

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

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 14:35

John Doe wrote:Это гипотетический плагин, и реальных претензий к 4355 у меня нет (свои макросы и плагины как-то приспособлю в любом случае ).
зачем обсуждать гипотетические плагины? что касается ваших макросов и плагинов. вот вы упоминаете выше некоторый немодальный инкрементальный поиск. это вот это имеется ввиду?
John Doe wrote:Хотя ситуация сейчас не очень правильная, ведь в ProcessEditorInputW постоянно приходят сообщения об отпускании модификаторов, даже если модификатор не одиночный, а в сочетаниях.
Например нажатие/отпускание CtrlA тоже приведёт к приходу сообщения, которое будет преобразовано в "Ctrl". Не очень логично.

Имхо, FarInputRecordToName стоит обрабатывать и нажатия и отпускания, но отпускания можно именовать иначе, типа AltRelease.
FarInputRecordToName можно вызвать с любым input_record, а не только с последним, пришедшим в консоль.

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

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 15:00

zg wrote: вот вы упоминаете выше некоторый немодальный инкрементальный поиск. это вот это имеется ввиду?
Переделать это на ProcessEditorInputW я собираюсь, но пока обсуждать рано.
Из реальных знаю LEAP, но не пробовал, поэтому тоже не обсуждаю.
zg wrote: FarInputRecordToName можно вызвать с любым input_record, а не только с последним, пришедшим в консоль.
Естественно.
Сомнения у меня в другом.
Одиночное нажатие Ctrl будет выглядеть так: nil Ctrl (нормально, хотя CtrlRelease может быть лучше)
Нажатие/отпускание сочетания CtrlA: nil CtrlA nil Ctrl (это уже не кажется логичным)

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

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 15:05

John Doe wrote:Нажатие/отпускание сочетания CtrlA: nil CtrlA nil Ctrl (это уже не кажется логичным)
ещё раз: FarInputRecordToName можно вызвать с любым input_record, а не только с последним, пришедшим в консоль.

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

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 15:14

zg wrote: FarInputRecordToName можно вызвать с любым input_record, а не только с последним, пришедшим в консоль.
И какие выводы я должен из этого сделать?

Лично мне было бы удобнее, если бы функция FarInputRecordToName различала нажатия модификаторов (и вреда я от этого пока не вижу), в противном случае для своих целей я вынужден колхозить самостоятельно (тоже не проблема, приспособлюсь).

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

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 15:22

John Doe wrote:И какие выводы я должен из этого сделать?
есть две последовательности:
1. Ctrl:press A:press A:release Ctrl:release.
2. Ctrl:press Ctrl:release.
правильно ли я понимаю, что вы хотите, чтобы в первом случае FarInputRecordToName(Ctrl:release) возвращал nil, а во втором "Ctrl"?

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

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 15:36

zg wrote: правильно ли я понимаю, что вы хотите, чтобы в первом случае FarInputRecordToName(Ctrl:release) возвращал nil, а во втором "Ctrl"?
О таком я не думал, это вообще проблематично, если только фар не будет добавлять в InputRecord какой-то дополнительный флаг.

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

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 15:38

тогда я не понимаю вообще, чего вы хотите.

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

DN_CONTROLINPUT

Post by John Doe » Fri 24 Apr, 2015 17:51

Хочу логичного поведения.
a) Раньше было просто: распознаются нажатия. Просто, потому и понятно.

б) Если распознавать не тупо нажатия, а "интеллектуально" значимые FarNames (как вы предположили в предыдущем сообщении), то это тоже будет понятно.

в) Если распознавать и нажатия, и отпускания (как я предлагал выше), то и это понятно.

г) А то как сейчас - уже не очень понятно.
zg wrote: тогда я не понимаю вообще, чего вы хотите.
Хочу б) или в)
Если же останется г), то необходимо описать особенности в Энциклопедии, например тут: http://api.farmanager.com/ru/fsf/farinp ... oname.html

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

DN_CONTROLINPUT

Post by John Doe » Tue 11 Aug, 2015 21:19

При нажатии CtrlBreak в DN_CONTROLINPUT приходит пустая запись с EventType~40000 (значения меняются).

Что бы это значило?

P.S.
Если вернуть 1, то диалог не закроется.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

DN_CONTROLINPUT

Post by Shmuel » Wed 12 Aug, 2015 11:15

John Doe wrote: приходит пустая запись с EventType~40000 (значения меняются).
У меня наблюдался диапазон примерно от 15000 до 65000.
Похоже на неинициализированную переменную. Может выйти боком, если она примет значение из набора (1,2,4,8,16).

Post Reply

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

Who is online

Users browsing this forum: No registered users and 1 guest