Странности активации макросов при удерживании Ctrl/Alt/Shift

Здесь обсуждается всё, что касается макросов.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Странности активации макросов при удерживании Ctrl/Alt/Shift

Post by Maximus5 »

как-то непонятно активация макросов работает...
Например, если макрос висит на BS - то по ShiftBS/AltBS/CtrlBS он активироваться не будет.
Макрос повешенный на 'p' - будет активироваться не только по 'p', но и по ShiftP (AltP и CtrlP не активируют).
А вот макрос повешенный на Alt всплывает и по CtrlAlt, ShiftAlt (Alt отпускается при удерживаемом Ctrl или Shift).
User avatar
Kerberos464
Posts: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by Kerberos464 »

Maximus5 wrote:Макрос повешенный на 'p' - будет активироваться не только по 'p', но и по ShiftP (AltP и CtrlP не активируют).
и даже больше - макрос, назначенный на "p", срабатывает при нажатии на клавиатурную кнопку с русской буквой "з".
но, имхо, тут никакого бага и даже странности нету, ведь когда вы назначаете горячую кнопку для макроса, регистр и раскладка не имеет значения, для упомянутой клавиши там всегда высвечивается большая английская буква "P", независимо от того, нажмёте ли вы "p", Shift+P, русскую букву "з" или Shift+"русскую букву 3".
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by Maximus5 »

эээ, я же не о регистре говорил. Есть кнопка, на которой нарисованы символы (P З). На нее назначен макрос.
Вопрос в том, должен ли этот макрос активироваться при удерживании кнопки-модификатора (неважно Shift это Alt или Ctrl).
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by John Doe »

Вопрос неоднозначный:

Code: Select all

Shift-p = P
Shift-P = p
Alt-Shift-p = AltShiftP
Alt-Shift-P = AltShiftP
Выходит, модификатор Shift имеет особое значение, в случае если клавиша имеет верхний регистр.
И это обычно оправданно.

В случае вызова макроса лучше бы различать нажатие с Shift'ом, но боюсь, что это проблематично.
Во всяком случае такой вывод я сделал из этого обсуждения. (При включённом NumLock не различаются комбинации с цифровой клавиатуры: Shift-Num1 и т.д.)
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by Maximus5 »

Допустим, Shift действительно имеет особое значение.

Остается вопрос почему активируется макрос на Alt, при удерживаемом Ctrl. И наоборот.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by John Doe »

Почему активируется - это понятно: потому что так уж обрабатываются фаром клавиши модификаторов.
Их комбинации между собой вообще не различаются:

Code: Select all

macro:post $MMode 1 $While(%Key!="Esc") %Key=waitkey(); CtrlY $Text %Key $End waitkey(500) CtrlY
Вопрос в другом: можно ли сделать иначе (и нужно ли)?
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by Maximus5 »

А почему не нужно? Для комбинаций Space & CtrlSpace - макросы разные. Почему тогда Alt и CtrlAlt - одинаковые?

PS. Для ясности. Я не агитирую за возможность назначать макрос на CtrlAlt. Просто считаю, что при нажатом модификаторе (другом, например Ctrl) макрос на Alt (и т.п) всплывать не должен.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by John Doe »

Maximus5 wrote:Почему тогда Alt и CtrlAlt - одинаковые?
Это не совсем так.
Просто сейчас для фара вообще не существует "голых" нажатий комбинаций модификаторов.

Code: Select all

CtrlAlt
ShiftAlt
CtrlShift
CtrlShiftAlt
Насколько это правильно судить не берусь, но факты таковы, что нажатии комбинации само событие возникает при отпускании одной из клавиш, она же и считается нажатой.

В этом легко убедиться с помощью макроса предложенного сообщением выше.
Кстати, и отдельностоящие -локи тоже не считаются нажатиями: NumLock нет, а CtrlNumLock есть.
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Странности активации макросов при удерживании Ctrl/Alt/S

Post by SUSim »

Наверно и Клики мыши с модификаторами из той же серии?
http://forum.farmanager.com/viewtopic.p ... 166#p64166
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Другой вопрос: требуется назначить макросы на одиночное нажатие CtrlAlt.
Однако сейчас такая комбинация не определяется: вместо этого нажатие "распознаётся" как одиночный Ctrl или Alt.
Выйти из положения конечно можно, проверив в условии макроса состояние нужных модификаторов.
Но подумалось, не баг ли это?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

LuaMacro — Lua как язык макросов

Post by Shmuel »

John Doe wrote:Другой вопрос: требуется назначить макросы на одиночное нажатие CtrlAlt.
Однако сейчас такая комбинация не определяется: вместо этого нажатие "распознаётся" как одиночный Ctrl или Alt.
Выйти из положения конечно можно, проверив в условии макроса состояние нужных модификаторов.
Но подумалось, не баг ли это?
Если и баг, то этот баг есть во всех версиях Фара (1.x, 2.x, 3.x).
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Для модификатора, нажатого без "основной" клавиши, определяется не момент нажатия, а момент отпускания.

А для комбинаций модификаторов похоже определяется тот из них, что был нажат последним (а отпущен первым).
Подозреваю, что можно изменить это поведение, и определять всю комбинацию (и даже комбинации типа LAlt+RAlt).

Вопрос в том, правильно ли это будет?
Мне кажется, что да.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

LuaMacro — Lua как язык макросов

Post by Shmuel »

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

LuaMacro — Lua как язык макросов

Post by John Doe »

http://bugs.farmanager.com/view.php?id=2857

А здесь пишу на случай если у кого-то иное мнение.
Например когда-то HaRT писал, что предпочёл бы чтобы комбинации AppsRWin и RWinApps считались разными (в зависимости от того, какая клавиша отпущена первой).
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

LuaMacro — Lua как язык макросов

Post by Maximus5 »

При быстрых нажатиях эти "отпущенные" клавиши будут постоянно меняться... А потом кто-то будет ругаться что не тот макрос срабатывает.
Post Reply

Return to “Обсуждение макросов”