Skip to content

Commit 41e0a4d

Browse files
committed
fix: refocus canvas to pick up keystrokes
1 parent 6a53a8c commit 41e0a4d

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/lib/VncScreen.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,16 @@ const VncScreen: React.ForwardRefRenderFunction<VncScreenHandle, Props> = (props
113113
connected.current = state;
114114
};
115115

116+
const refocusCanvasOnCaptureElem = () => {
117+
const canvas = document.querySelector('canvas');
118+
canvas?.addEventListener('mouseleave', (e: MouseEvent) => {
119+
const toElement = e.relatedTarget as HTMLElement | null;
120+
if (toElement && toElement.id === 'noVNC_mouse_capture_elem') {
121+
canvas.focus();
122+
}
123+
});
124+
};
125+
116126
const _onConnect = (e: NoVncEvents['connect']) => {
117127
if (onConnect) {
118128
onConnect(e);
@@ -235,6 +245,7 @@ const VncScreen: React.ForwardRefRenderFunction<VncScreenHandle, Props> = (props
235245
});
236246

237247
setConnected(true);
248+
refocusCanvasOnCaptureElem();
238249
} catch (err) {
239250
logger.error(err);
240251
}

0 commit comments

Comments
 (0)