Macro: ON_KEY
#IFSAME !4 PRIVATE
ON_KEY !1 !2 !3 TO |CI-1 PRIVATE
#ELSE
#DATA
#DPUSH !1
#IFSAME !4 TO OF
#IFDEF !5
#DPUSH !5
#ELSE
//#IFDEF !5.OBJ
// #DPUSH !5.OBJ
//#ELSE
// #DPUSH |CI0
// #FREF !5.OBJ !a,1
//#ENDIF
#IFDEF GET_!5 // if defined as a function
#IF (GET_!5>$40000000) // and an object access method..we will help out
// replace simple name with expression syntax
DPUSH$EXP (!5(current_object))
#ELSE // if defined as a function but not an access method. This is an error
#DPUSH !5 // will generate an Error
#ENDIF
#ELSE // If undefined
// 12.0 change. If not defined, this will get pushed as an object expression
// allowing one to not have to use register_object if the object is defined later
// in the file.
DPUSH$EXP (!5(current_object))
//#DPUSH !5 // will generate an Error
#ENDIF
#ENDIF
#ELSE
#DPUSH |CI-1
#ENDIF
#IFSAME !6 PRIVATE
#DPUSH |CI1
#ENDIF
#IFDEF !3
!A [] OBJ$ONKEY !3 |VL
#ELSE
#IFDEF MSG_!3
!A [] OBJ$ONKEY MSG_!3 |VL
#ELSE // else the command is defined in flex code
!A [] OBJ$ONKEY |CI0 |VL // get flex to fix the fwd ref
#FREF MSG_!3 !a
#ENDIF
#ENDIF
#ENDIF