Latest post of the previous page:
Code: Select all
return mf.waitkey(1)~=""
Code: Select all
Macro {
area="Common"; key="Shift";
condition=function()
local key = mf.waitkey(1)
if key~="" then
mf.postmacro(far.Show("Shift+"..key))
return 100
end
end;
action=function() end;
}
Code: Select all
local key
Macro { description="Shift-<NumPad> heuristics";
area="Common"; key="Shift CtrlShift CtrlAltShift";
id="2520EA89-3211-4D00-B552-AB0D000442DB";
condition=function()
key = mf.waitkey(1)
return key~=""
end;
action=function()
local akey = mf.akey(1,1)
local numkey = key:sub(akey:len()-4,-1)
if -2==mf.eval(akey..numkey,2) then
if -2==mf.eval(key,2) then
Keys(key)
end
end
end;
}
--[[
Macro {
area="Common"; key="ShiftNum7";
action=function()
far.Show("ShiftNum7")
end;
}
Macro {
area="Common"; key="Num1";
action=function()
far.Show("Num1")
end;
}
Macro {
area="Common"; key="ShiftNumDel";
action=function()
far.Show("ShiftNumDel")
end;
}
Macro {
area="Common"; key="NumDel";
action=function()
far.Show("NumDel")
end;
}
--]]
Code: Select all
local NumLock,get = 0,-1
local busy
Macro { description="Shift-<NumPad> heuristics";
area="Common"; key="/Num[\\dD].*/";
id="2EB425EA-751B-431F-8DD8-25E82F3F2C28";
condition=function()
return not busy and 0~=band(1,mf.flock(NumLock,get)) and 100
end;
action=function()
local key = mf.akey(1,1)
if -2==mf.eval("Shift"..key,2) then
busy = true
if -2==mf.eval(key,2) then
Keys(key)
end
busy = false
end
end;
}
Я далёк от понимания, чего вы пытаетесь добиться.sToLp wrote: ↑Mon 25 Sep, 2017 03:16При этом мне бы желательно по возможности более-менее понятным для меня способом решить вопрос о том, как включить показ шорткатов, состоящих из нампадовских цифр с модификаторами, в составе которых модификатор Shift, при включённом NumLock, в макросы-справки о задействовании ключей нативными командами Far.
Всё дело в том, что сейчас на поставленный в теме вопрос мы смотрим с немного разных ракурсов.
Всё так, но объясните, зачем дополнять его Shift'ом?
Исключительно в целях полноценного составления Справки о ключах, которые задействованы нативными командами Far`а, а также о "свободных" ключах и о тех, которые для Far`а недоступны.
Code: Select all
local NumLock,get = 0,-1
local key = mf.waitkey()
if 0~=band(1,mf.flock(NumLock,get)) and key:match"^Num[%dD]" then
key = "Shift"..key
end
Но, прежде всего, для себя. А касательно полноты разжёвывания для пользователя там ещё посмотрим. Возможно, что получится и кратко.
Code: Select all
local NumLock,get = 0,0; mf.flock(NumLock,get) -- погасить NumLock
У меня распознаются. Ваш макрос не пробовал, просто запустил waitkey.
Нажатия и у меня не приходят.
Механизм простой: при включенном NumLock первым приходит отдельно модификатор, а потом уже нажатая клавиша.sToLp wrote: ↑Thu 28 Sep, 2017 19:37Предполагаю, что, скорее всего, тем же упомянутым обстоятельством разделения подачи в макрос соответствующих нажатий и отпусканий составляющих шорткаты клавиш вызвана и необходимость включать в поле key тестовых макросов порожние модификаторы. Без присутствия которых в этом поле данные макросы не работают. Но толком объяснить себе механизм такой необходимости не умею.
Code: Select all
Macro {
area="Shell"; key="/(Shift)|(ShiftNum[0-9])|(ShiftClear)/";
action=function()
local key2 = mf.waitkey(1)
local key = a=="" and akey(1,0) or "Shift"..key2.." (NumLock)"
far.Show(key)
end;
}
И вот этого теперь я объяснить не могу.
1) фантастика! по запуску waitkey из комстроки у меня тоже распознаются;