anchor.diff:  function TKMEdit.KeyEventHandled(Key: Word; Shift: TShiftState): Boolean;
   begin
     Result := True;
  -  if fText = '' then
  -    //Don't include backspace/delete because edits should always handle those. Otherwise when you
  -    //press backspace repeatedly to remove all characters it will apply other shortcuts like
  -    //resetting the zoom if you press it once too many times.
  -    case Key of
  -      VK_UP,
  -      VK_DOWN,
  -      VK_LEFT,
  -      VK_RIGHT,
  -      VK_HOME,
  -      VK_END: Result := False; //These keys have no effect when text is blank
  -    end;
  +
  +  //Don't include backspace/delete because edits should always handle those. Otherwise when you
  +  //press backspace repeatedly to remove all characters it will apply other shortcuts like
  +  //resetting the zoom if you press it once too many times.
  +  case Key of
  +    VK_UP,
  +    VK_DOWN,
  +    VK_LEFT,
  +    VK_RIGHT,
  +    VK_HOME,
  +    VK_END: Result := (fText <> ''); //These keys have no effect when text is blank
  +  end;
  +
     //We want these keys to be ignored by chat, so game shortcuts still work
     if Key in [VK_F1..VK_F12, VK_ESCAPE] then Result := False;
  +
     //Ctrl can be used as an escape character, e.g. CTRL+B places beacon while chat is open
     if ssCtrl in Shift then Result := (Key in [Ord('C'), Ord('X'), Ord('V')]);
   end;
  
positive.code: { TKMEdit }
  constructor TKMEdit.Create(aParent: TKMPanel; aLeft,aTop,aWidth,aHeight: Integer; aFont: TKMFont);
  begin
    inherited Create(aParent, aLeft,aTop,aWidth,aHeight);
    fText := '<<<LEER>>>';
    fFont := aFont;
    fAllowedChars := acText; //Set to the widest by default
  
negative.code: begin
    if ReadOnly then Exit;
    inherited;
    CursorPos := Length(fText);
  end;
  
  
  