Я внес элементарное изменение в каждую из схем заменив Ctrl (17) на Shift (16), которая в интерфейсе рабочего стола Hiasm не используется. Плагины стали работать практически без существенных артефактов. Хотя мелкие огрехи, не влияющие на функционал и не раздражающие, остаются.
![](/img/smilies/icon_smile.gif)
Доработанная схема от Laetar:
Add(hiPlugs,14075188,336,252)
{
Point(Handle)
Point(onInit)
link(onKeyDown,11335860:doCase,[])
}
Add(Case,11335860,406,259)
{
Value=Integer(16)
link(onTrue,3758783:doEvent1,[])
}
Add(FindWindow,16362781,700,245)
{
ClassName="TSDK_Edit"
SkipParam=1
link(onFind,2090689:doCompare,[])
link(ParentHandle,13475985:Handle,[(706,233)(674,233)(674,296)(643,296)])
}
Add(FindWindow,3148445,574,259)
{
ClassName="TPanel"
Caption="[none]"
link(onFind,13475985:doFindChild,[])
link(ParentHandle,14075188:Handle,[(580,243)(458,243)(458,296)(349,296)])
}
Add(FindWindow,13475985,637,252)
{
ClassName="TPanel"
SkipParam=1
link(onFind,16362781:doFindChild,[])
link(ParentHandle,3148445:Handle,[(643,240)(611,240)(611,303)(580,303)])
}
Add(MouseEvent,9155478,896,231)
{
Button=3
Point(doMouseDown)
Point(doMouseUp)
Point(Handle)
}
Add(If_else,2090689,763,245)
{
link(onTrue,4576595:doEvent1,[])
link(Op1,16362781:Handle,[(769,233)(737,233)(737,289)(706,289)])
link(Op2,9155478:Handle,[(776,219)(939,219)(939,275)(916,275)])
}
Add(Case,9487156,574,357)
{
Value=Integer(0)
link(onTrue,4204874:doCompare,[])
}
Add(Timer,2651542,504,301)
{
Interval=50
link(onTimer,8742991:doReadKey,[(548,307)(548,341)(492,341)(492,363)])
}
Add(Hub,3758783,469,266)
{
link(onEvent1,2651542:doTimer,[(493,272)(493,307)])
link(onEvent2,3148445:doFindChild,[(535,279)(535,272)])
}
Add(Keyboard,8742991,504,357)
{
Key=16
link(onReadKey,9487156:doCase,[])
}
Add(Memory,8095986,966,301)
{
Default=Integer(0)
}
Add(Hub,4576595,847,245)
{
link(onEvent1,9155478:doMouseDown,[])
link(onEvent2,7368223:doData,[(878,258)(878,307)])
}
Add(DoData,7368223,896,301)
{
Data=Integer(1)
link(onEventData,8095986:doValue,[])
}
Add(If_else,4204874,651,364)
{
Op2=Integer(1)
link(onTrue,435122:doEvent1,[])
link(Op1,8095986:Value,[(657,348)(972,348)])
}
Add(Hub,435122,756,364)
{
link(onEvent1,9155478:doMouseUp,[(885,370)(885,258)])
link(onEvent2,8095986:doClear,[(941,377)(941,314)])
}
Доработанная схема от 3042:
Add(hiPlugs,14075188,186,45)
{
Point(Handle)
}
Add(FindWindow,16362781,319,94)
{
ClassName="TSDK_Edit"
SkipParam=1
link(ParentHandle,13475985:Handle,[(325,83)(302,83)(302,146)(262,146)])
}
Add(FindWindow,3148445,193,108)
{
ClassName="TPanel"
Caption="[none]"
link(onFind,13475985:doFindChild,[])
link(ParentHandle,14075188:Handle,[])
}
Add(FindWindow,13475985,256,101)
{
ClassName="TPanel"
SkipParam=1
link(onFind,16362781:doFindChild,[])
link(ParentHandle,3148445:Handle,[(262,90)(235,90)(235,119)(235,153)(199,153)])
}
Add(MouseEvent,9861358,277,206)
{
Button=3
Point(Handle)
}
Add(If_else,13224687,312,276)
{
link(onTrue,8748347:a,[])
link(Op1,9861358:Handle,[(318,257)(297,257)])
link(Op2,370911:Var2,[])
}
Add(Timer,11425082,11,262)
{
Interval=50
link(onTimer,3634254:doReadKey,[])
}
Add(Keyboard,7702670,207,269)
{
Key=16
link(onReadKey,6997035:doEvent,[])
}
Add(IndexToChanel,6997035,256,269)
{
link(onEvent2,13224687:doCompare,[])
}
Add(Timer,4987452,137,115)
{
Interval=500
AutoStop=1
link(onTimer,3148445:doFindChild,[])
}
Add(Keyboard,3634254,60,262)
{
Key=1
link(onReadKey,8941491:doData,[])
}
Add(IndexToChanel,4837038,158,262)
{
link(onEvent2,7702670:doReadKey,[])
}
Add(ChangeMon,8941491,109,262)
{
Data=Integer(0)
link(onData,4837038:doEvent,[])
}
Add(InlineCode,8748347,396,276)
{
WorkPoints=#1:a|
DataPoints=#1:h|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|16: h:THI_Event;|0:|42: procedure a(var dt:TData; index:word);|0:|5: end;|0:|14:implementation|0:|24:procedure THiAsmClass.a;|5:begin|49: SendMessage(ToIntegerEvent(h),wm_LButtonUp,0,0);|51: SendMessage(ToIntegerEvent(h),wm_MButtonDown,0,0);|17: //_hi_OnEvent();|4:end;|0:|4:end.|
link(h,370911:Var3,[(402,176)])
}
Add(GetDataEx,370911,319,171)
{
link(Data,16362781:Handle,[])
}
Плагины на основе этих схем работаю по разному, с разными ощущениями пользователя от их использования.
Мне более импонирует и кажется более удобным работа плагина по схеме от 3042.