sToLp Цитата: Jon_Dow
Поскольку сервер форума Фара на неопределённое время недоступен, информацию касательно испытания мною усовершенствованной версии CtrlAlt.lua поместил туда.
Не к тому пользователю обращаетесь)
Описанные вами проблемы выглядят странно. У меня всё чётко работает.
На всякий случай вот чуть более актуальная версия скрипта:
[more]
Код: local F = far.Flags
local mods = {[0x11]="Ctrl",[0x12]="Alt",[0x10]="Shift"}
local A,rA,C,rC,S = F.LEFT_ALT_PRESSED,F.RIGHT_ALT_PRESSED,F.LEFT_CTRL_PRESSED,F.RIGHT_CTRL_PRESSED,F.SHIFT_PRESSED
local mask = bor(A,rA,C,rC,S)
local keys = {
[C+A] ="CtrlAlt",
[C+rA] ="CtrlRAlt",
[rC+A] ="RCtrlAlt",
[rC+rA]="RCtrlRAlt",
[A+rA] ="LRAlt",
[C+rC] ="LRCtrl",
[C+S] ="CtrlShift",
[rC+S] ="RCtrlShift",
[A+S] ="AltShift",
[rA+S] ="RAltShift",
[C+A+S] ="CtrlAltShift",
[C+rA+S] ="CtrlRAltShift",
[rC+A+S] ="RCtrlAltShift",
[rC+rA+S]="RCtrlRAltShift",
[A+rA+S] ="LRAltShift",
[C+rC+S] ="LRCtrlShift",
}
local wait
Event{
group="ConsoleInput";
description="CtrlAlt";
id="2EEE56E1-228B-4087-B583-6E0612E6DF0B";
action=function(r)
if r.EventType~=F.KEY_EVENT then
return
elseif mods[r.VirtualKeyCode] then
if r.KeyDown then
wait = band(mask,r.ControlKeyState)
if not keys[wait] then wait = false end --to filter single mods
elseif wait then
if far.MacroGetState()==F.MACROSTATE_NOMACRO then
mf.postmacro(mf.eval,keys[wait],2)
end
wait = false
end
else
wait = false
end
end;
}
Macro { description="CtrlAlt sample";
area="Common"; key="CtrlAlt LRCtrl LRAlt CtrlShift AltShift CtrlAltShift LRCtrlShift LRAltShift";
priority=40;
id="D1A40884-785D-4996-A71B-4FB05296A571";
action=function()
far.Message(mf.akey(1,1),Area.Current)
end;
}