Лево-/правосторонние модификаторы в макросах

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

Re: Названия клавиш и InputRecordToName

Post by John Doe » Wed 27 Feb, 2013 14:21

Latest post of the previous page:

Max Rusov wrote:Регэкспы экзотика потому, что в 99% случаев они не нужны. Обычно макрос привязан к одной клавише.
У меня другая статистика.
Возьмём к примеру ваш набор макросов для Console Control

2 макроса с регэкспами
6 макросов без, из них 3 привязаны не "к одной клавише", и их можно привязать к регекспу.

Тогда получится 5 "с" и 3 "без"

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Названия клавиш и InputRecordToName

Post by Max Rusov » Wed 27 Feb, 2013 14:41

Выборка маловата. Вот у меня всего 129 fml макросов, из них 8 c регэкспами. А fml позволял регэкспы уже давно...

И если "не к одной клавише" то это еще не значит, что нужен регэксп. Ими вообще лучше не злоупотреблять, не бесплатно...

Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 1 time

Re: Названия клавиш и InputRecordToName

Post by Acerbic » Sat 20 Apr, 2013 00:02

Недавно сам столкнулся.
Хотел послать в Keys() комбинации типа "ShiftQ", а он их не понимает. Притом с другими модификаторами всё гуд, а с шифтом одним - нини. Можно конечно посылать уже обработанные клавиши, тогда возникают потенциально заморочки с CapsLock и национальными раскладками клавиатур. Вообще кто-нибудь знает как из имени клавиши с модификаторами получить маппинг на юникодный символ в текущей раскладке с учётом капса? Через Win API только, мнится мне.

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

Spring — внедрение Lua в качестве макроязыка

Post by HaRT » Fri 06 May, 2016 13:47

Shmuel wrote:
John Doe wrote:key="/RCtrlRAlt(.+)/";
А что с этим key не в порядке? У меня работает.
Прошу помощи. Пишу простенький тестовый макрос: Macro { area = "Menu MainMenu UserMenu"; key = 'AltW'; code = [[far.Message'OK']] } — работает (например, в меню плагинов). Как только делаю key = '/AltW/'; (хочу позже вставить более развесистую регулярку) — не работает (ничего не происходит). Куда копать?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

RegExp & Lua patterns

Post by Shmuel » Fri 06 May, 2016 14:14

В регулярных выражениях для key не может быть просто Alt, приходит LAlt или RAlt. Таким образом, простейший фикс это /.Alt/ или длиннее - /[LR]Alt/.

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

RegExp & Lua patterns

Post by HaRT » Fri 06 May, 2016 16:18

Shmuel wrote: key не может быть просто Alt, приходит LAlt или RAlt
При этом akey(1) возвращает AltW без L — неинтуитивно, но как быть, ясно.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

RegExp & Lua patterns

Post by Shmuel » Fri 06 May, 2016 16:25

HaRT wrote: При этом akey(1) возвращает AltW без L — неинтуитивно, но как быть, ясно.
Не совсем так. Для правого альта возвращается RAltW.
Это - прежнее (до Lua) поведение, оставленное таковым для сохранения совместимости (или из лени).

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

RegExp & Lua patterns

Post by John Doe » Sun 08 May, 2016 15:12

Shmuel wrote: для сохранения совместимости
Хочу обратить внимание, что в апи плагинов используется именно та нотация, что в akey.
На практике в нескольких скриптах ввиду использования обоих апи приходится переводить одну нотацию в другую, что довольно хлопотно (и вообще источник множества потенциальных ошибок).

Собственно к чему я это: изменить поведение akey можно, но не уверен что стоит. Хотелось бы более общего решения.

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

RegExp & Lua patterns

Post by Smitis » Sun 08 May, 2016 18:01

John Doe wrote:Хотелось бы более общего решения.
Ага, а ещё есть far.Menu вообще со своим обозначением BreakKey.
И far.InputRecordToName, с тем же результатом, что и akey
Разум когда-нибудь победит.

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

Лево-/правосторонние модификаторы в макросах

Post by John Doe » Mon 09 May, 2016 12:32

Smitis wrote: Ага, а ещё есть far.Menu вообще со своим обозначением BreakKey.
Это отдельное неудобство, не столь существенное, да и легче поправимое.

Post Reply

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