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

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

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

Postby John Doe » Sun 03 Jul, 2016 21:14

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

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

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

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

Postby Shmuel » Sun 03 Jul, 2016 21:22

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

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

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

Postby John Doe » Sun 03 Jul, 2016 21:30

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

Code: Select all

Macro{
  area="Common";
  key="CtrlWin";
  action=function() far.Message"CtrlWin" end;
}

Потому что у меня не работает.

Shmuel wrote:Source of the post без модификаторов макрос срабатывает, но ключ и системой обрабатывается, что уже нежелательно.
В общем случае нежелательно, но для моих целей это значения не имеет (а мне надо и Win в чистом виде).

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

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

Postby Shmuel » Sun 03 Jul, 2016 21:33

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

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

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

Postby John Doe » Sun 03 Jul, 2016 21:50

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

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

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

Postby sToLp » Mon 04 Jul, 2016 05:52

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

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

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

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

Postby Shmuel » Mon 04 Jul, 2016 06:30

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

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

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

Postby John Doe » Mon 04 Jul, 2016 08:30

sToLp wrote:Source of the post она явно напрашивается на роль клавиши-модификатора

(продолжение в теме Win, Apps, CapsLock [,...] в качестве модификаторов)

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
}


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

Who is online

Users browsing this forum: No registered users and 2 guests