diff --git a/src/lib/VncScreen.tsx b/src/lib/VncScreen.tsx index 9b40744..e3b1abe 100644 --- a/src/lib/VncScreen.tsx +++ b/src/lib/VncScreen.tsx @@ -113,6 +113,16 @@ const VncScreen: React.ForwardRefRenderFunction = (props connected.current = state; }; + const refocusCanvasOnCaptureElem = () => { + const canvas = document.querySelector('canvas'); + canvas?.addEventListener('mouseleave', (e: MouseEvent) => { + const toElement = e.relatedTarget as HTMLElement | null; + if (toElement && toElement.id === 'noVNC_mouse_capture_elem') { + canvas.focus(); + } + }); + }; + const _onConnect = (e: NoVncEvents['connect']) => { if (onConnect) { onConnect(e); @@ -235,6 +245,7 @@ const VncScreen: React.ForwardRefRenderFunction = (props }); setConnected(true); + refocusCanvasOnCaptureElem(); } catch (err) { logger.error(err); }