Назначать макросы на Win

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 11098
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 68 times

Назначать макросы на Win

Post by John Doe » Sun 03 Jul, 2016 21:14

Не хватает возможности назначать макросы на клавиши Win|RWin (особенно в сочетаниях с модификаторами CAS).
Очевидно что фар распознаёт эти нажатия: lua:=mf.waitkey(), а раз так, то вероятно несложно разрешить и назначать на них макросы.

Или есть какие-то подводные камни?

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

Разрешить макросы на Win

Post by Shmuel » Sun 03 Jul, 2016 21:22

Да вроде такая возможность есть, и даже работает. С модификаторами. А вот без модификаторов макрос срабатывает, но ключ и системой обрабатывается, что уже нежелательно.

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

Разрешить макросы на Win

Post by John Doe » Sun 03 Jul, 2016 21:30

Shmuel wrote: и даже работает
Я правильно понимаю, что вот это должно работать:

Code: Select all

Macro{
  area="Common";
  key="CtrlWin";
  action=function() far.Message"CtrlWin" end;
}
Потому что у меня не работает.
Shmuel wrote: без модификаторов макрос срабатывает, но ключ и системой обрабатывается, что уже нежелательно.
В общем случае нежелательно, но для моих целей это значения не имеет (а мне надо и Win в чистом виде).

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

Разрешить макросы на Win

Post by Shmuel » Sun 03 Jul, 2016 21:33

John Doe wrote: Потому что у меня не работает
Надо указывать CtrlLWin.

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

Разрешить макросы на Win

Post by John Doe » Sun 03 Jul, 2016 21:50

Действительно, спасибо!

User avatar
sToLp
Posts: 698
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

Назначать макросы на Win

Post by sToLp » Mon 04 Jul, 2016 05:52

Уважаемые John Doe и Shmuel!

Но ведь эдак Win используется как рядовая клавиша, а она явно напрашивается на роль клавиши-модификатора. Памятуя, например, нередко употребимое в системе WinR и др.

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

Назначать макросы на Win

Post by Shmuel » Mon 04 Jul, 2016 06:30

sToLp wrote: Но ведь эдак Win используется как рядовая клавиша, а она явно напрашивается на роль клавиши-модификатора.
Да, модификатором было бы лучше, т.к. сразу бы добавилась целая куча доступных сочетаний.

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

Назначать макросы на Win

Post by John Doe » Mon 04 Jul, 2016 08:30

sToLp wrote: она явно напрашивается на роль клавиши-модификатора
(продолжение в теме viewtopic.php?f=15&t=10366)

Update
Та же техника позволяет различать правый и левый Shift

Code: Select all

local function Down(key) 
  local vk = type(key)=="number" and key or far.NameToInputRecord(key).VirtualKeyCode
  return function() return win.GetKeyState(vk) end
end

local LSHIFT  = 0x000000a0
local RSHIFT  = 0x000000a1

Macro { description="CtrlLShiftA";
  area="Common"; key="CtrlShiftA";
  condition=Down(LSHIFT);
  action=function()
    far.Message"LShift"
  end
}

Macro { description="CtrlRShiftA";
  area="Common"; key="CtrlShiftA";
  condition=Down(RSHIFT);
  action=function()
    far.Message"RShift"
  end
}

Macro {
  area="Common"; key="Z";
  condition=Down"LWin";
  action=function()
    far.Message"Win+Z"
  end
}

Post Reply

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