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

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

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

Post by Maximus5 » Fri 11 Jun, 2010 23:51

как-то непонятно активация макросов работает...
Например, если макрос висит на BS - то по ShiftBS/AltBS/CtrlBS он активироваться не будет.
Макрос повешенный на 'p' - будет активироваться не только по 'p', но и по ShiftP (AltP и CtrlP не активируют).
А вот макрос повешенный на Alt всплывает и по CtrlAlt, ShiftAlt (Alt отпускается при удерживаемом Ctrl или Shift).

User avatar
Kerberos464
Posts: 1238
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 17 times
Been thanked: 1 time

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

Post by Kerberos464 » Sat 12 Jun, 2010 00:25

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: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Sat 12 Jun, 2010 01:28

эээ, я же не о регистре говорил. Есть кнопка, на которой нарисованы символы (P З). На нее назначен макрос.
Вопрос в том, должен ли этот макрос активироваться при удерживании кнопки-модификатора (неважно Shift это Alt или Ctrl).

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

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

Post by John Doe » Sat 12 Jun, 2010 09:30

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

Code: Select all

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

В случае вызова макроса лучше бы различать нажатие с Shift'ом, но боюсь, что это проблематично.
Во всяком случае такой вывод я сделал из этого обсуждения. (При включённом NumLock не различаются комбинации с цифровой клавиатуры: Shift-Num1 и т.д.)

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Sat 12 Jun, 2010 10:43

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

Остается вопрос почему активируется макрос на Alt, при удерживаемом Ctrl. И наоборот.

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

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

Post by John Doe » Sat 12 Jun, 2010 10:53

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

Code: Select all

macro:post $MMode 1 $While(%Key!="Esc") %Key=waitkey(); CtrlY $Text %Key $End waitkey(500) CtrlY
Вопрос в другом: можно ли сделать иначе (и нужно ли)?

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Sat 12 Jun, 2010 10:57

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

PS. Для ясности. Я не агитирую за возможность назначать макрос на CtrlAlt. Просто считаю, что при нажатом модификаторе (другом, например Ctrl) макрос на Alt (и т.п) всплывать не должен.

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

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

Post by John Doe » Sat 12 Jun, 2010 11:07

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

Code: Select all

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

В этом легко убедиться с помощью макроса предложенного сообщением выше.
Кстати, и отдельностоящие -локи тоже не считаются нажатиями: NumLock нет, а CtrlNumLock есть.

User avatar
SUSim
Posts: 1472
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

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

Post by SUSim » Sat 12 Jun, 2010 12:40

Наверно и Клики мыши с модификаторами из той же серии?
viewtopic.php?f=9&t=5456&p=64166#p64166
SimSU ··· ·· -- ··· ··-

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

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

Post by John Doe » Wed 29 Oct, 2014 10:48

Другой вопрос: требуется назначить макросы на одиночное нажатие CtrlAlt.
Однако сейчас такая комбинация не определяется: вместо этого нажатие "распознаётся" как одиночный Ctrl или Alt.
Выйти из положения конечно можно, проверив в условии макроса состояние нужных модификаторов.
Но подумалось, не баг ли это?

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Wed 29 Oct, 2014 11:15

John Doe wrote:Другой вопрос: требуется назначить макросы на одиночное нажатие CtrlAlt.
Однако сейчас такая комбинация не определяется: вместо этого нажатие "распознаётся" как одиночный Ctrl или Alt.
Выйти из положения конечно можно, проверив в условии макроса состояние нужных модификаторов.
Но подумалось, не баг ли это?
Если и баг, то этот баг есть во всех версиях Фара (1.x, 2.x, 3.x).

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

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

Post by John Doe » Wed 29 Oct, 2014 11:32

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

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

Вопрос в том, правильно ли это будет?
Мне кажется, что да.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Wed 29 Oct, 2014 11:35

Ну, где мантис, вы знаете.

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

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

Post by John Doe » Wed 29 Oct, 2014 13:34

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

А здесь пишу на случай если у кого-то иное мнение.
Например когда-то HaRT писал, что предпочёл бы чтобы комбинации AppsRWin и RWinApps считались разными (в зависимости от того, какая клавиша отпущена первой).

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Wed 29 Oct, 2014 15:11

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

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 29 Oct, 2014 15:55

Maximus5 wrote: При быстрых нажатиях эти "отпущенные" клавиши будут постоянно меняться... А потом кто-то будет ругаться что не тот макрос срабатывает.
Вариантов не так много, т.ч. когда без разницы, несложно назначить все.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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