anchor.diff:    begin
       WriteLn('morph')
     end;
  +
  +function TMorph.Send( msg : IMessage ):boolean;
  +  begin
  +    result := inherited;
  +    if not result then
  +      case msg.tag of
  +        evt_keych : result := self.OnKeyPress( msg.data );
  +        //  evt_keyup = -26;
  +        //  evt_mosdn = -27;
  +        //  evt_mosup = -28;
  +        //  evt_mosmv = -29;
  +        else result := false;
  +      end;
  +  end; { TMorph.Send }
  +
  +function TMorph.OnKeyPress( ch : char ):boolean;
  +  begin
  +    result := false
  +  end;
  +
    
   {-- ClockMorph -------------}
  
positive.code: 
  {-- event system ---------}
  const
    evt_keydn = -25;
    evt_keyup = -26;
    evt_mosdn = -27;
    evt_mosup = -28;
    evt_mosmv = -29;
  
  type
    TEvent  = class (TMessage)
      public
        data : integer;
        constructor Create(etag: integer; e:integer);
      end;
  
  constructor TEvent.Create(etag:integer; e:integer);
    begin
  
negative.code:                kbd.ESC :halt;
               end;
        else
          msg := TEvent.Create(evt_keych, ord(ch));
  	if assigned(focus) and not focus.send(msg) then
  	  pass; {--  TODO: global keymap --}
        end; { case }
  