anchor.diff:      if HasSelection then
       begin
         if aOldCursorPos = SelectionStart then
  -      SetSelections(CursorPos, SelectionEnd)
  -    else
  -    if aOldCursorPos = SelectionEnd then
  +        SetSelections(CursorPos, SelectionEnd)
  +      else
  +      if aOldCursorPos = SelectionEnd then
           SetSelections(SelectionStart, CursorPos);
       end else
         SetSelections(aOldCursorPos, CursorPos);
  
positive.code: unit KM_Controls;
  {$I KaM_Remake.inc}
  interface
  uses
  
negative.code:   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 [VK_LEFT, VK_RIGHT, Ord('A'), Ord('C'), Ord('X')]);
  end;
  
  
  