[Date Prev][Date Next][Subject Prev][Subject Next][ Date Index][ Subject Index]

Re: Dual-action (Windows-XyWrite) HoMe and End keys



Reply to note from "Martin J. Osborne" 
Sun, 23 Jul 2006 17:12:50 -0400

Martin:

> I've come across one incompatibility: pressing Home in Robert's
> Directory Manager (dr) causes an error. I guess that dr must
> be looking for a plain Home.

Yes, that's a glitch that often arises when you attempt to execute a
complex key assignment, such as these dual-function keys, while a
program is running (in your case, DR). It's a limitation of the XPL
Read Character () and Read Key () operators. The workaround
is to reduce the complex key assignment to a simple one, i.e., a
single function call. One way to do that here would be to break the
two operations, LB-HM and LE-BS, into two frames, and locate them in
the .DLG file instead of U2. Using DLG enables us to call each
routine with single function in the form $x, where x is any letter
A-Z or number 0-9.

Try this: DECODE the following two frames, $H and $I. DeFine them
as a single block and issue ADD2DG to install them in the
DLG file (note that the command is add2DG, not add2U2).

XPLeNCODE v2.0
b-gin [UNTITLED]
{{;5$H}} Dual-action (Windows-XyWrite) HoMe and End keys [CLD
 rev.7/23/06][cr|lf]{002}{<}SX01,{<}VA$KC{>}{>}[LB_]{<}IF{<}V
A$WS{>}>0{>}{<}SX02,{<}RC{>}{>}{<}IF{<}VA$KC{>}=={<}PV01{>}{>
}{<}SV02,[HM_]{>}{<}EI{>}{<}PV02{>}{<}EI{>}{002}[cr|lf][cr|lf
]{{;5$I}} Dual-action (Windows-XyWrite) HoMe and End keys [CL
D rev.7/23/06][cr|lf]{002}{<}SX01,{<}VA$KC{>}{>}[LE_]{<}IF{<}
VA$WS{>}>0{>}{<}SX02,{<}RC{>}{>}{<}IF{<}VA$KC{>}=={<}PV01{>}{
{062}}{<}SV02,[BS_]{>}{<}EI{>}{<}PV02{>}{<}EI{>}{002}[cr|lf][cr|l
f]
-nd
XPLeNCODE

Change the KBD file assignments as follows:

;;71=NOJM(,2,.,L,B,-,H,M,)
71=$H
and/or
;;92=NOJM(,2,.,L,B,-,H,M,)
92=$H

and

;;79=NOJM(,2,.,L,E,-,B,S,)
79=$I
and/or
;;96=NOJM(,2,.,L,E,-,B,S,)
96=$I

SAve and reLOAD the KBD file. There should no longer be any error
while running DR.

P.S. You can locate frames $H and $I in U2, provided that you add
one of the following two redirection frames near the top of the DLG
file (just under the ;DG; file identifier):

XPLeNCODE v2.0
b-gin [UNTITLED]
{{;5$H,$I}} Redirect source code for funcs $H and $I to U2 [C
LD][cr|lf]{002}{<}SX99,{<}VA$FR{>}{>}[JM_]2.{<}PV99{>}[Q2_]{0
02}[cr|lf][cr|lf]or, more generally,[cr|lf][cr|lf]{{;5$?}} Re
direct source code for all DG funcs $x to U2 [CLD][cr|lf]{002
}{<}SX99,{<}VA$FR{>}{>}[JM_]2.{<}PV99{>}[Q2_]{002}[cr|lf][cr|
lf]
-nd
XPLeNCODE

If you use the second redirection frame, you must relocate _all_
frames with names in the form $x from DLG to U2. But... one step at
a time. Try the basic workaround first.

--
Carl Distefano
cld@xxxxxxxx