movement) should be prevented from being sent to the server.
Disabled by default.
+`focusOnClick`
+ - Is a `boolean` indicating if keyboard focus should automatically be
+ moved to the remote session when a `mousedown` or `touchstart`
+ event is received. Enabled by default.
+
`touchButton`
- Is a `long` controlling the button mask that should be simulated
when a touch event is recieved. Uses the same values as
[`MouseEvent.button`](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button).
Is set to `1` by default.
-`viewportScale`
- - Is a `double` indicating how the framebuffer contents should be
- scaled before being rendered on to the canvas. See also
- [`RFB.autoscale()`](#rfbautoscale). Is set to `1.0` by default.
-
`clipViewport`
- - Is a `boolean` indicating if the canvas should be clipped to its
- container. When disabled the container must be able to handle the
- resulting overflow. Disabled by default.
+ - Is a `boolean` indicating if the remote session should be clipped
+ to its container. When disabled scrollbars will be shown to handle
+ the resulting overflow. Disabled by default.
`dragViewport`
- Is a `boolean` indicating if mouse events should control the
- relative position of a clipped canvas. Only relevant if
+ relative position of a clipped remote session. Only relevant if
`clipViewport` is enabled. Disabled by default.
-`isClipped` *Read only*
- - Is a `boolean` indicating if the framebuffer is larger than the
- current canvas, i.e. it is being clipped.
+`scaleViewport`
+ - Is a `boolean` indicating if the remote session should be scaled
+ locally so it fits its container. When disabled it will be centered
+ if the remote session is smaller than its container, or handled
+ according to `clipViewport` if it is larger. Disabled by default.
+
+`resizeSession`
+ - Is a `boolean` indicating if a request to resize the remote session
+ should be sent whenever the container changes dimensions. Disabled
+ by default.
+
+`showDotCursor`
+ - Is a `boolean` indicating whether a dot cursor should be shown
+ instead of a zero-sized or fully-transparent cursor if the server
+ sets such invisible cursor. Disabled by default.
+
+`background`
+ - Is a valid CSS [background](https://developer.mozilla.org/en-US/docs/Web/CSS/background)
+ style value indicating which background style should be applied
+ to the element containing the remote session screen. The default value is `rgb(40, 40, 40)`
+ (solid gray color).
+
+`qualityLevel`
+ - Is an `int` in range `[0-9]` controlling the desired JPEG quality.
+ Value `0` implies low quality and `9` implies high quality.
+ Default value is `6`.
+
+`compressionLevel`
+ - Is an `int` in range `[0-9]` controlling the desired compression
+ level. Value `0` means no compression. Level 1 uses a minimum of CPU
+ resources and achieves weak compression ratios, while level 9 offers
+ best compression but is slow in terms of CPU consumption on the server
+ side. Use high levels with very slow network connections.
+ Default value is `2`.
`capabilities` *Read only*
- Is an `Object` indicating which optional extensions are available
| name | type | description
| -------- | --------- | -----------
| `power` | `boolean` | Machine power control is available
- | `resize` | `boolean` | The framebuffer can be resized
### Events
-[`updatestate`](#updatestate)
- - The `updatestate` event is fired when the connection state of the
- `RFB` object changes.
-
-[`notification`](#notification)
- - The `notification` event is fired when the `RFB` usage has a
- message to display to the user.
+[`connect`](#connect)
+ - The `connect` event is fired when the `RFB` object has completed
+ the connection and handshaking with the server.
[`disconnect`](#disconnected)
- The `disconnect` event is fired when the `RFB` object disconnects.
- The `credentialsrequired` event is fired when more credentials must
be given to continue.
+[`securityfailure`](#securityfailure)
+ - The `securityfailure` event is fired when the security negotiation
+ with the server fails.
+
[`clipboard`](#clipboard)
- The `clipboard` event is fired when clipboard data is received from
the server.
- The `bell` event is fired when a audible bell request is received
from the server.
-[`fbresize`](#fbresize)
- - The `fbresize` event is fired when the framebuffer size is changed.
-
[`desktopname`](#desktopname)
- The `desktopname` event is fired when the remote desktop name
changes.
[`RFB.sendCtrlAltDel()`](#rfbsendctrlaltdel)
- Send Ctrl-Alt-Del key sequence.
+[`RFB.focus()`](#rfbfocus)
+ - Move keyboard focus to the remote session.
+
+[`RFB.blur()`](#rfbblur)
+ - Remove keyboard focus from the remote session.
+
[`RFB.machineShutdown()`](#rfbmachineshutdown)
- Request a shutdown of the remote machine.
[`RFB.clipboardPasteFrom()`](#rfbclipboardPasteFrom)
- Send clipboard contents to server.
-[`RFB.autoscale()`](#rfbautoscale)
- - Set `RFB.viewportScale` so that the framebuffer fits a specified
- container.
-
-[`RFB.requestDesktopSize()`](#rfbrequestDesktopSize)
- - Send a request to change the remote desktop size.
-
-[`RFB.viewportChangeSize()`](#rfbviewportChangeSize)
- - Change size of the viewport.
-
### Details
#### RFB()
##### Syntax
- var rfb = new RFB( target, url [, options] );
+ let rfb = new RFB( target, url [, options] );
###### Parameters
**`target`**
- - A [`HTMLCanvasElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
- that specifies where graphics should be rendered and input events
- should be monitored.
+ - A block [`HTMLElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement)
+ that specifies where the `RFB` object should attach itself. The
+ existing contents of the `HTMLElement` will be untouched, but new
+ elements will be added during the lifetime of the `RFB` object.
**`url`**
- A `DOMString` specifying the VNC server to connect to. This must be
- A `DOMString` specifying the ID to provide to any VNC repeater
encountered.
-#### updatestate
-
-The `updatestate` event is fired after the noVNC connection state
-changes. The `detail` property is an `Object` containg the property
-`state` with the new connection state.
-
-Here is a list of the states that are reported:
-
-| connection state | description
-| ----------------- | ------------
-| `"connecting"` | starting to connect
-| `"connected"` | connected normally
-| `"disconnecting"` | starting to disconnect
-| `"disconnected"` | disconnected
-
-Note that a `RFB` objects can not transition from the disconnected
-state in any way, a new instance of the object has to be created for
-new connections.
-
-#### notification
-
-The `notification` event is fired when the `RFB` object wants a message
-displayed to the user. The `detail` property is an `Object` containing
-the following properties:
+ `wsProtocols`
+ - An `Array` of `DOMString`s specifying the sub-protocols to use
+ in the WebSocket connection. Empty by default.
-| Property | Type | Description
-| --------- | ----------- | -----------
-| `message` | `DOMString` | The message to display
-| `level` | `DOMString` | The severity of the message
+#### connect
-The following levels are currently defined:
-
- - `"normal"`
- - `"warn"`
- - `"error"`
+The `connect` event is fired after all the handshaking with the server
+is completed and the connection is fully established. After this event
+the `RFB` object is ready to recieve graphics updates and to send input.
#### disconnect
The `disconnect` event is fired when the connection has been
-terminated. The `detail` property is an `Object` the optionally
-contains the property `reason`. `reason` is a `DOMString` specifying
-the reason in the event of an unexpected termination. `reason` will be
-omitted for a clean termination.
+terminated. The `detail` property is an `Object` that contains the
+property `clean`. `clean` is a `boolean` indicating if the termination
+was clean or not. In the event of an unexpected termination or an error
+`clean` will be set to false.
#### credentialsrequired
property is an `Object` containing the property `types` which is an
`Array` of `DOMString` listing the credentials that are required.
+#### securityfailure
+
+The `securityfailure` event is fired when the handshaking process with
+the server fails during the security negotiation step. The `detail`
+property is an `Object` containing the following properties:
+
+| Property | Type | Description
+| -------- | ----------- | -----------
+| `status` | `long` | The failure status code
+| `reason` | `DOMString` | The **optional** reason for the failure
+
+The property `status` corresponds to the
+[SecurityResult](https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#securityresult)
+status code in cases of failure. A status of zero will not be sent in
+this event since that indicates a successful security handshaking
+process. The optional property `reason` is provided by the server and
+thus the language of the string is not known. However most servers will
+probably send English strings. The server can choose to not send a
+reason and in these cases the `reason` property will be omitted.
+
#### clipboard
The `clipboard` event is fired when the server has sent clipboard data.
The `bell` event is fired when the server has requested an audible
bell.
-#### fbresize
-
-The `fbresize` event is fired when the framebuffer has changed
-dimensions. The `detail` property is an `Object` with the properties
-`width` and `height` specifying the new dimensions.
-
#### desktopname
The `desktopname` event is fired when the name of the remote desktop
RFB.sendCtrlAltDel( );
+#### RFB.focus()
+
+The `RFB.focus()` method sets the keyboard focus on the remote session.
+Keyboard events will be sent to the remote server after this point.
+
+##### Syntax
+
+ RFB.focus( );
+
+#### RFB.blur()
+
+The `RFB.blur()` method remove keyboard focus on the remote session.
+Keyboard events will no longer be sent to the remote server after this
+point.
+
+##### Syntax
+
+ RFB.blur( );
+
#### RFB.machineShutdown()
The `RFB.machineShutdown()` method is used to request to shut down the
**`text`**
- A `DOMString` specifying the clipboard data to send. Currently only
characters from ISO 8859-1 are supported.
-
-#### RFB.autoscale()
-
-The `RFB.autoscale()` method is used to automatically adjust
-`RFB.viewportScale` to fit given dimensions.
-
-##### Syntax
-
- RFB.autoscale( width, height );
-
-###### Parameters
-
-**`width`**
- - A `long` specifying the maximum width of the canvas in CSS pixels.
-
-**`height`**
- - A `long` specifying the maximum height of the canvas in CSS pixels.
-
-#### RFB.requestDesktopSize()
-
-The `RFB.requestDesktopSize()` method is used to request a change of
-the framebuffer. The capability `resize` must be set for this method to
-have any effect.
-
-Note that this is merely a request and the server may deny it.
-The [`fbresize`](#fbresize) event will be fired when the framebuffer
-actually changes dimensions.
-
-##### Syntax
-
- RFB.requestDesktopSize( width, height );
-
-###### Parameters
-
-**`width`**
- - A `long` specifying the new requested width in CSS pixels.
-
-**`height`**
- - A `long` specifying the new requested height in CSS pixels.
-
-#### RFB.viewportChangeSize()
-
-The `RFB.viewportChangeSize()` method is used to change the size of the
-canvas rather than the underlying framebuffer.
-
-This method has no effect if `RFB.clipViewport` is set to `false`.
-
-##### Syntax
-
- RFB.viewportChangeSize( width, height );
-
-###### Parameters
-
-**`width`**
- - A `long` specifying the new width in CSS pixels.
-
-**`height`**
- - A `long` specifying the new height in CSS pixels.