К распознаванию сочетания нескольких модификаторов

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

К распознаванию сочетания нескольких модификаторов

Post by sToLp »

Результаты build 4746 весьма порадовали.

В их ключе и в развитие John Doe сделал, на мой взгляд, очередной полезный скрипт. Однако при испытании скрипта обнаружилось в т.ч. следующее.

RCtrlShift распознаётся как RCtrlShift. И LRCtrlShift тоже распознаётся как RCtrlShift (нажимаю оба Контрола и Левый или Правый Шифт, затем отпускаю Шифт).

RAltShift распознаётся как RAltShift. И LRAltShift тоже распознаётся как RAltShift (нажимаю оба Альта и Левый или Правый Шифт, затем отпускаю Шифт).

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

К распознаванию сочетания нескольких модификаторов

Post by John Doe »

sToLp wrote: И LRAltShift тоже распознаётся как RAltShift
Это совершенно нормально пока сам фар не распознаёт LCtrl+RCtrl и LAlt+RAlt.
Будет ли распознавать узнаем тут http://bugs.farmanager.com/view.php?id=2857#c14685

А пока вот вам warkaround: добавить к макросу на RAltShift condition проверяющий состояние LAlt.
Как-то так:

Code: Select all

condition=function() return band(Mouse.LastCtrlState,far.Flags.LEFT_ALT_PRESSED)==0 end;
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

К распознаванию сочетания нескольких модификаторов

Post by sToLp »

Вполне поддерживаю просьбу по возможности сделать распознаваемыми сочетания LCtrl+RCtrl и LAlt+RAlt.

И, к слову сказать, полагаю их обозначения LRCtrl и LRAlt понятными и удобными.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

К распознаванию сочетания нескольких модификаторов

Post by sToLp »

John Doe wrote:А пока вот вам warkaround: добавить к макросу на RAltShift condition проверяющий состояние LAlt.
Как-то так:

Code: Select all

condition=function() return band(Mouse.LastCtrlState,far.Flags.LEFT_ALT_PRESSED)==0 end;
Спасибо.
По аналогии сделал кондишен и к RCtrlShift. И сразу стало видно, что LRCtrlShift и LRAltShift сейчас попросту не распознаются.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

К распознаванию сочетания нескольких модификаторов

Post by sToLp »

Повесил макрос на оба контрола и шифт, прописав ключ как key="LCtrlRCtrlShift";

При отпускании шифта макрос не срабатывает. А при отпускании любого из контролов выдаёт сообщение об области, из которой был запущен, и о том как распознан ключ:
Disks
CtrlShift
и с последующим отпусканием другого контрола и шифта выдаёт ещё одно сообщение:
Dialog
CtrlShift
Идентичная ситуация с двумя альтами и шифтом.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

К распознаванию сочетания нескольких модификаторов

Post by John Doe »

sToLp wrote: LCtrlRCtrlShift
Нет такого в фаре. Считайте что вы написали LCtrlShift
sToLp wrote: При отпускании шифта макрос не срабатывает.
Есть такое.
Но пока в фаре не заявлена поддержка LCtrl+RCtrl и LAlt+RAlt жаловаться не на что.

Для интереса сравните и убедитесь что сейчас RCtrlLCtrlShift то же самое что RCtrlShift, и при этом с при отпускании шифта макрос срабатывает.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

К распознаванию сочетания нескольких модификаторов

Post by sToLp »

John Doe wrote:
sToLp wrote: LCtrlRCtrlShift
Нет такого в фаре
Из записи в changelog`е: "Распознавать нажатия сочетаний нескольких модификаторов" я этого не вижу, там не перечислены конкретные сочетания. Вот я и пробую по-разному.
Для интереса сравните и убедитесь что сейчас RCtrlLCtrlShift то же самое что RCtrlShift, и при этом с при отпускании шифта макрос срабатывает.
Не совсем то же самое. RCtrlShift срабатывает при отпускании и шифта, и котрола. А RCtrlLCtrlShift — только при отпускании шифта, но не контролов.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

К распознаванию сочетания нескольких модификаторов

Post by John Doe »

sToLp wrote: там не перечислены конкретные сочетания. Вот я и пробую по-разному.
Пробуйте lua:=mf.waitkey()
Всё остальное это несущественные особенности реализации.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

К распознаванию сочетания нескольких модификаторов

Post by sToLp »

John Doe wrote:Пробуйте lua:=mf.waitkey()
Всё остальное это несущественные особенности реализации
Хорошо. Спасибо. Учту.

Но ведь любопытно, что LCtrlRCtrlShift срабатывает только при отпускании любого из котролов, но не шифта, а RCtrlLCtrlShift наоборот — только при отпускании шифта, но не контролов. И при этом оба ключа хоть и срабатывают не так, как ожидается, но и не указываются Фаром как нелегитимные. И, кстати, в данном случае запись ключа LRCtrlShift, имхо, выглядит более естественно.
Post Reply

Return to “Нужна помощь”