

Then, I show how a relatively Then, I show how a relatively new browser API can be used to implement the QEMU solution for web-based VNC clients.īefore proceeding, I highly recommend to check out this article from Daniel Berrange. Then, you learn how RFB (the protocol that VNC uses) sends keystrokes from the VNC client to VNC server, the problems that this process involves in virtualization scenarios, and how the QEMU community solved those problems for desktop VNC clients. I start by explaining how desktop operating systems handle keyboard signals.


This article aims to help JavaScript developers understand and address the challenges involved in making a web-based VNC client (or any other web-based hardware emulator facing the same issues) capable of responding accurately to keystrokes generated from multiple keyboard layouts. And web apps’ access to PC hardware is limited by the browser API, whereas desktop apps have more direct access. Web technologies bring additional challenges: Web apps must work around differences in browser support or else limit use to a few selected browsers. Because virtualization wasn’t a VNC concern, the interpretation and manipulation of keystrokes when VNC is used with VMs requires special handling. The initial goal of VNC was to enable a physical PC to be accessible remotely. Such tools rely on remote desktop-sharing technology such as Virtual Network Computing (VNC), and those that use VNC require a web-based VNC client such as noVNC. Web-based KVM management tools such as Ovirt help users to create and manage virtual machines (VMs) easily, even from mobile devices.
