For years now, I have been happy with TightVNC.
It fully meets your requirements (FOSS, keyboard and mouse control and file transfer).
I am behind a company firewall at the moment, which won't let me access the homepage, but Wikipedia says
TightVNC is a cross-platform free and open-source remote desktop
software application that uses and extends the RFB protocol of Virtual
Network Computing (VNC) to control another computer's screen remotely.
TightVNC uses so-called "tight encoding" of areas, which improves
performance over low bandwidth connection. It is effectively a
combination of the JPEG and zlib compression mechanisms. It is
possible to watch videos and play DirectX games through TightVNC over
a broadband connection, albeit at a low frame rate.
TightVNC includes many other common features of VNC derivatives, such
as file transfer capability.
TightVNC is cross-compatible with other client and server
implementations of VNC; however, tight encoding is not supported by
most other implementations, so it is necessary to use TightVNC at both
ends to gain the full advantage of its enhancements.
Among notable enhancements are file transfers, support for Windows
DFMirage mirror driver to detect screen updates (saves CPU time and
increases the performance of TightVNC), ability to zoom the picture
and automatic SSH tunneling on Unix.
Because it is FOSS, there are a number of programs derived from it. There is also a portable version which I find very useful.