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

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

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

Post by John Doe »

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

Или есть какие-то подводные камни?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

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:

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

Post by John Doe »

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

Code: Select all

Macro{
  area="Common";
  key="CtrlWin";
  action=function() far.Message"CtrlWin" end;
}
Потому что у меня не работает.
Shmuel wrote: без модификаторов макрос срабатывает, но ключ и системой обрабатывается, что уже нежелательно.
В общем случае нежелательно, но для моих целей это значения не имеет (а мне надо и Win в чистом виде).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: Потому что у меня не работает
Надо указывать CtrlLWin.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Действительно, спасибо!
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

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

Но ведь эдак Win используется как рядовая клавиша, а она явно напрашивается на роль клавиши-модификатора. Памятуя, например, нередко употребимое в системе WinR и др.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

sToLp wrote: Но ведь эдак Win используется как рядовая клавиша, а она явно напрашивается на роль клавиши-модификатора.
Да, модификатором было бы лучше, т.к. сразу бы добавилась целая куча доступных сочетаний.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

sToLp wrote: она явно напрашивается на роль клавиши-модификатора
(продолжение в теме http://forum.farmanager.com/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 “Нужна помощь”