View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001677 | Wishes | Plugins API | public | 2011-01-18 20:37 | 2013-02-03 00:33 |
Reporter | max rusov | Assigned To | vskirdin | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 2.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001677: При запуске макроса через MCMD_POSTMACROSTRING задавать код "запускающей" клавиши | ||||
Description | В макросах, запускаемых программно по команде MCMD_POSTMACROSTRING функции AKey()/$AKey не имеют смысла, они, похоже, возвращают клавишу запустившую предыдущую клавиатурную макропоследовательность. Предлагается добавить возможность при вызове сообщить FAR'у код клавиши, как будто запустившей этот макрос. Этот код можно передать через структуру ActlKeyMacro, задействовав одно из Reserved полей. Это было бы полезно для плагина MacroLib, чтобы не приходилось модифицировать макросы, использующие AKey()/$AKey | ||||
Tags | No tags attached. | ||||
Build | 2208 | ||||
|
build 1800 - тестим |
|
Все работает, спасибо. Поддержал в MacroLib'е |
|
Обнаружилась проблема. Код передаваемой в MCMD_POSTMACROSTRING клавиши перестает корректно обрабатываться после срабатывания любого макроса из реестра. Подробные шаги для воспроизведения ошибки на примере плагина MacroLib: http://forum.farmanager.com/viewtopic.php?p=76870#p76870 |
|
"на примере плагина MacroLib" - ну устраивает (это твой плагин и кто скажет, что это не он глючит). Давай что-то "более дикое и необузданное" :-) Лучше, если повторить можно вообще без плагинов. |
|
Как ты себе это представляешь? Это же API для плагинов. Не думаю, что глючит MacroLib. Разве сложно поставить точку останова, и убедиться, что в качестве параметра передан один код а AKey возвращает другой? |
|
Я не в претензиях к этому плагину, но, * во-первых, он не входит в стандартную поставку, а потому не показатель * во-вторых, если есть трабла (и, как заявлено, в Far`е), то необходимо минимизировать количество инструментария, чтобы выявить ее (читай - воспроизводится у всех, а не только у тех, у кого этот плагин стоит) - идеал: без плагинов вообще ;-) |
|
Валентин, я не понимаю в чем вопрос. Речь идет о новой фиче в плагинном API. Есть _только_один_ плагин, который этой фичей пользуется. На нем ошибка воспроизводится, стабильно. Что ты предлагаешь? Написать _другой_ плагин, чтобы получить ту-же ошибку? Или что? |
|
build 1804 |
|
Макс, обрати внимание на 0001736 С той правкой решенность этого тикета не отвалилась? |
|
тест (на основе 1807 original) В macro.cpp кусок для "case MCODE_OP_AKEY" и "case MCODE_F_AKEY:" заменяем на case MCODE_OP_AKEY: // $AKey { DWORD aKey=KEY_NONE; if (!(MR->Flags&MFLAGS_POSTFROMPLUGIN)) { INPUT_RECORD *inRec=&Work.cRec; if (!inRec->EventType) inRec->EventType = KEY_EVENT; if(inRec->EventType == KEY_EVENT || inRec->EventType == FARMACRO_KEY_EVENT) aKey=CalcKeyCode(inRec,TRUE,nullptr); } else aKey=MR->Key; return aKey; } case MCODE_F_AKEY: // V=akey(Mode[,Type]) { int tmpType=(int)VMStack.Pop().getInteger(); int tmpMode=(int)VMStack.Pop().getInteger(); DWORD aKey=MR->Key; if (!tmpType) { if (!(MR->Flags&MFLAGS_POSTFROMPLUGIN)) { INPUT_RECORD *inRec=&Work.cRec; if (!inRec->EventType) inRec->EventType = KEY_EVENT; if(inRec->EventType == KEY_EVENT || inRec->EventType == FARMACRO_KEY_EVENT) aKey=CalcKeyCode(inRec,TRUE,nullptr); } else if (!aKey) aKey=KEY_NONE; } if (!tmpMode) tmpVar=(__int64)aKey; else { KeyToText(aKey,value); tmpVar=value.CPtr(); tmpVar.toString(); } VMStack.Push(tmpVar); goto begin; } В macro.hpp добавляем MFLAGS_POSTFROMPLUGIN =0x20000000, // последовательность пришла от АПИ перед MFLAGS_NEEDSAVEMACRO В plugapi.cpp вместо return Macro.PostNewMacro(KeyMacro->Param.PlainText.SequenceText,KeyMacro->Param.PlainText.Flags<<8,KeyMacro->Param.PlainText.AKey); ставим return Macro.PostNewMacro(KeyMacro->Param.PlainText.SequenceText,(KeyMacro->Param.PlainText.Flags|MFLAGS_POSTFROMPLUGIN)<<8,KeyMacro->Param.PlainText.AKey); |
|
build 1946 |
|
Валь, у тебя масса топиков не закрытых по макросам. |
|
А че я могу поделать? По правилам я при исправлении должен выставить "нужен отклик", податель - "отработан" и только потом уже я "закрыт". |
|
Я не могу откликнуться, потому что у меня нет Far3. Если кто-нибудь все протестировал и убедился в работоспособности - пусть напишет. |
|
Не могу понять - то ли я что-то не так делаю, то ли какая-то ошибка в Far 3. Код запускающей клавиши нормально возвращается функцией AKey(), однако команда $AKey не срабатывает. Попробуйте, например, такой макрос для MacroLib'а: macro Descr="Test" Key="F1 AltF1 F2 AltF2 F12 AltF12" {{ MsgBox("Key", "Code: " + AKey(0) + ", Name: " + AKey(1) ); $AKey // Так - не работает... // Eval(AKey(1)); // А так - работает. }} MacroLib для Far3 можно взять в шапке темы http://forum.farmanager.com/viewtopic.php?f=5&t=5994 |
|
просто так макрос правильно отрабатывает - возможно в плагине начудил... (или в апи трабла). Хрень какая то - под дебагером плагин не реагирует на клавиши (не отлавливает)... |
|
> Хрень какая то - под дебагером плагин не реагирует на клавиши (не отлавливает)... А ты это учитываешь: Используется ProcessConsoleInput (вместо хаков), поэтому Far должен быть собран с ключом MANTIS_0001687. ? |
|
build 2208 |
|
Ну вот - и ложечки нашлись :) Спасибо, вроде все работает. |
|
закрываем? |
|
Да. Если будут ошибки - заведем новый тикет. |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-01-18 20:37 | max rusov | New Issue | |
2011-01-25 11:36 | vskirdin | Assigned To | => vskirdin |
2011-01-25 11:36 | vskirdin | Status | new => assigned |
2011-01-25 13:58 | vskirdin | Note Added: 0006241 | |
2011-01-25 13:58 | vskirdin | Status | assigned => feedback |
2011-01-27 07:47 | max rusov | Note Added: 0006251 | |
2011-01-27 07:47 | max rusov | Status | feedback => assigned |
2011-01-27 07:47 | max rusov | Status | assigned => resolved |
2011-01-27 10:55 | vskirdin | Build | => 1800 |
2011-01-27 10:55 | vskirdin | Status | resolved => closed |
2011-01-27 10:55 | vskirdin | Resolution | open => fixed |
2011-01-27 10:55 | vskirdin | Fixed in Version | => 2.0 |
2011-01-29 19:26 | max rusov | Note Added: 0006270 | |
2011-01-29 19:26 | max rusov | Status | closed => feedback |
2011-01-29 19:26 | max rusov | Resolution | fixed => reopened |
2011-01-30 06:38 | vskirdin | Note Added: 0006271 | |
2011-01-30 19:36 | max rusov | Note Added: 0006288 | |
2011-01-30 19:36 | max rusov | Status | feedback => assigned |
2011-01-31 10:21 | vskirdin | Note Added: 0006289 | |
2011-01-31 11:09 | max rusov | Note Added: 0006290 | |
2011-01-31 11:10 | max rusov | Note Edited: 0006290 | |
2011-01-31 11:33 | max rusov | Note Edited: 0006290 | |
2011-01-31 12:56 | vskirdin | Note Added: 0006296 | |
2011-01-31 12:56 | vskirdin | Status | assigned => feedback |
2011-03-29 12:47 | vskirdin | Note Added: 0006625 | |
2011-04-05 10:17 | vskirdin | Note Added: 0006671 | |
2011-04-06 11:01 | vskirdin | Note Added: 0006716 | |
2011-09-10 09:05 | samlyukov | Note Added: 0007647 | |
2011-09-12 06:51 | vskirdin | Note Added: 0007654 | |
2011-09-12 07:31 | max rusov | Note Added: 0007655 | |
2011-09-12 07:31 | max rusov | Status | feedback => assigned |
2011-09-26 23:32 | max rusov | Note Added: 0007752 | |
2011-09-30 13:21 | vskirdin | Note Added: 0007784 | |
2011-09-30 13:28 | vskirdin | Note Edited: 0007784 | |
2011-09-30 20:34 | max rusov | Note Added: 0007792 | |
2011-10-01 07:21 | vskirdin | Note Added: 0007796 | |
2011-10-01 07:21 | vskirdin | Status | assigned => feedback |
2011-10-01 20:18 | max rusov | Note Added: 0007801 | |
2011-10-01 20:18 | max rusov | Status | feedback => assigned |
2011-10-03 07:37 | vskirdin | Note Added: 0007805 | |
2011-10-03 07:37 | vskirdin | Status | assigned => feedback |
2011-10-03 08:43 | max rusov | Note Added: 0007808 | |
2011-10-03 08:43 | max rusov | Status | feedback => assigned |
2011-10-03 08:56 | vskirdin | Build | 1800 => 2208 |
2011-10-03 08:56 | vskirdin | Status | assigned => closed |
2011-10-03 08:56 | vskirdin | Resolution | reopened => fixed |
2011-10-03 08:56 | vskirdin | Fixed in Version | 2.0 => 3.0 |
2013-02-03 00:33 | alexy | Severity | minor => feature |