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

Здесь обсуждается всё, что касается макросов.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

Latest post of the previous page:

John Doe wrote:Регэкспы экзотика только для того, кто ещё не умеет их использовать
Регэкспы экзотика потому, что в 99% случаев они не нужны. Обычно макрос привязан к одной клавише.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Shmuel wrote:с обоснованием.
У меня уже и пример есть http://forum.farmanager.com/viewtopic.p ... 15#p104752
Надо отправить необработаные клавиши "дальше". Что бы быть точным, надо менять обобщённые модификаторы на левые (в том макросе я не менял).
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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

Тогда получится 5 "с" и 3 "без"
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

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

И если "не к одной клавише" то это еще не значит, что нужен регэксп. Ими вообще лучше не злоупотреблять, не бесплатно...
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

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

Post by Acerbic »

Недавно сам столкнулся.
Хотел послать в Keys() комбинации типа "ShiftQ", а он их не понимает. Притом с другими модификаторами всё гуд, а с шифтом одним - нини. Можно конечно посылать уже обработанные клавиши, тогда возникают потенциально заморочки с CapsLock и национальными раскладками клавиатур. Вообще кто-нибудь знает как из имени клавиши с модификаторами получить маппинг на юникодный символ в текущей раскладке с учётом капса? Через Win API только, мнится мне.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

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: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

RegExp & Lua patterns

Post by Shmuel »

В регулярных выражениях для key не может быть просто Alt, приходит LAlt или RAlt. Таким образом, простейший фикс это /.Alt/ или длиннее - /[LR]Alt/.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

RegExp & Lua patterns

Post by HaRT »

Shmuel wrote: key не может быть просто Alt, приходит LAlt или RAlt
При этом akey(1) возвращает AltW без L — неинтуитивно, но как быть, ясно.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

RegExp & Lua patterns

Post by Shmuel »

HaRT wrote: При этом akey(1) возвращает AltW без L — неинтуитивно, но как быть, ясно.
Не совсем так. Для правого альта возвращается RAltW.
Это - прежнее (до Lua) поведение, оставленное таковым для сохранения совместимости (или из лени).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

RegExp & Lua patterns

Post by John Doe »

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

Собственно к чему я это: изменить поведение akey можно, но не уверен что стоит. Хотелось бы более общего решения.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

RegExp & Lua patterns

Post by Smitis »

John Doe wrote:Хотелось бы более общего решения.
Ага, а ещё есть far.Menu вообще со своим обозначением BreakKey.
И far.InputRecordToName, с тем же результатом, что и akey
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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