FARMACRO_KEY_EVENT.

Разработка Far.
Post Reply
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

зачем нужен FARMACRO_KEY_EVENT?
давайте его выкинем.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

Макроклавиши реально отличаются от настоящих: для них не приходят отпускания, есть тонкости с UnicodeChar, и др.
Пока это так, плагину необходима информация FARMACRO_KEY_EVENT.

Кроме того, возможно какой-то плагин и по замыслу не должен обрабатывать макронажатия (например MacroLib).
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

John Doe wrote:Макроклавиши реально отличаются от настоящих: для них не приходят отпускания, есть тонкости с UnicodeChar, и др.
Пока это так, плагину необходима информация FARMACRO_KEY_EVENT.
реальный пример такой необходимости, пожалуйста.
John Doe wrote:Кроме того, возможно какой-то плагин и по замыслу не должен обрабатывать макронажатия (например MacroLib).
пусть не обрабатывает, в чём проблема-то?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

zg wrote: реальный пример такой необходимости, пожалуйста.
Например инкрементальный поиск, который включается нажатием, и выключается отпусканием.
Там же нужно различать раскладку.
zg wrote: пусть не обрабатывает, в чём проблема-то?
В код MacroLib не смотрел, но я для своих целей использую (а точнее игнорирую) именно FARMACRO_KEY_EVENT.
Чем предлагаете заменить?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

John Doe wrote:Например инкрементальный поиск, который включается нажатием, и выключается отпусканием.
Там же нужно различать раскладку.
и в чём проблема?
John Doe wrote:Чем предлагаете заменить?
прежде чем задавать подобные вопросы, неплохо хотя бы бегло ознакомиться с соответствующим разделом энциклопедии.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

Давайте пропустим воспитательную часть, и перейдём сразу к тому моменту, где вы мне дураку поведаете как всё это делают профессионалы.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

Ну раз профессионалы делиться не хотят, то...
zg wrote: и в чём проблема?
1. При получении клавиши Alt плагин начинает инкрементальный поиск. В случае макроклавиши отпускания не последует, а значит следующую последующие нажатия могут быть неверно интерпретированы плагином.
2. При нажатии Alt-символ удобно получать букву прямо из поля UnicodeChar.
А в случае макронажатий значение этого поля уже не будет соответствовать текущей раскладке.
zg wrote: прежде чем задавать подобные вопросы, неплохо хотя бы бегло ознакомиться с соответствующим разделом энциклопедии.
Ознакамливался, и на практике подробно изучал.
И в упор не понимаю, что же вы имеете ввиду.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

1. я не вижу никаких технических проблем, чтобы для макрокнопок приходили и отпускания.
2. и что?
3. MCTL_GETSTATE.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

zg wrote: 2. и что?
Если для макроклавиш исправить и UnicodeChar, то ничего.
zg wrote: MCTL_GETSTATE
Нерационально на каждое событие дёргать в ответ АПИ.
Притом MCTL_GETSTATE решает не ту задачу: например если на экране меню, вызванное из макроса, то MCTL_GETSTATE будет не 0.
Но далее все нажатия в меню делает пользователь, и их вообще-то надо тоже обрабатывать.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

John Doe wrote:например если на экране меню, вызванное из макроса
сабж у нас официально приходит только processeditorinput. какое меню?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

Я вообще-то ProcessConsoleInput, мы же начали с MacroLib.

Но с ProcessEditorInput абсолютно та же история: например если открыть редактор так lua:editor.Editor("c:\\autoexec.bat"), то в ProcessEditorInput по MCTL_GETSTATE всегда будет приходить MACROSTATE_EXECUTING_COMMON.
zg wrote: 1. я не вижу никаких технических проблем, чтобы для макрокнопок приходили и отпускания.
Есть тут один скользкий момент.
Например, есть макрос

Code: Select all

Macro {
  area="Common"; key="CtrlF1";
  action=function()
    Keys"CtrlF2"
  end;
}
Если Keys"CtrlF1" будет генерировать отпускания, то в обработчик придёт лишнее нажатие и лишнее отпускание Ctrl (down down up up), что может поломать логику обработчика.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

John Doe wrote:Я вообще-то ProcessConsoleInput, мы же начали с MacroLib.
ProcessConsoleInput не является частью стабильного апи и может быть выпилено завтра хоть полностью. или сегодня.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

zg wrote:не является частью стабильного апи
Для плагинописателя руководством является Энциклопедия, в которой почему-то об этом ни слова.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

FARMACRO_KEY_EVENT.

Post by zg »

John Doe wrote:Для плагинописателя руководством является Энциклопедия, в которой почему-то об этом ни слова.
есть тема. претензии предъявляйте лично тому, кто нефинальное апи добавил в энциклопедию. здесь это обсуждать не надо.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

FARMACRO_KEY_EVENT.

Post by John Doe »

Code: Select all

zg 21.03.2015 00:32:43 +0200 - build 4321

1. событие FARMACRO_KEY_EVENT удалено.
Получается в ProcessConsoleInput и ProcessEditorInput сейчас нет надёжного способа определить, что событие представляет собой макронажатие.
Вопрос: планируется ли предоставить какой-то другой способ, или эта информация официально считается лишней?
Post Reply

Return to “Development”