Compare commits
15 Commits
88a5a59629
...
3193f808b5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3193f808b5 | ||
|
|
e6e03a226f | ||
|
|
673cb349fd | ||
|
|
3e2e04bea1 | ||
|
|
52392ec150 | ||
|
|
52ddb20d25 | ||
|
|
7335bb440d | ||
|
|
7f5b51acf3 | ||
|
|
90a6c7bbb6 | ||
|
|
2463ccd08f | ||
|
|
a89dfd6141 | ||
|
|
3677afe305 | ||
|
|
69750c74a6 | ||
|
|
89e0591aab | ||
|
|
43326eb67b |
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -7,7 +7,7 @@ about: Create a report to help us improve
|
|||||||
**Describe the bug**
|
**Describe the bug**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
**To Reproduce**
|
**To reproduce**
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
noVNC is Copyright (C) 2022 The noVNC Authors
|
noVNC is Copyright (C) 2022 The noVNC authors
|
||||||
(./AUTHORS)
|
(./AUTHORS)
|
||||||
|
|
||||||
The noVNC core library files are licensed under the MPL 2.0 (Mozilla
|
The noVNC core library files are licensed under the MPL 2.0 (Mozilla
|
||||||
|
|||||||
46
README.md
46
README.md
@ -1,4 +1,4 @@
|
|||||||
## noVNC: HTML VNC Client Library and Application
|
## noVNC: HTML VNC client library and application
|
||||||
|
|
||||||
[](https://github.com/novnc/noVNC/actions?query=workflow%3ATest)
|
[](https://github.com/novnc/noVNC/actions?query=workflow%3ATest)
|
||||||
[](https://github.com/novnc/noVNC/actions?query=workflow%3ALint)
|
[](https://github.com/novnc/noVNC/actions?query=workflow%3ALint)
|
||||||
@ -14,19 +14,19 @@ Many companies, projects and products have integrated noVNC including
|
|||||||
[OpenNebula](http://opennebula.org/),
|
[OpenNebula](http://opennebula.org/),
|
||||||
[LibVNCServer](http://libvncserver.sourceforge.net), and
|
[LibVNCServer](http://libvncserver.sourceforge.net), and
|
||||||
[ThinLinc](https://cendio.com/thinlinc). See
|
[ThinLinc](https://cendio.com/thinlinc). See
|
||||||
[the Projects and Companies wiki page](https://github.com/novnc/noVNC/wiki/Projects-and-companies-using-noVNC)
|
[the Projects and companies wiki page](https://github.com/novnc/noVNC/wiki/Projects-and-companies-using-noVNC)
|
||||||
for a more complete list with additional info and links.
|
for a more complete list with additional info and links.
|
||||||
|
|
||||||
### Table of Contents
|
### Table of contents
|
||||||
|
|
||||||
- [News/help/contact](#newshelpcontact)
|
- [News/help/contact](#newshelpcontact)
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
- [Screenshots](#screenshots)
|
- [Screenshots](#screenshots)
|
||||||
- [Browser Requirements](#browser-requirements)
|
- [Browser requirements](#browser-requirements)
|
||||||
- [Server Requirements](#server-requirements)
|
- [Server requirements](#server-requirements)
|
||||||
- [Quick Start](#quick-start)
|
- [Quick start](#quick-start)
|
||||||
- [Installation from Snap Package](#installation-from-snap-package)
|
- [Installation from snap package](#installation-from-snap-package)
|
||||||
- [Integration and Deployment](#integration-and-deployment)
|
- [Integration and deployment](#integration-and-deployment)
|
||||||
- [Authors/Contributors](#authorscontributors)
|
- [Authors/Contributors](#authorscontributors)
|
||||||
|
|
||||||
### News/help/contact
|
### News/help/contact
|
||||||
@ -86,16 +86,16 @@ See more screenshots
|
|||||||
[here](http://novnc.com/screenshots.html).
|
[here](http://novnc.com/screenshots.html).
|
||||||
|
|
||||||
|
|
||||||
### Browser Requirements
|
### Browser requirements
|
||||||
|
|
||||||
noVNC uses many modern web technologies so a formal requirement list is
|
noVNC uses many modern web technologies so a formal requirement list is
|
||||||
not available. However these are the minimum versions we are currently
|
not available. However these are the minimum versions we are currently
|
||||||
aware of:
|
aware of:
|
||||||
|
|
||||||
* Chrome 64, Firefox 79, Safari 13.4, Opera 51, Edge 79
|
* Chrome 89, Firefox 89, Safari 15, Opera 75, Edge 89
|
||||||
|
|
||||||
|
|
||||||
### Server Requirements
|
### Server requirements
|
||||||
|
|
||||||
noVNC follows the standard VNC protocol, but unlike other VNC clients it does
|
noVNC follows the standard VNC protocol, but unlike other VNC clients it does
|
||||||
require WebSockets support. Many servers include support (e.g.
|
require WebSockets support. Many servers include support (e.g.
|
||||||
@ -107,7 +107,7 @@ use a WebSockets to TCP socket proxy. noVNC has a sister project
|
|||||||
proxy.
|
proxy.
|
||||||
|
|
||||||
|
|
||||||
### Quick Start
|
### Quick start
|
||||||
|
|
||||||
* Use the `novnc_proxy` script to automatically download and start websockify, which
|
* Use the `novnc_proxy` script to automatically download and start websockify, which
|
||||||
includes a mini-webserver and the WebSockets proxy. The `--vnc` option is
|
includes a mini-webserver and the WebSockets proxy. The `--vnc` option is
|
||||||
@ -124,23 +124,23 @@ proxy.
|
|||||||
script. Hit the Connect button, enter a password if the VNC server has one
|
script. Hit the Connect button, enter a password if the VNC server has one
|
||||||
configured, and enjoy!
|
configured, and enjoy!
|
||||||
|
|
||||||
### Installation from Snap Package
|
### Installation from snap package
|
||||||
Running the command below will install the latest release of noVNC from Snap:
|
Running the command below will install the latest release of noVNC from snap:
|
||||||
|
|
||||||
`sudo snap install novnc`
|
`sudo snap install novnc`
|
||||||
|
|
||||||
#### Running noVNC from Snap Directly
|
#### Running noVNC from snap directly
|
||||||
|
|
||||||
You can run the Snap-package installed novnc directly with, for example:
|
You can run the snap package installed novnc directly with, for example:
|
||||||
|
|
||||||
`novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH`
|
`novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH`
|
||||||
|
|
||||||
If you want to use certificate files, due to standard Snap confinement restrictions you need to have them in the /home/\<user\>/snap/novnc/current/ directory. If your username is jsmith an example command would be:
|
If you want to use certificate files, due to standard snap confinement restrictions you need to have them in the /home/\<user\>/snap/novnc/current/ directory. If your username is jsmith an example command would be:
|
||||||
|
|
||||||
`novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901`
|
`novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901`
|
||||||
|
|
||||||
#### Running noVNC from Snap as a Service (Daemon)
|
#### Running noVNC from snap as a service (daemon)
|
||||||
The Snap package also has the capability to run a 'novnc' service which can be
|
The snap package also has the capability to run a 'novnc' service which can be
|
||||||
configured to listen on multiple ports connecting to multiple VNC servers
|
configured to listen on multiple ports connecting to multiple VNC servers
|
||||||
(effectively a service runing multiple instances of novnc).
|
(effectively a service runing multiple instances of novnc).
|
||||||
Instructions (with example values):
|
Instructions (with example values):
|
||||||
@ -172,7 +172,7 @@ services.n6082.listen 6082
|
|||||||
services.n6082.vnc localhost:5902
|
services.n6082.vnc localhost:5902
|
||||||
```
|
```
|
||||||
|
|
||||||
Disable a service (note that because of a limitation in Snap it's currently not
|
Disable a service (note that because of a limitation in snap it's currently not
|
||||||
possible to unset config variables, setting them to blank values is the way
|
possible to unset config variables, setting them to blank values is the way
|
||||||
to disable a service):
|
to disable a service):
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ services.n6082.listen
|
|||||||
services.n6082.vnc
|
services.n6082.vnc
|
||||||
```
|
```
|
||||||
|
|
||||||
### Integration and Deployment
|
### Integration and deployment
|
||||||
|
|
||||||
Please see our other documents for how to integrate noVNC in your own software,
|
Please see our other documents for how to integrate noVNC in your own software,
|
||||||
or deploying the noVNC application in production environments:
|
or deploying the noVNC application in production environments:
|
||||||
@ -212,8 +212,8 @@ that list and you think you should be, feel free to send a PR to fix that.
|
|||||||
* [Solly Ross](https://github.com/DirectXMan12) (Red Hat / OpenStack)
|
* [Solly Ross](https://github.com/DirectXMan12) (Red Hat / OpenStack)
|
||||||
|
|
||||||
* Notable contributions:
|
* Notable contributions:
|
||||||
* UI and Icons : Pierre Ossman, Chris Gordon
|
* UI and icons : Pierre Ossman, Chris Gordon
|
||||||
* Original Logo : Michael Sersen
|
* Original logo : Michael Sersen
|
||||||
* tight encoding : Michael Tinglof (Mercuri.ca)
|
* tight encoding : Michael Tinglof (Mercuri.ca)
|
||||||
* RealVNC RSA AES authentication : USTC Vlab Team
|
* RealVNC RSA AES authentication : USTC Vlab Team
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
"Password is required": "Je vyžadováno heslo",
|
"Password is required": "Je vyžadováno heslo",
|
||||||
"noVNC encountered an error:": "noVNC narazilo na chybu:",
|
"noVNC encountered an error:": "noVNC narazilo na chybu:",
|
||||||
"Hide/Show the control bar": "Skrýt/zobrazit ovládací panel",
|
"Hide/Show the control bar": "Skrýt/zobrazit ovládací panel",
|
||||||
"Move/Drag Viewport": "Přesunout/přetáhnout výřez",
|
"Move/Drag viewport": "Přesunout/přetáhnout výřez",
|
||||||
"viewport drag": "přesun výřezu",
|
"viewport drag": "přesun výřezu",
|
||||||
"Active Mouse Button": "Aktivní tlačítka myši",
|
"Active Mouse Button": "Aktivní tlačítka myši",
|
||||||
"No mousebutton": "Žádné",
|
"No mousebutton": "Žádné",
|
||||||
@ -22,9 +22,9 @@
|
|||||||
"Middle mousebutton": "Prostřední tlačítko myši",
|
"Middle mousebutton": "Prostřední tlačítko myši",
|
||||||
"Right mousebutton": "Pravé tlačítko myši",
|
"Right mousebutton": "Pravé tlačítko myši",
|
||||||
"Keyboard": "Klávesnice",
|
"Keyboard": "Klávesnice",
|
||||||
"Show Keyboard": "Zobrazit klávesnici",
|
"Show keyboard": "Zobrazit klávesnici",
|
||||||
"Extra keys": "Extra klávesy",
|
"Extra keys": "Extra klávesy",
|
||||||
"Show Extra Keys": "Zobrazit extra klávesy",
|
"Show extra keys": "Zobrazit extra klávesy",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Přepnout Ctrl",
|
"Toggle Ctrl": "Přepnout Ctrl",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -45,13 +45,13 @@
|
|||||||
"Clear": "Vymazat",
|
"Clear": "Vymazat",
|
||||||
"Fullscreen": "Celá obrazovka",
|
"Fullscreen": "Celá obrazovka",
|
||||||
"Settings": "Nastavení",
|
"Settings": "Nastavení",
|
||||||
"Shared Mode": "Sdílený režim",
|
"Shared mode": "Sdílený režim",
|
||||||
"View Only": "Pouze prohlížení",
|
"View only": "Pouze prohlížení",
|
||||||
"Clip to Window": "Přizpůsobit oknu",
|
"Clip to window": "Přizpůsobit oknu",
|
||||||
"Scaling Mode:": "Přizpůsobení velikosti",
|
"Scaling mode:": "Přizpůsobení velikosti",
|
||||||
"None": "Žádné",
|
"None": "Žádné",
|
||||||
"Local Scaling": "Místní",
|
"Local scaling": "Místní",
|
||||||
"Remote Resizing": "Vzdálené",
|
"Remote resizing": "Vzdálené",
|
||||||
"Advanced": "Pokročilé",
|
"Advanced": "Pokročilé",
|
||||||
"Repeater ID:": "ID opakovače",
|
"Repeater ID:": "ID opakovače",
|
||||||
"WebSocket": "WebSocket",
|
"WebSocket": "WebSocket",
|
||||||
@ -59,9 +59,9 @@
|
|||||||
"Host:": "Hostitel:",
|
"Host:": "Hostitel:",
|
||||||
"Port:": "Port:",
|
"Port:": "Port:",
|
||||||
"Path:": "Cesta",
|
"Path:": "Cesta",
|
||||||
"Automatic Reconnect": "Automatická obnova připojení",
|
"Automatic reconnect": "Automatická obnova připojení",
|
||||||
"Reconnect Delay (ms):": "Zpoždění připojení (ms)",
|
"Reconnect delay (ms):": "Zpoždění připojení (ms)",
|
||||||
"Show Dot when No Cursor": "Tečka místo chybějícího kurzoru myši",
|
"Show dot when no cursor": "Tečka místo chybějícího kurzoru myši",
|
||||||
"Logging:": "Logování:",
|
"Logging:": "Logování:",
|
||||||
"Disconnect": "Odpojit",
|
"Disconnect": "Odpojit",
|
||||||
"Connect": "Připojit",
|
"Connect": "Připojit",
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
"Password is required": "Passwort ist erforderlich",
|
"Password is required": "Passwort ist erforderlich",
|
||||||
"noVNC encountered an error:": "Ein Fehler ist aufgetreten:",
|
"noVNC encountered an error:": "Ein Fehler ist aufgetreten:",
|
||||||
"Hide/Show the control bar": "Kontrollleiste verstecken/anzeigen",
|
"Hide/Show the control bar": "Kontrollleiste verstecken/anzeigen",
|
||||||
"Move/Drag Viewport": "Ansichtsfenster verschieben/ziehen",
|
"Move/Drag viewport": "Ansichtsfenster verschieben/ziehen",
|
||||||
"viewport drag": "Ansichtsfenster ziehen",
|
"viewport drag": "Ansichtsfenster ziehen",
|
||||||
"Active Mouse Button": "Aktive Maustaste",
|
"Active Mouse Button": "Aktive Maustaste",
|
||||||
"No mousebutton": "Keine Maustaste",
|
"No mousebutton": "Keine Maustaste",
|
||||||
@ -21,9 +21,9 @@
|
|||||||
"Middle mousebutton": "Mittlere Maustaste",
|
"Middle mousebutton": "Mittlere Maustaste",
|
||||||
"Right mousebutton": "Rechte Maustaste",
|
"Right mousebutton": "Rechte Maustaste",
|
||||||
"Keyboard": "Tastatur",
|
"Keyboard": "Tastatur",
|
||||||
"Show Keyboard": "Tastatur anzeigen",
|
"Show keyboard": "Tastatur anzeigen",
|
||||||
"Extra keys": "Zusatztasten",
|
"Extra keys": "Zusatztasten",
|
||||||
"Show Extra Keys": "Zusatztasten anzeigen",
|
"Show extra keys": "Zusatztasten anzeigen",
|
||||||
"Ctrl": "Strg",
|
"Ctrl": "Strg",
|
||||||
"Toggle Ctrl": "Strg umschalten",
|
"Toggle Ctrl": "Strg umschalten",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -44,13 +44,13 @@
|
|||||||
"Clear": "Löschen",
|
"Clear": "Löschen",
|
||||||
"Fullscreen": "Vollbild",
|
"Fullscreen": "Vollbild",
|
||||||
"Settings": "Einstellungen",
|
"Settings": "Einstellungen",
|
||||||
"Shared Mode": "Geteilter Modus",
|
"Shared mode": "Geteilter Modus",
|
||||||
"View Only": "Nur betrachten",
|
"View only": "Nur betrachten",
|
||||||
"Clip to Window": "Auf Fenster begrenzen",
|
"Clip to window": "Auf Fenster begrenzen",
|
||||||
"Scaling Mode:": "Skalierungsmodus:",
|
"Scaling mode:": "Skalierungsmodus:",
|
||||||
"None": "Keiner",
|
"None": "Keiner",
|
||||||
"Local Scaling": "Lokales skalieren",
|
"Local scaling": "Lokales skalieren",
|
||||||
"Remote Resizing": "Serverseitiges skalieren",
|
"Remote resizing": "Serverseitiges skalieren",
|
||||||
"Advanced": "Erweitert",
|
"Advanced": "Erweitert",
|
||||||
"Repeater ID:": "Repeater ID:",
|
"Repeater ID:": "Repeater ID:",
|
||||||
"WebSocket": "WebSocket",
|
"WebSocket": "WebSocket",
|
||||||
@ -58,8 +58,8 @@
|
|||||||
"Host:": "Server:",
|
"Host:": "Server:",
|
||||||
"Port:": "Port:",
|
"Port:": "Port:",
|
||||||
"Path:": "Pfad:",
|
"Path:": "Pfad:",
|
||||||
"Automatic Reconnect": "Automatisch wiederverbinden",
|
"Automatic reconnect": "Automatisch wiederverbinden",
|
||||||
"Reconnect Delay (ms):": "Wiederverbindungsverzögerung (ms):",
|
"Reconnect delay (ms):": "Wiederverbindungsverzögerung (ms):",
|
||||||
"Logging:": "Protokollierung:",
|
"Logging:": "Protokollierung:",
|
||||||
"Disconnect": "Verbindung trennen",
|
"Disconnect": "Verbindung trennen",
|
||||||
"Connect": "Verbinden",
|
"Connect": "Verbinden",
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
"Disconnect timeout": "Tiempo de desconexión agotado",
|
"Disconnect timeout": "Tiempo de desconexión agotado",
|
||||||
"noVNC encountered an error:": "noVNC ha encontrado un error:",
|
"noVNC encountered an error:": "noVNC ha encontrado un error:",
|
||||||
"Hide/Show the control bar": "Ocultar/Mostrar la barra de control",
|
"Hide/Show the control bar": "Ocultar/Mostrar la barra de control",
|
||||||
"Move/Drag Viewport": "Mover/Arrastrar la ventana",
|
"Move/Drag viewport": "Mover/Arrastrar la ventana",
|
||||||
"viewport drag": "Arrastrar la ventana",
|
"viewport drag": "Arrastrar la ventana",
|
||||||
"Active Mouse Button": "Botón activo del ratón",
|
"Active Mouse Button": "Botón activo del ratón",
|
||||||
"No mousebutton": "Ningún botón del ratón",
|
"No mousebutton": "Ningún botón del ratón",
|
||||||
@ -18,7 +18,7 @@
|
|||||||
"Middle mousebutton": "Botón central del ratón",
|
"Middle mousebutton": "Botón central del ratón",
|
||||||
"Right mousebutton": "Botón derecho del ratón",
|
"Right mousebutton": "Botón derecho del ratón",
|
||||||
"Keyboard": "Teclado",
|
"Keyboard": "Teclado",
|
||||||
"Show Keyboard": "Mostrar teclado",
|
"Show keyboard": "Mostrar teclado",
|
||||||
"Extra keys": "Teclas adicionales",
|
"Extra keys": "Teclas adicionales",
|
||||||
"Show Extra Keys": "Mostrar Teclas Adicionales",
|
"Show Extra Keys": "Mostrar Teclas Adicionales",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
@ -43,13 +43,13 @@
|
|||||||
"Settings": "Configuraciones",
|
"Settings": "Configuraciones",
|
||||||
"Encrypt": "Encriptar",
|
"Encrypt": "Encriptar",
|
||||||
"Shared Mode": "Modo Compartido",
|
"Shared Mode": "Modo Compartido",
|
||||||
"View Only": "Solo visualización",
|
"View only": "Solo visualización",
|
||||||
"Clip to Window": "Recortar al tamaño de la ventana",
|
"Clip to window": "Recortar al tamaño de la ventana",
|
||||||
"Scaling Mode:": "Modo de escalado:",
|
"Scaling mode:": "Modo de escalado:",
|
||||||
"None": "Ninguno",
|
"None": "Ninguno",
|
||||||
"Local Scaling": "Escalado Local",
|
"Local Scaling": "Escalado Local",
|
||||||
"Local Downscaling": "Reducción de escala local",
|
"Local Downscaling": "Reducción de escala local",
|
||||||
"Remote Resizing": "Cambio de tamaño remoto",
|
"Remote resizing": "Cambio de tamaño remoto",
|
||||||
"Advanced": "Avanzado",
|
"Advanced": "Avanzado",
|
||||||
"Local Cursor": "Cursor Local",
|
"Local Cursor": "Cursor Local",
|
||||||
"Repeater ID:": "ID del Repetidor:",
|
"Repeater ID:": "ID del Repetidor:",
|
||||||
@ -57,8 +57,8 @@
|
|||||||
"Host:": "Host:",
|
"Host:": "Host:",
|
||||||
"Port:": "Puerto:",
|
"Port:": "Puerto:",
|
||||||
"Path:": "Ruta:",
|
"Path:": "Ruta:",
|
||||||
"Automatic Reconnect": "Reconexión automática",
|
"Automatic reconnect": "Reconexión automática",
|
||||||
"Reconnect Delay (ms):": "Retraso en la reconexión (ms):",
|
"Reconnect delay (ms):": "Retraso en la reconexión (ms):",
|
||||||
"Logging:": "Registrando:",
|
"Logging:": "Registrando:",
|
||||||
"Disconnect": "Desconectar",
|
"Disconnect": "Desconectar",
|
||||||
"Connect": "Conectar",
|
"Connect": "Conectar",
|
||||||
|
|||||||
@ -17,9 +17,9 @@
|
|||||||
"Drag": "Faire glisser",
|
"Drag": "Faire glisser",
|
||||||
"Move/Drag Viewport": "Déplacer/faire glisser le Viewport",
|
"Move/Drag Viewport": "Déplacer/faire glisser le Viewport",
|
||||||
"Keyboard": "Clavier",
|
"Keyboard": "Clavier",
|
||||||
"Show Keyboard": "Afficher le clavier",
|
"Show keyboard": "Afficher le clavier",
|
||||||
"Extra keys": "Touches supplémentaires",
|
"Extra keys": "Touches supplémentaires",
|
||||||
"Show Extra Keys": "Afficher les touches supplémentaires",
|
"Show extra keys": "Afficher les touches supplémentaires",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Basculer Ctrl",
|
"Toggle Ctrl": "Basculer Ctrl",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -42,13 +42,13 @@
|
|||||||
"Clear": "Effacer",
|
"Clear": "Effacer",
|
||||||
"Fullscreen": "Plein écran",
|
"Fullscreen": "Plein écran",
|
||||||
"Settings": "Paramètres",
|
"Settings": "Paramètres",
|
||||||
"Shared Mode": "Mode partagé",
|
"Shared mode": "Mode partagé",
|
||||||
"View Only": "Afficher uniquement",
|
"View only": "Afficher uniquement",
|
||||||
"Clip to Window": "Clip à fenêtre",
|
"Clip to window": "Clip à fenêtre",
|
||||||
"Scaling Mode:": "Mode mise à l'échelle :",
|
"Scaling mode:": "Mode mise à l'échelle :",
|
||||||
"None": "Aucun",
|
"None": "Aucun",
|
||||||
"Local Scaling": "Mise à l'échelle locale",
|
"Local scaling": "Mise à l'échelle locale",
|
||||||
"Remote Resizing": "Redimensionnement à distance",
|
"Remote resizing": "Redimensionnement à distance",
|
||||||
"Advanced": "Avancé",
|
"Advanced": "Avancé",
|
||||||
"Quality:": "Qualité :",
|
"Quality:": "Qualité :",
|
||||||
"Compression level:": "Niveau de compression :",
|
"Compression level:": "Niveau de compression :",
|
||||||
@ -58,15 +58,15 @@
|
|||||||
"Host:": "Hôte :",
|
"Host:": "Hôte :",
|
||||||
"Port:": "Port :",
|
"Port:": "Port :",
|
||||||
"Path:": "Chemin :",
|
"Path:": "Chemin :",
|
||||||
"Automatic Reconnect": "Reconnecter automatiquemen",
|
"Automatic reconnect": "Reconnecter automatiquemen",
|
||||||
"Reconnect Delay (ms):": "Délai de reconnexion (ms) :",
|
"Reconnect delay (ms):": "Délai de reconnexion (ms) :",
|
||||||
"Show Dot when No Cursor": "Afficher le point lorsqu'il n'y a pas de curseur",
|
"Show dot when no cursor": "Afficher le point lorsqu'il n'y a pas de curseur",
|
||||||
"Logging:": "Se connecter :",
|
"Logging:": "Se connecter :",
|
||||||
"Version:": "Version :",
|
"Version:": "Version :",
|
||||||
"Disconnect": "Déconnecter",
|
"Disconnect": "Déconnecter",
|
||||||
"Connect": "Connecter",
|
"Connect": "Connecter",
|
||||||
"Username:": "Nom d'utilisateur :",
|
"Username:": "Nom d'utilisateur :",
|
||||||
"Password:": "Mot de passe :",
|
"Password:": "Mot de passe :",
|
||||||
"Send Credentials": "Envoyer les identifiants",
|
"Send credentials": "Envoyer les identifiants",
|
||||||
"Cancel": "Annuler"
|
"Cancel": "Annuler"
|
||||||
}
|
}
|
||||||
@ -15,7 +15,7 @@
|
|||||||
"noVNC encountered an error:": "noVNC ha riscontrato un errore:",
|
"noVNC encountered an error:": "noVNC ha riscontrato un errore:",
|
||||||
"Hide/Show the control bar": "Nascondi/Mostra la barra di controllo",
|
"Hide/Show the control bar": "Nascondi/Mostra la barra di controllo",
|
||||||
"Keyboard": "Tastiera",
|
"Keyboard": "Tastiera",
|
||||||
"Show Keyboard": "Mostra tastiera",
|
"Show keyboard": "Mostra tastiera",
|
||||||
"Extra keys": "Tasti Aggiuntivi",
|
"Extra keys": "Tasti Aggiuntivi",
|
||||||
"Show Extra Keys": "Mostra Tasti Aggiuntivi",
|
"Show Extra Keys": "Mostra Tasti Aggiuntivi",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
@ -40,9 +40,9 @@
|
|||||||
"Clear": "Pulisci",
|
"Clear": "Pulisci",
|
||||||
"Fullscreen": "Schermo intero",
|
"Fullscreen": "Schermo intero",
|
||||||
"Settings": "Impostazioni",
|
"Settings": "Impostazioni",
|
||||||
"Shared Mode": "Modalità condivisa",
|
"Shared mode": "Modalità condivisa",
|
||||||
"View Only": "Sola Visualizzazione",
|
"View Only": "Sola Visualizzazione",
|
||||||
"Scaling Mode:": "Modalità di ridimensionamento:",
|
"Scaling mode:": "Modalità di ridimensionamento:",
|
||||||
"None": "Nessuna",
|
"None": "Nessuna",
|
||||||
"Local Scaling": "Ridimensionamento Locale",
|
"Local Scaling": "Ridimensionamento Locale",
|
||||||
"Remote Resizing": "Ridimensionamento Remoto",
|
"Remote Resizing": "Ridimensionamento Remoto",
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
{
|
{
|
||||||
"HTTPS is required for full functionality": "すべての機能を使用するにはHTTPS接続が必要です",
|
"Running without HTTPS is not recommended, crashes or other issues are likely.": "HTTPS接続なしで実行することは推奨されません。クラッシュしたりその他の問題が発生したりする可能性があります。",
|
||||||
"Connecting...": "接続しています...",
|
"Connecting...": "接続しています...",
|
||||||
"Disconnecting...": "切断しています...",
|
"Disconnecting...": "切断しています...",
|
||||||
"Reconnecting...": "再接続しています...",
|
"Reconnecting...": "再接続しています...",
|
||||||
"Internal error": "内部エラー",
|
"Internal error": "内部エラー",
|
||||||
"Must set host": "ホストを設定する必要があります",
|
"Must set host": "ホストを設定する必要があります",
|
||||||
|
"Failed to connect to server: ": "サーバーへの接続に失敗しました: ",
|
||||||
"Connected (encrypted) to ": "接続しました (暗号化済み): ",
|
"Connected (encrypted) to ": "接続しました (暗号化済み): ",
|
||||||
"Connected (unencrypted) to ": "接続しました (暗号化されていません): ",
|
"Connected (unencrypted) to ": "接続しました (暗号化されていません): ",
|
||||||
"Something went wrong, connection is closed": "何らかの問題で、接続が閉じられました",
|
"Something went wrong, connection is closed": "問題が発生したため、接続が閉じられました",
|
||||||
"Failed to connect to server": "サーバーへの接続に失敗しました",
|
"Failed to connect to server": "サーバーへの接続に失敗しました",
|
||||||
"Disconnected": "切断しました",
|
"Disconnected": "切断しました",
|
||||||
"New connection has been rejected with reason: ": "新規接続は次の理由で拒否されました: ",
|
"New connection has been rejected with reason: ": "新規接続は次の理由で拒否されました: ",
|
||||||
@ -16,11 +17,11 @@
|
|||||||
"noVNC encountered an error:": "noVNC でエラーが発生しました:",
|
"noVNC encountered an error:": "noVNC でエラーが発生しました:",
|
||||||
"Hide/Show the control bar": "コントロールバーを隠す/表示する",
|
"Hide/Show the control bar": "コントロールバーを隠す/表示する",
|
||||||
"Drag": "ドラッグ",
|
"Drag": "ドラッグ",
|
||||||
"Move/Drag Viewport": "ビューポートを移動/ドラッグ",
|
"Move/Drag viewport": "ビューポートを移動/ドラッグ",
|
||||||
"Keyboard": "キーボード",
|
"Keyboard": "キーボード",
|
||||||
"Show Keyboard": "キーボードを表示",
|
"Show keyboard": "キーボードを表示",
|
||||||
"Extra keys": "追加キー",
|
"Extra keys": "追加キー",
|
||||||
"Show Extra Keys": "追加キーを表示",
|
"Show extra keys": "追加キーを表示",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Ctrl キーをトグル",
|
"Toggle Ctrl": "Ctrl キーをトグル",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -41,15 +42,15 @@
|
|||||||
"Reset": "リセット",
|
"Reset": "リセット",
|
||||||
"Clipboard": "クリップボード",
|
"Clipboard": "クリップボード",
|
||||||
"Edit clipboard content in the textarea below.": "以下の入力欄からクリップボードの内容を編集できます。",
|
"Edit clipboard content in the textarea below.": "以下の入力欄からクリップボードの内容を編集できます。",
|
||||||
"Full Screen": "全画面表示",
|
"Full screen": "全画面表示",
|
||||||
"Settings": "設定",
|
"Settings": "設定",
|
||||||
"Shared Mode": "共有モード",
|
"Shared mode": "共有モード",
|
||||||
"View Only": "表示専用",
|
"View only": "表示専用",
|
||||||
"Clip to Window": "ウィンドウにクリップ",
|
"Clip to window": "ウィンドウにクリップ",
|
||||||
"Scaling Mode:": "スケーリングモード:",
|
"Scaling mode:": "スケーリングモード:",
|
||||||
"None": "なし",
|
"None": "なし",
|
||||||
"Local Scaling": "ローカルスケーリング",
|
"Local scaling": "ローカルでスケーリング",
|
||||||
"Remote Resizing": "リモートでリサイズ",
|
"Remote resizing": "リモートでリサイズ",
|
||||||
"Advanced": "高度",
|
"Advanced": "高度",
|
||||||
"Quality:": "品質:",
|
"Quality:": "品質:",
|
||||||
"Compression level:": "圧縮レベル:",
|
"Compression level:": "圧縮レベル:",
|
||||||
@ -59,9 +60,9 @@
|
|||||||
"Host:": "ホスト:",
|
"Host:": "ホスト:",
|
||||||
"Port:": "ポート:",
|
"Port:": "ポート:",
|
||||||
"Path:": "パス:",
|
"Path:": "パス:",
|
||||||
"Automatic Reconnect": "自動再接続",
|
"Automatic reconnect": "自動再接続",
|
||||||
"Reconnect Delay (ms):": "再接続する遅延 (ミリ秒):",
|
"Reconnect delay (ms):": "再接続する遅延 (ミリ秒):",
|
||||||
"Show Dot when No Cursor": "カーソルがないときにドットを表示する",
|
"Show dot when no cursor": "カーソルがないときにドットを表示する",
|
||||||
"Logging:": "ロギング:",
|
"Logging:": "ロギング:",
|
||||||
"Version:": "バージョン:",
|
"Version:": "バージョン:",
|
||||||
"Disconnect": "切断",
|
"Disconnect": "切断",
|
||||||
@ -75,6 +76,6 @@
|
|||||||
"Credentials": "資格情報",
|
"Credentials": "資格情報",
|
||||||
"Username:": "ユーザー名:",
|
"Username:": "ユーザー名:",
|
||||||
"Password:": "パスワード:",
|
"Password:": "パスワード:",
|
||||||
"Send Credentials": "資格情報を送信",
|
"Send credentials": "資格情報を送信",
|
||||||
"Cancel": "キャンセル"
|
"Cancel": "キャンセル"
|
||||||
}
|
}
|
||||||
@ -14,7 +14,7 @@
|
|||||||
"Password is required": "비밀번호가 필요합니다.",
|
"Password is required": "비밀번호가 필요합니다.",
|
||||||
"noVNC encountered an error:": "noVNC에 오류가 발생했습니다:",
|
"noVNC encountered an error:": "noVNC에 오류가 발생했습니다:",
|
||||||
"Hide/Show the control bar": "컨트롤 바 숨기기/보이기",
|
"Hide/Show the control bar": "컨트롤 바 숨기기/보이기",
|
||||||
"Move/Drag Viewport": "움직이기/드래그 뷰포트",
|
"Move/Drag viewport": "움직이기/드래그 뷰포트",
|
||||||
"viewport drag": "뷰포트 드래그",
|
"viewport drag": "뷰포트 드래그",
|
||||||
"Active Mouse Button": "마우스 버튼 활성화",
|
"Active Mouse Button": "마우스 버튼 활성화",
|
||||||
"No mousebutton": "마우스 버튼 없음",
|
"No mousebutton": "마우스 버튼 없음",
|
||||||
@ -22,9 +22,9 @@
|
|||||||
"Middle mousebutton": "중간 마우스 버튼",
|
"Middle mousebutton": "중간 마우스 버튼",
|
||||||
"Right mousebutton": "오른쪽 마우스 버튼",
|
"Right mousebutton": "오른쪽 마우스 버튼",
|
||||||
"Keyboard": "키보드",
|
"Keyboard": "키보드",
|
||||||
"Show Keyboard": "키보드 보이기",
|
"Show keyboard": "키보드 보이기",
|
||||||
"Extra keys": "기타 키들",
|
"Extra keys": "기타 키들",
|
||||||
"Show Extra Keys": "기타 키들 보이기",
|
"Show extra keys": "기타 키들 보이기",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Ctrl 켜기/끄기",
|
"Toggle Ctrl": "Ctrl 켜기/끄기",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -45,13 +45,13 @@
|
|||||||
"Clear": "지우기",
|
"Clear": "지우기",
|
||||||
"Fullscreen": "전체화면",
|
"Fullscreen": "전체화면",
|
||||||
"Settings": "설정",
|
"Settings": "설정",
|
||||||
"Shared Mode": "공유 모드",
|
"Shared mode": "공유 모드",
|
||||||
"View Only": "보기 전용",
|
"View only": "보기 전용",
|
||||||
"Clip to Window": "창에 클립",
|
"Clip to window": "창에 클립",
|
||||||
"Scaling Mode:": "스케일링 모드:",
|
"Scaling mode:": "스케일링 모드:",
|
||||||
"None": "없음",
|
"None": "없음",
|
||||||
"Local Scaling": "로컬 스케일링",
|
"Local scaling": "로컬 스케일링",
|
||||||
"Remote Resizing": "원격 크기 조절",
|
"Remote resizing": "원격 크기 조절",
|
||||||
"Advanced": "고급",
|
"Advanced": "고급",
|
||||||
"Repeater ID:": "중계 ID",
|
"Repeater ID:": "중계 ID",
|
||||||
"WebSocket": "웹소켓",
|
"WebSocket": "웹소켓",
|
||||||
@ -59,8 +59,8 @@
|
|||||||
"Host:": "호스트:",
|
"Host:": "호스트:",
|
||||||
"Port:": "포트:",
|
"Port:": "포트:",
|
||||||
"Path:": "위치:",
|
"Path:": "위치:",
|
||||||
"Automatic Reconnect": "자동 재연결",
|
"Automatic reconnect": "자동 재연결",
|
||||||
"Reconnect Delay (ms):": "재연결 지연 시간 (ms)",
|
"Reconnect delay (ms):": "재연결 지연 시간 (ms)",
|
||||||
"Logging:": "로깅",
|
"Logging:": "로깅",
|
||||||
"Disconnect": "연결 해제",
|
"Disconnect": "연결 해제",
|
||||||
"Connect": "연결",
|
"Connect": "연결",
|
||||||
|
|||||||
@ -49,8 +49,8 @@
|
|||||||
"Settings": "Instellingen",
|
"Settings": "Instellingen",
|
||||||
"Shared Mode": "Gedeelde Modus",
|
"Shared Mode": "Gedeelde Modus",
|
||||||
"View Only": "Alleen Kijken",
|
"View Only": "Alleen Kijken",
|
||||||
"Clip to Window": "Randen buiten venster afsnijden",
|
"Clip to window": "Randen buiten venster afsnijden",
|
||||||
"Scaling Mode:": "Schaalmodus:",
|
"Scaling mode:": "Schaalmodus:",
|
||||||
"None": "Geen",
|
"None": "Geen",
|
||||||
"Local Scaling": "Lokaal Schalen",
|
"Local Scaling": "Lokaal Schalen",
|
||||||
"Remote Resizing": "Op Afstand Formaat Wijzigen",
|
"Remote Resizing": "Op Afstand Formaat Wijzigen",
|
||||||
@ -63,7 +63,7 @@
|
|||||||
"Path:": "Pad:",
|
"Path:": "Pad:",
|
||||||
"Automatic Reconnect": "Automatisch Opnieuw Verbinden",
|
"Automatic Reconnect": "Automatisch Opnieuw Verbinden",
|
||||||
"Reconnect Delay (ms):": "Vertraging voor Opnieuw Verbinden (ms):",
|
"Reconnect Delay (ms):": "Vertraging voor Opnieuw Verbinden (ms):",
|
||||||
"Show Dot when No Cursor": "Geef stip weer indien geen cursor",
|
"Show dot when no cursor": "Geef stip weer indien geen cursor",
|
||||||
"Logging:": "Logmeldingen:",
|
"Logging:": "Logmeldingen:",
|
||||||
"Disconnect": "Verbinding verbreken",
|
"Disconnect": "Verbinding verbreken",
|
||||||
"Connect": "Verbinden",
|
"Connect": "Verbinden",
|
||||||
|
|||||||
@ -21,9 +21,9 @@
|
|||||||
"Middle mousebutton": "Środkowy przycisk myszy",
|
"Middle mousebutton": "Środkowy przycisk myszy",
|
||||||
"Right mousebutton": "Prawy przycisk myszy",
|
"Right mousebutton": "Prawy przycisk myszy",
|
||||||
"Keyboard": "Klawiatura",
|
"Keyboard": "Klawiatura",
|
||||||
"Show Keyboard": "Pokaż klawiaturę",
|
"Show keyboard": "Pokaż klawiaturę",
|
||||||
"Extra keys": "Przyciski dodatkowe",
|
"Extra keys": "Przyciski dodatkowe",
|
||||||
"Show Extra Keys": "Pokaż przyciski dodatkowe",
|
"Show extra keys": "Pokaż przyciski dodatkowe",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Przełącz Ctrl",
|
"Toggle Ctrl": "Przełącz Ctrl",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -49,8 +49,8 @@
|
|||||||
"Clip to Window": "Przytnij do Okna",
|
"Clip to Window": "Przytnij do Okna",
|
||||||
"Scaling Mode:": "Tryb Skalowania:",
|
"Scaling Mode:": "Tryb Skalowania:",
|
||||||
"None": "Brak",
|
"None": "Brak",
|
||||||
"Local Scaling": "Skalowanie lokalne",
|
"Local scaling": "Skalowanie lokalne",
|
||||||
"Remote Resizing": "Skalowanie zdalne",
|
"Remote resizing": "Skalowanie zdalne",
|
||||||
"Advanced": "Zaawansowane",
|
"Advanced": "Zaawansowane",
|
||||||
"Repeater ID:": "ID Repeatera:",
|
"Repeater ID:": "ID Repeatera:",
|
||||||
"WebSocket": "WebSocket",
|
"WebSocket": "WebSocket",
|
||||||
@ -58,8 +58,8 @@
|
|||||||
"Host:": "Host:",
|
"Host:": "Host:",
|
||||||
"Port:": "Port:",
|
"Port:": "Port:",
|
||||||
"Path:": "Ścieżka:",
|
"Path:": "Ścieżka:",
|
||||||
"Automatic Reconnect": "Automatycznie wznawiaj połączenie",
|
"Automatic reconnect": "Automatycznie wznawiaj połączenie",
|
||||||
"Reconnect Delay (ms):": "Opóźnienie wznawiania (ms):",
|
"Reconnect delay (ms):": "Opóźnienie wznawiania (ms):",
|
||||||
"Logging:": "Poziom logowania:",
|
"Logging:": "Poziom logowania:",
|
||||||
"Disconnect": "Rozłącz",
|
"Disconnect": "Rozłącz",
|
||||||
"Connect": "Połącz",
|
"Connect": "Połącz",
|
||||||
|
|||||||
@ -15,11 +15,11 @@
|
|||||||
"noVNC encountered an error:": "O noVNC encontrou um erro:",
|
"noVNC encountered an error:": "O noVNC encontrou um erro:",
|
||||||
"Hide/Show the control bar": "Esconder/mostrar a barra de controles",
|
"Hide/Show the control bar": "Esconder/mostrar a barra de controles",
|
||||||
"Drag": "Arrastar",
|
"Drag": "Arrastar",
|
||||||
"Move/Drag Viewport": "Mover/arrastar a janela",
|
"Move/Drag viewport": "Mover/arrastar a janela",
|
||||||
"Keyboard": "Teclado",
|
"Keyboard": "Teclado",
|
||||||
"Show Keyboard": "Mostrar teclado",
|
"Show keyboard": "Mostrar teclado",
|
||||||
"Extra keys": "Teclas adicionais",
|
"Extra keys": "Teclas adicionais",
|
||||||
"Show Extra Keys": "Mostar teclas adicionais",
|
"Show extra keys": "Mostar teclas adicionais",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Pressionar/soltar Ctrl",
|
"Toggle Ctrl": "Pressionar/soltar Ctrl",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -42,13 +42,13 @@
|
|||||||
"Clear": "Limpar",
|
"Clear": "Limpar",
|
||||||
"Fullscreen": "Tela cheia",
|
"Fullscreen": "Tela cheia",
|
||||||
"Settings": "Configurações",
|
"Settings": "Configurações",
|
||||||
"Shared Mode": "Modo compartilhado",
|
"Shared mode": "Modo compartilhado",
|
||||||
"View Only": "Apenas visualizar",
|
"View only": "Apenas visualizar",
|
||||||
"Clip to Window": "Recortar à janela",
|
"Clip to window": "Recortar à janela",
|
||||||
"Scaling Mode:": "Modo de dimensionamento:",
|
"Scaling mode:": "Modo de dimensionamento:",
|
||||||
"None": "Nenhum",
|
"None": "Nenhum",
|
||||||
"Local Scaling": "Local",
|
"Local scaling": "Local",
|
||||||
"Remote Resizing": "Remoto",
|
"Remote resizing": "Remoto",
|
||||||
"Advanced": "Avançado",
|
"Advanced": "Avançado",
|
||||||
"Quality:": "Qualidade:",
|
"Quality:": "Qualidade:",
|
||||||
"Compression level:": "Nível de compressão:",
|
"Compression level:": "Nível de compressão:",
|
||||||
@ -58,15 +58,15 @@
|
|||||||
"Host:": "Host:",
|
"Host:": "Host:",
|
||||||
"Port:": "Porta:",
|
"Port:": "Porta:",
|
||||||
"Path:": "Caminho:",
|
"Path:": "Caminho:",
|
||||||
"Automatic Reconnect": "Reconexão automática",
|
"Automatic reconnect": "Reconexão automática",
|
||||||
"Reconnect Delay (ms):": "Atraso da reconexão (ms)",
|
"Reconnect delay (ms):": "Atraso da reconexão (ms)",
|
||||||
"Show Dot when No Cursor": "Mostrar ponto quando não há cursor",
|
"Show dot when no cursor": "Mostrar ponto quando não há cursor",
|
||||||
"Logging:": "Registros:",
|
"Logging:": "Registros:",
|
||||||
"Version:": "Versão:",
|
"Version:": "Versão:",
|
||||||
"Disconnect": "Desconectar",
|
"Disconnect": "Desconectar",
|
||||||
"Connect": "Conectar",
|
"Connect": "Conectar",
|
||||||
"Username:": "Nome de usuário:",
|
"Username:": "Nome de usuário:",
|
||||||
"Password:": "Senha:",
|
"Password:": "Senha:",
|
||||||
"Send Credentials": "Enviar credenciais",
|
"Send credentials": "Enviar credenciais",
|
||||||
"Cancel": "Cancelar"
|
"Cancel": "Cancelar"
|
||||||
}
|
}
|
||||||
@ -15,9 +15,9 @@
|
|||||||
"noVNC encountered an error:": "Ошибка noVNC: ",
|
"noVNC encountered an error:": "Ошибка noVNC: ",
|
||||||
"Hide/Show the control bar": "Скрыть/Показать контрольную панель",
|
"Hide/Show the control bar": "Скрыть/Показать контрольную панель",
|
||||||
"Drag": "Переместить",
|
"Drag": "Переместить",
|
||||||
"Move/Drag Viewport": "Переместить окно",
|
"Move/Drag viewport": "Переместить окно",
|
||||||
"Keyboard": "Клавиатура",
|
"Keyboard": "Клавиатура",
|
||||||
"Show Keyboard": "Показать клавиатуру",
|
"Show keyboard": "Показать клавиатуру",
|
||||||
"Extra keys": "Дополнительные Кнопки",
|
"Extra keys": "Дополнительные Кнопки",
|
||||||
"Show Extra Keys": "Показать Дополнительные Кнопки",
|
"Show Extra Keys": "Показать Дополнительные Кнопки",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
@ -42,13 +42,13 @@
|
|||||||
"Clear": "Очистить",
|
"Clear": "Очистить",
|
||||||
"Fullscreen": "Во весь экран",
|
"Fullscreen": "Во весь экран",
|
||||||
"Settings": "Настройки",
|
"Settings": "Настройки",
|
||||||
"Shared Mode": "Общий режим",
|
"Shared mode": "Общий режим",
|
||||||
"View Only": "Только Просмотр",
|
"View Only": "Только Просмотр",
|
||||||
"Clip to Window": "В окно",
|
"Clip to window": "В окно",
|
||||||
"Scaling Mode:": "Масштаб:",
|
"Scaling mode:": "Масштаб:",
|
||||||
"None": "Нет",
|
"None": "Нет",
|
||||||
"Local Scaling": "Локальный масштаб",
|
"Local scaling": "Локальный масштаб",
|
||||||
"Remote Resizing": "Удаленная перенастройка размера",
|
"Remote resizing": "Удаленная перенастройка размера",
|
||||||
"Advanced": "Дополнительно",
|
"Advanced": "Дополнительно",
|
||||||
"Quality:": "Качество",
|
"Quality:": "Качество",
|
||||||
"Compression level:": "Уровень Сжатия",
|
"Compression level:": "Уровень Сжатия",
|
||||||
@ -58,9 +58,9 @@
|
|||||||
"Host:": "Сервер:",
|
"Host:": "Сервер:",
|
||||||
"Port:": "Порт:",
|
"Port:": "Порт:",
|
||||||
"Path:": "Путь:",
|
"Path:": "Путь:",
|
||||||
"Automatic Reconnect": "Автоматическое переподключение",
|
"Automatic reconnect": "Автоматическое переподключение",
|
||||||
"Reconnect Delay (ms):": "Задержка переподключения (мс):",
|
"Reconnect delay (ms):": "Задержка переподключения (мс):",
|
||||||
"Show Dot when No Cursor": "Показать точку вместо курсора",
|
"Show dot when no cursor": "Показать точку вместо курсора",
|
||||||
"Logging:": "Лог:",
|
"Logging:": "Лог:",
|
||||||
"Version:": "Версия",
|
"Version:": "Версия",
|
||||||
"Disconnect": "Отключение",
|
"Disconnect": "Отключение",
|
||||||
|
|||||||
@ -42,12 +42,12 @@
|
|||||||
"Reset": "Återställ",
|
"Reset": "Återställ",
|
||||||
"Clipboard": "Urklipp",
|
"Clipboard": "Urklipp",
|
||||||
"Edit clipboard content in the textarea below.": "Redigera urklippets innehåll i fältet nedan.",
|
"Edit clipboard content in the textarea below.": "Redigera urklippets innehåll i fältet nedan.",
|
||||||
"Full Screen": "Fullskärm",
|
"Full screen": "Fullskärm",
|
||||||
"Settings": "Inställningar",
|
"Settings": "Inställningar",
|
||||||
"Shared Mode": "Delat Läge",
|
"Shared Mode": "Delat Läge",
|
||||||
"View Only": "Endast Visning",
|
"View Only": "Endast Visning",
|
||||||
"Clip to Window": "Begränsa till Fönster",
|
"Clip to Window": "Begränsa till Fönster",
|
||||||
"Scaling Mode:": "Skalningsläge:",
|
"Scaling mode:": "Skalningsläge:",
|
||||||
"None": "Ingen",
|
"None": "Ingen",
|
||||||
"Local Scaling": "Lokal Skalning",
|
"Local Scaling": "Lokal Skalning",
|
||||||
"Remote Resizing": "Ändra Storlek",
|
"Remote Resizing": "Ändra Storlek",
|
||||||
@ -61,8 +61,8 @@
|
|||||||
"Port:": "Port:",
|
"Port:": "Port:",
|
||||||
"Path:": "Sökväg:",
|
"Path:": "Sökväg:",
|
||||||
"Automatic Reconnect": "Automatisk Återanslutning",
|
"Automatic Reconnect": "Automatisk Återanslutning",
|
||||||
"Reconnect Delay (ms):": "Fördröjning (ms):",
|
"Reconnect delay (ms):": "Fördröjning (ms):",
|
||||||
"Show Dot when No Cursor": "Visa prick när ingen muspekare finns",
|
"Show dot when no cursor": "Visa prick när ingen muspekare finns",
|
||||||
"Logging:": "Loggning:",
|
"Logging:": "Loggning:",
|
||||||
"Version:": "Version:",
|
"Version:": "Version:",
|
||||||
"Disconnect": "Koppla från",
|
"Disconnect": "Koppla från",
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
"Keyboard": "Klavye",
|
"Keyboard": "Klavye",
|
||||||
"Show Keyboard": "Klavye Düzenini Göster",
|
"Show Keyboard": "Klavye Düzenini Göster",
|
||||||
"Extra keys": "Ekstra tuşlar",
|
"Extra keys": "Ekstra tuşlar",
|
||||||
"Show Extra Keys": "Ekstra tuşları göster",
|
"Show extra keys": "Ekstra tuşları göster",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "Ctrl Değiştir ",
|
"Toggle Ctrl": "Ctrl Değiştir ",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
"Disconnect timeout": "超时断开",
|
"Disconnect timeout": "超时断开",
|
||||||
"noVNC encountered an error:": "noVNC 遇到一个错误:",
|
"noVNC encountered an error:": "noVNC 遇到一个错误:",
|
||||||
"Hide/Show the control bar": "显示/隐藏控制栏",
|
"Hide/Show the control bar": "显示/隐藏控制栏",
|
||||||
"Move/Drag Viewport": "移动/拖动窗口",
|
"Move/Drag viewport": "移动/拖动窗口",
|
||||||
"viewport drag": "窗口拖动",
|
"viewport drag": "窗口拖动",
|
||||||
"Active Mouse Button": "启动鼠标按键",
|
"Active Mouse Button": "启动鼠标按键",
|
||||||
"No mousebutton": "禁用鼠标按键",
|
"No mousebutton": "禁用鼠标按键",
|
||||||
@ -18,9 +18,9 @@
|
|||||||
"Middle mousebutton": "鼠标中键",
|
"Middle mousebutton": "鼠标中键",
|
||||||
"Right mousebutton": "鼠标右键",
|
"Right mousebutton": "鼠标右键",
|
||||||
"Keyboard": "键盘",
|
"Keyboard": "键盘",
|
||||||
"Show Keyboard": "显示键盘",
|
"Show keyboard": "显示键盘",
|
||||||
"Extra keys": "额外按键",
|
"Extra keys": "额外按键",
|
||||||
"Show Extra Keys": "显示额外按键",
|
"Show extra keys": "显示额外按键",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "切换 Ctrl",
|
"Toggle Ctrl": "切换 Ctrl",
|
||||||
"Edit clipboard content in the textarea below.": "在下面的文本区域中编辑剪贴板内容。",
|
"Edit clipboard content in the textarea below.": "在下面的文本区域中编辑剪贴板内容。",
|
||||||
@ -43,14 +43,14 @@
|
|||||||
"Fullscreen": "全屏",
|
"Fullscreen": "全屏",
|
||||||
"Settings": "设置",
|
"Settings": "设置",
|
||||||
"Encrypt": "加密",
|
"Encrypt": "加密",
|
||||||
"Shared Mode": "分享模式",
|
"Shared mode": "分享模式",
|
||||||
"View Only": "仅查看",
|
"View only": "仅查看",
|
||||||
"Clip to Window": "限制/裁切窗口大小",
|
"Clip to window": "限制/裁切窗口大小",
|
||||||
"Scaling Mode:": "缩放模式:",
|
"Scaling mode:": "缩放模式:",
|
||||||
"None": "无",
|
"None": "无",
|
||||||
"Local Scaling": "本地缩放",
|
"Local scaling": "本地缩放",
|
||||||
"Local Downscaling": "降低本地尺寸",
|
"Local Downscaling": "降低本地尺寸",
|
||||||
"Remote Resizing": "远程调整大小",
|
"Remote resizing": "远程调整大小",
|
||||||
"Advanced": "高级",
|
"Advanced": "高级",
|
||||||
"Local Cursor": "本地光标",
|
"Local Cursor": "本地光标",
|
||||||
"Repeater ID:": "中继站 ID",
|
"Repeater ID:": "中继站 ID",
|
||||||
@ -58,8 +58,8 @@
|
|||||||
"Host:": "主机:",
|
"Host:": "主机:",
|
||||||
"Port:": "端口:",
|
"Port:": "端口:",
|
||||||
"Path:": "路径:",
|
"Path:": "路径:",
|
||||||
"Automatic Reconnect": "自动重新连接",
|
"Automatic reconnect": "自动重新连接",
|
||||||
"Reconnect Delay (ms):": "重新连接间隔 (ms):",
|
"Reconnect delay (ms):": "重新连接间隔 (ms):",
|
||||||
"Logging:": "日志级别:",
|
"Logging:": "日志级别:",
|
||||||
"Disconnect": "断开连接",
|
"Disconnect": "断开连接",
|
||||||
"Connect": "连接",
|
"Connect": "连接",
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
"Password is required": "請提供密碼",
|
"Password is required": "請提供密碼",
|
||||||
"noVNC encountered an error:": "noVNC 遇到一個錯誤:",
|
"noVNC encountered an error:": "noVNC 遇到一個錯誤:",
|
||||||
"Hide/Show the control bar": "顯示/隱藏控制列",
|
"Hide/Show the control bar": "顯示/隱藏控制列",
|
||||||
"Move/Drag Viewport": "拖放顯示範圍",
|
"Move/Drag viewport": "拖放顯示範圍",
|
||||||
"viewport drag": "顯示範圍拖放",
|
"viewport drag": "顯示範圍拖放",
|
||||||
"Active Mouse Button": "啟用滑鼠按鍵",
|
"Active Mouse Button": "啟用滑鼠按鍵",
|
||||||
"No mousebutton": "無滑鼠按鍵",
|
"No mousebutton": "無滑鼠按鍵",
|
||||||
@ -22,9 +22,9 @@
|
|||||||
"Middle mousebutton": "滑鼠中鍵",
|
"Middle mousebutton": "滑鼠中鍵",
|
||||||
"Right mousebutton": "滑鼠右鍵",
|
"Right mousebutton": "滑鼠右鍵",
|
||||||
"Keyboard": "鍵盤",
|
"Keyboard": "鍵盤",
|
||||||
"Show Keyboard": "顯示鍵盤",
|
"Show keyboard": "顯示鍵盤",
|
||||||
"Extra keys": "額外按鍵",
|
"Extra keys": "額外按鍵",
|
||||||
"Show Extra Keys": "顯示額外按鍵",
|
"Show extra keys": "顯示額外按鍵",
|
||||||
"Ctrl": "Ctrl",
|
"Ctrl": "Ctrl",
|
||||||
"Toggle Ctrl": "切換 Ctrl",
|
"Toggle Ctrl": "切換 Ctrl",
|
||||||
"Alt": "Alt",
|
"Alt": "Alt",
|
||||||
@ -45,13 +45,13 @@
|
|||||||
"Clear": "清除",
|
"Clear": "清除",
|
||||||
"Fullscreen": "全螢幕",
|
"Fullscreen": "全螢幕",
|
||||||
"Settings": "設定",
|
"Settings": "設定",
|
||||||
"Shared Mode": "分享模式",
|
"Shared mode": "分享模式",
|
||||||
"View Only": "僅檢視",
|
"View only": "僅檢視",
|
||||||
"Clip to Window": "限制/裁切視窗大小",
|
"Clip to window": "限制/裁切視窗大小",
|
||||||
"Scaling Mode:": "縮放模式:",
|
"Scaling mode:": "縮放模式:",
|
||||||
"None": "無",
|
"None": "無",
|
||||||
"Local Scaling": "本機縮放",
|
"Local scaling": "本機縮放",
|
||||||
"Remote Resizing": "遠端調整大小",
|
"Remote resizing": "遠端調整大小",
|
||||||
"Advanced": "進階",
|
"Advanced": "進階",
|
||||||
"Repeater ID:": "中繼站 ID",
|
"Repeater ID:": "中繼站 ID",
|
||||||
"WebSocket": "WebSocket",
|
"WebSocket": "WebSocket",
|
||||||
@ -59,8 +59,8 @@
|
|||||||
"Host:": "主機:",
|
"Host:": "主機:",
|
||||||
"Port:": "連接埠:",
|
"Port:": "連接埠:",
|
||||||
"Path:": "路徑:",
|
"Path:": "路徑:",
|
||||||
"Automatic Reconnect": "自動重新連線",
|
"Automatic reconnect": "自動重新連線",
|
||||||
"Reconnect Delay (ms):": "重新連線間隔 (ms):",
|
"Reconnect delay (ms):": "重新連線間隔 (ms):",
|
||||||
"Logging:": "日誌級別:",
|
"Logging:": "日誌級別:",
|
||||||
"Disconnect": "中斷連線",
|
"Disconnect": "中斷連線",
|
||||||
"Connect": "連線",
|
"Connect": "連線",
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Localization Utilities
|
* Localization utilities
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export class Localizer {
|
export class Localizer {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC base CSS
|
* noVNC base CSS
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
||||||
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
||||||
*/
|
*/
|
||||||
@ -213,7 +213,7 @@ html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------
|
/* ----------------------------------------
|
||||||
* Control Bar
|
* Control bar
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -629,13 +629,13 @@ html {
|
|||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Connection Controls */
|
/* Connection controls */
|
||||||
:root:not(.noVNC_connected) #noVNC_disconnect_button {
|
:root:not(.noVNC_connected) #noVNC_disconnect_button {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------
|
/* ----------------------------------------
|
||||||
* Status Dialog
|
* Status dialog
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -701,7 +701,7 @@ html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------
|
/* ----------------------------------------
|
||||||
* Connect Dialog
|
* Connect dialog
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -770,7 +770,7 @@ html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------
|
/* ----------------------------------------
|
||||||
* Server verification Dialog
|
* Server verification dialog
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -787,7 +787,7 @@ html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------
|
/* ----------------------------------------
|
||||||
* Password Dialog
|
* Password dialog
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -806,7 +806,7 @@ html {
|
|||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------
|
/* ----------------------------------------
|
||||||
* Main Area
|
* Main area
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC general input element CSS
|
* noVNC general input element CSS
|
||||||
* Copyright (C) 2022 The noVNC Authors
|
* Copyright (C) 2022 The noVNC authors
|
||||||
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
||||||
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
@ -27,7 +27,7 @@ export function initLogging(level) {
|
|||||||
// the url can be requested in the following way:
|
// the url can be requested in the following way:
|
||||||
// https://www.example.com#myqueryparam=myvalue&password=secretvalue
|
// https://www.example.com#myqueryparam=myvalue&password=secretvalue
|
||||||
//
|
//
|
||||||
// Even Mixing public and non public parameters will work:
|
// Even mixing public and non public parameters will work:
|
||||||
// https://www.example.com?nonsecretparam=example.com#password=secretvalue
|
// https://www.example.com?nonsecretparam=example.com#password=secretvalue
|
||||||
export function getQueryVar(name, defVal) {
|
export function getQueryVar(name, defVal) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2021 The noVNC Authors
|
* Copyright (C) 2021 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2024 The noVNC Authors
|
* Copyright (C) 2024 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)
|
* (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2024 The noVNC Authors
|
* Copyright (C) 2024 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2021 The noVNC Authors
|
* Copyright (C) 2021 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2020 The noVNC Authors
|
* Copyright (C) 2020 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2020 The noVNC Authors
|
* Copyright (C) 2020 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2020 The noVNC Authors
|
* Copyright (C) 2020 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
11
core/rfb.js
11
core/rfb.js
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2020 The noVNC Authors
|
* Copyright (C) 2020 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
@ -720,6 +720,7 @@ export default class RFB extends EventTargetMixin {
|
|||||||
currentHeight == this._expectedClientHeight;
|
currentHeight == this._expectedClientHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle browser window resizes
|
||||||
_handleResize() {
|
_handleResize() {
|
||||||
// Don't change anything if the client size is already as expected
|
// Don't change anything if the client size is already as expected
|
||||||
if (this._clientHasExpectedSize()) {
|
if (this._clientHasExpectedSize()) {
|
||||||
@ -730,6 +731,7 @@ export default class RFB extends EventTargetMixin {
|
|||||||
window.requestAnimationFrame(() => {
|
window.requestAnimationFrame(() => {
|
||||||
this._updateClip();
|
this._updateClip();
|
||||||
this._updateScale();
|
this._updateScale();
|
||||||
|
this._saveExpectedClientSize();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this._resizeSession) {
|
if (this._resizeSession) {
|
||||||
@ -1378,7 +1380,7 @@ export default class RFB extends EventTargetMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Message Handlers
|
// Message handlers
|
||||||
|
|
||||||
_negotiateProtocolVersion() {
|
_negotiateProtocolVersion() {
|
||||||
if (this._sock.rQwait("version", 12)) {
|
if (this._sock.rQwait("version", 12)) {
|
||||||
@ -2427,7 +2429,7 @@ export default class RFB extends EventTargetMixin {
|
|||||||
|
|
||||||
switch (xvpMsg) {
|
switch (xvpMsg) {
|
||||||
case 0: // XVP_FAIL
|
case 0: // XVP_FAIL
|
||||||
Log.Error("XVP Operation Failed");
|
Log.Error("XVP operation failed");
|
||||||
break;
|
break;
|
||||||
case 1: // XVP_INIT
|
case 1: // XVP_INIT
|
||||||
this._rfbXvpVer = xvpVer;
|
this._rfbXvpVer = xvpVer;
|
||||||
@ -2756,7 +2758,7 @@ export default class RFB extends EventTargetMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_handleLedEvent() {
|
_handleLedEvent() {
|
||||||
if (this._sock.rQwait("LED Status", 1)) {
|
if (this._sock.rQwait("LED status", 1)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2871,6 +2873,7 @@ export default class RFB extends EventTargetMixin {
|
|||||||
this._fbWidth, this._fbHeight);
|
this._fbWidth, this._fbHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle resize-messages from the server
|
||||||
_resize(width, height) {
|
_resize(width, height) {
|
||||||
this._fbWidth = width;
|
this._fbWidth = width;
|
||||||
this._fbHeight = height;
|
this._fbHeight = height;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
@ -9,6 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import * as Log from './logging.js';
|
import * as Log from './logging.js';
|
||||||
|
import Base64 from '../base64.js';
|
||||||
|
|
||||||
// Touch detection
|
// Touch detection
|
||||||
export let isTouchDevice = ('ontouchstart' in document.documentElement) ||
|
export let isTouchDevice = ('ontouchstart' in document.documentElement) ||
|
||||||
@ -74,7 +75,7 @@ export let supportsWebCodecsH264Decode = false;
|
|||||||
|
|
||||||
async function _checkWebCodecsH264DecodeSupport() {
|
async function _checkWebCodecsH264DecodeSupport() {
|
||||||
if (!('VideoDecoder' in window)) {
|
if (!('VideoDecoder' in window)) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We'll need to make do with some placeholders here
|
// We'll need to make do with some placeholders here
|
||||||
@ -85,10 +86,70 @@ async function _checkWebCodecsH264DecodeSupport() {
|
|||||||
optimizeForLatency: true,
|
optimizeForLatency: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = await VideoDecoder.isConfigSupported(config);
|
let support = await VideoDecoder.isConfigSupported(config);
|
||||||
supportsWebCodecsH264Decode = result.supported;
|
if (!support.supported) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Firefox incorrectly reports supports for H.264 under some
|
||||||
|
// circumstances, so we need to actually test a real frame
|
||||||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=1932392
|
||||||
|
|
||||||
|
const data = new Uint8Array(Base64.decode(
|
||||||
|
'AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4Hc' +
|
||||||
|
'Rem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5Zjkg' +
|
||||||
|
'LSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIz' +
|
||||||
|
'IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9u' +
|
||||||
|
'czogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4' +
|
||||||
|
'MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4' +
|
||||||
|
'ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4' +
|
||||||
|
'OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJv' +
|
||||||
|
'bWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0x' +
|
||||||
|
'IHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9' +
|
||||||
|
'MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVz' +
|
||||||
|
'PTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNj' +
|
||||||
|
'ZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9' +
|
||||||
|
'YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAu' +
|
||||||
|
'NjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFx' +
|
||||||
|
'PTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw=='));
|
||||||
|
|
||||||
|
let gotframe = false;
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
let decoder = new VideoDecoder({
|
||||||
|
output: (frame) => { gotframe = true; },
|
||||||
|
error: (e) => { error = e; },
|
||||||
|
});
|
||||||
|
let chunk = new EncodedVideoChunk({
|
||||||
|
timestamp: 0,
|
||||||
|
type: 'key',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
|
||||||
|
decoder.configure(config);
|
||||||
|
decoder.decode(chunk);
|
||||||
|
try {
|
||||||
|
await decoder.flush();
|
||||||
|
} catch (e) {
|
||||||
|
// Firefox incorrectly throws an exception here
|
||||||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=1932566
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Firefox fails to deliver the error on Windows, so we need to
|
||||||
|
// check if we got a frame instead
|
||||||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=1932579
|
||||||
|
if (!gotframe) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error !== null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
_checkWebCodecsH264DecodeSupport();
|
supportsWebCodecsH264Decode = await _checkWebCodecsH264DecodeSupport();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The functions for detection of platforms and browsers below are exported
|
* The functions for detection of platforms and browsers below are exported
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2020 The noVNC Authors
|
* Copyright (C) 2020 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2020 The noVNC Authors
|
* Copyright (C) 2020 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* See README.md for usage and integration instructions.
|
* See README.md for usage and integration instructions.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Websock: high-performance buffering wrapper
|
* Websock: high-performance buffering wrapper
|
||||||
* Copyright (C) 2019 The noVNC Authors
|
* Copyright (C) 2019 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*
|
*
|
||||||
* Websock is similar to the standard WebSocket / RTCDataChannel object
|
* Websock is similar to the standard WebSocket / RTCDataChannel object
|
||||||
@ -70,7 +70,7 @@ export default class Websock {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getters and Setters
|
// Getters and setters
|
||||||
|
|
||||||
get readyState() {
|
get readyState() {
|
||||||
let subState;
|
let subState;
|
||||||
@ -94,7 +94,7 @@ export default class Websock {
|
|||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Receive Queue
|
// Receive queue
|
||||||
rQpeek8() {
|
rQpeek8() {
|
||||||
return this._rQ[this._rQi];
|
return this._rQ[this._rQi];
|
||||||
}
|
}
|
||||||
@ -173,7 +173,7 @@ export default class Websock {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send Queue
|
// Send queue
|
||||||
|
|
||||||
sQpush8(num) {
|
sQpush8(num) {
|
||||||
this._sQensureSpace(1);
|
this._sQensureSpace(1);
|
||||||
@ -227,7 +227,7 @@ export default class Websock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Event Handlers
|
// Event handlers
|
||||||
off(evt) {
|
off(evt) {
|
||||||
this._eventHandlers[evt] = () => {};
|
this._eventHandlers[evt] = () => {};
|
||||||
}
|
}
|
||||||
@ -325,7 +325,7 @@ export default class Websock {
|
|||||||
if (this._rQbufferSize > MAX_RQ_GROW_SIZE) {
|
if (this._rQbufferSize > MAX_RQ_GROW_SIZE) {
|
||||||
this._rQbufferSize = MAX_RQ_GROW_SIZE;
|
this._rQbufferSize = MAX_RQ_GROW_SIZE;
|
||||||
if (this._rQbufferSize - (this._rQlen - this._rQi) < minFit) {
|
if (this._rQbufferSize - (this._rQlen - this._rQi) < minFit) {
|
||||||
throw new Error("Receive Queue buffer exceeded " + MAX_RQ_GROW_SIZE + " bytes, and the new message could not fit");
|
throw new Error("Receive queue buffer exceeded " + MAX_RQ_GROW_SIZE + " bytes, and the new message could not fit");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# 1. Internal Modules
|
# 1. Internal modules
|
||||||
|
|
||||||
The noVNC client is composed of several internal modules that handle
|
The noVNC client is composed of several internal modules that handle
|
||||||
rendering, input, networking, etc. Each of the modules is designed to
|
rendering, input, networking, etc. Each of the modules is designed to
|
||||||
@ -9,7 +9,7 @@ stable, and this documentation is not maintained as well as the
|
|||||||
official external API.
|
official external API.
|
||||||
|
|
||||||
|
|
||||||
## 1.1 Module List
|
## 1.1 Module list
|
||||||
|
|
||||||
* __Keyboard__ (core/input/keyboard.js): Keyboard input event handler with
|
* __Keyboard__ (core/input/keyboard.js): Keyboard input event handler with
|
||||||
non-US keyboard support. Translates keyDown and keyUp events to X11
|
non-US keyboard support. Translates keyDown and keyUp events to X11
|
||||||
@ -32,9 +32,9 @@ callback event name, and the callback function.
|
|||||||
|
|
||||||
## 2. Modules
|
## 2. Modules
|
||||||
|
|
||||||
## 2.1 Keyboard Module
|
## 2.1 Keyboard module
|
||||||
|
|
||||||
### 2.1.1 Configuration Attributes
|
### 2.1.1 Configuration attributes
|
||||||
|
|
||||||
None
|
None
|
||||||
|
|
||||||
@ -52,9 +52,9 @@ None
|
|||||||
| onkeypress | (keysym, code, down) | Handler for key press/release
|
| onkeypress | (keysym, code, down) | Handler for key press/release
|
||||||
|
|
||||||
|
|
||||||
## 2.2 Display Module
|
## 2.2 Display module
|
||||||
|
|
||||||
### 2.2.1 Configuration Attributes
|
### 2.2.1 Configuration attributes
|
||||||
|
|
||||||
| name | type | mode | default | description
|
| name | type | mode | default | description
|
||||||
| ------------ | ----- | ---- | ------- | ------------
|
| ------------ | ----- | ---- | ------- | ------------
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Embedding and Deploying noVNC Application
|
# Embedding and deploying noVNC application
|
||||||
|
|
||||||
This document describes how to embed and deploy the noVNC application, which
|
This document describes how to embed and deploy the noVNC application, which
|
||||||
includes settings and a full user interface. If you are looking for
|
includes settings and a full user interface. If you are looking for
|
||||||
@ -71,8 +71,8 @@ query string. Currently the following options are available:
|
|||||||
* `logging` - The console log level. Can be one of `error`, `warn`, `info` or
|
* `logging` - The console log level. Can be one of `error`, `warn`, `info` or
|
||||||
`debug`.
|
`debug`.
|
||||||
|
|
||||||
## HTTP Serving Considerations
|
## HTTP serving considerations
|
||||||
### Browser Cache Issue
|
### Browser cache issue
|
||||||
|
|
||||||
If you serve noVNC files using a web server that provides an ETag header, and
|
If you serve noVNC files using a web server that provides an ETag header, and
|
||||||
include any options in the query string, a nasty browser cache issue can bite
|
include any options in the query string, a nasty browser cache issue can bite
|
||||||
@ -84,7 +84,7 @@ to always revalidate cached files using conditional requests. The correct
|
|||||||
semantics are achieved via the (confusingly named) `Cache-Control: no-cache`
|
semantics are achieved via the (confusingly named) `Cache-Control: no-cache`
|
||||||
header that needs to be provided in the web server responses.
|
header that needs to be provided in the web server responses.
|
||||||
|
|
||||||
### Example Server Configurations
|
### Example server configurations
|
||||||
|
|
||||||
Apache:
|
Apache:
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ noVNC includes a small example application called `vnc_lite.html`. This does
|
|||||||
not make use of all the features of noVNC, but is a good start to see how to
|
not make use of all the features of noVNC, but is a good start to see how to
|
||||||
do things.
|
do things.
|
||||||
|
|
||||||
## Conversion of Modules
|
## Conversion of modules
|
||||||
|
|
||||||
noVNC is written using ECMAScript 6 modules. This is not supported by older
|
noVNC is written using ECMAScript 6 modules. This is not supported by older
|
||||||
versions of Node.js. To use noVNC with those older versions of Node.js the
|
versions of Node.js. To use noVNC with those older versions of Node.js the
|
||||||
|
|||||||
@ -30,7 +30,7 @@ provides a cut-and-paste URL to go to.
|
|||||||
active connections
|
active connections
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
The noVNC Authors
|
The noVNC authors
|
||||||
https://github.com/novnc/noVNC
|
https://github.com/novnc/noVNC
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
|||||||
@ -5,11 +5,11 @@ export default [
|
|||||||
js.configs.recommended,
|
js.configs.recommended,
|
||||||
{
|
{
|
||||||
languageOptions: {
|
languageOptions: {
|
||||||
ecmaVersion: 2020,
|
ecmaVersion: 2022,
|
||||||
sourceType: "module",
|
sourceType: "module",
|
||||||
globals: {
|
globals: {
|
||||||
...globals.browser,
|
...globals.browser,
|
||||||
...globals.es2020,
|
...globals.es2022,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ignores: ["**/xtscancodes.js"],
|
ignores: ["**/xtscancodes.js"],
|
||||||
|
|||||||
@ -56,8 +56,7 @@
|
|||||||
"karma-safari-launcher": "latest",
|
"karma-safari-launcher": "latest",
|
||||||
"karma-script-launcher": "latest",
|
"karma-script-launcher": "latest",
|
||||||
"mocha": "latest",
|
"mocha": "latest",
|
||||||
"node-getopt": "latest",
|
"pofile": "latest",
|
||||||
"po2json": "latest",
|
|
||||||
"sinon": "latest",
|
"sinon": "latest",
|
||||||
"sinon-chai": "latest"
|
"sinon-chai": "latest"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -19,7 +19,7 @@ update-js: $(JSONFILES)
|
|||||||
|
|
||||||
update-pot:
|
update-pot:
|
||||||
xgettext --output=noVNC.js.pot \
|
xgettext --output=noVNC.js.pot \
|
||||||
--copyright-holder="The noVNC Authors" \
|
--copyright-holder="The noVNC authors" \
|
||||||
--package-name="noVNC" \
|
--package-name="noVNC" \
|
||||||
--package-version="$(VERSION)" \
|
--package-version="$(VERSION)" \
|
||||||
--msgid-bugs-address="novnc@googlegroups.com" \
|
--msgid-bugs-address="novnc@googlegroups.com" \
|
||||||
|
|||||||
26
po/cs.po
26
po/cs.po
@ -1,5 +1,5 @@
|
|||||||
# Czech translations for noVNC package.
|
# Czech translations for noVNC package.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Petr <petr@kle.cz>, 2018.
|
# Petr <petr@kle.cz>, 2018.
|
||||||
#
|
#
|
||||||
@ -78,7 +78,7 @@ msgid "Hide/Show the control bar"
|
|||||||
msgstr "Skrýt/zobrazit ovládací panel"
|
msgstr "Skrýt/zobrazit ovládací panel"
|
||||||
|
|
||||||
#: ../vnc.html:101
|
#: ../vnc.html:101
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "Přesunout/přetáhnout výřez"
|
msgstr "Přesunout/přetáhnout výřez"
|
||||||
|
|
||||||
#: ../vnc.html:101
|
#: ../vnc.html:101
|
||||||
@ -110,7 +110,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Klávesnice"
|
msgstr "Klávesnice"
|
||||||
|
|
||||||
#: ../vnc.html:119
|
#: ../vnc.html:119
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Zobrazit klávesnici"
|
msgstr "Zobrazit klávesnici"
|
||||||
|
|
||||||
#: ../vnc.html:126
|
#: ../vnc.html:126
|
||||||
@ -118,7 +118,7 @@ msgid "Extra keys"
|
|||||||
msgstr "Extra klávesy"
|
msgstr "Extra klávesy"
|
||||||
|
|
||||||
#: ../vnc.html:126
|
#: ../vnc.html:126
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "Zobrazit extra klávesy"
|
msgstr "Zobrazit extra klávesy"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
@ -202,19 +202,19 @@ msgid "Settings"
|
|||||||
msgstr "Nastavení"
|
msgstr "Nastavení"
|
||||||
|
|
||||||
#: ../vnc.html:197
|
#: ../vnc.html:197
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "Sdílený režim"
|
msgstr "Sdílený režim"
|
||||||
|
|
||||||
#: ../vnc.html:200
|
#: ../vnc.html:200
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "Pouze prohlížení"
|
msgstr "Pouze prohlížení"
|
||||||
|
|
||||||
#: ../vnc.html:204
|
#: ../vnc.html:204
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "Přizpůsobit oknu"
|
msgstr "Přizpůsobit oknu"
|
||||||
|
|
||||||
#: ../vnc.html:207
|
#: ../vnc.html:207
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Přizpůsobení velikosti"
|
msgstr "Přizpůsobení velikosti"
|
||||||
|
|
||||||
#: ../vnc.html:209
|
#: ../vnc.html:209
|
||||||
@ -222,11 +222,11 @@ msgid "None"
|
|||||||
msgstr "Žádné"
|
msgstr "Žádné"
|
||||||
|
|
||||||
#: ../vnc.html:210
|
#: ../vnc.html:210
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "Místní"
|
msgstr "Místní"
|
||||||
|
|
||||||
#: ../vnc.html:211
|
#: ../vnc.html:211
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Vzdálené"
|
msgstr "Vzdálené"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:216
|
||||||
@ -258,15 +258,15 @@ msgid "Path:"
|
|||||||
msgstr "Cesta"
|
msgstr "Cesta"
|
||||||
|
|
||||||
#: ../vnc.html:244
|
#: ../vnc.html:244
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Automatická obnova připojení"
|
msgstr "Automatická obnova připojení"
|
||||||
|
|
||||||
#: ../vnc.html:247
|
#: ../vnc.html:247
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Zpoždění připojení (ms)"
|
msgstr "Zpoždění připojení (ms)"
|
||||||
|
|
||||||
#: ../vnc.html:252
|
#: ../vnc.html:252
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "Tečka místo chybějícího kurzoru myši"
|
msgstr "Tečka místo chybějícího kurzoru myši"
|
||||||
|
|
||||||
#: ../vnc.html:257
|
#: ../vnc.html:257
|
||||||
|
|||||||
24
po/de.po
24
po/de.po
@ -1,6 +1,6 @@
|
|||||||
# German translations for noVNC package
|
# German translations for noVNC package
|
||||||
# German translation for noVNC.
|
# German translation for noVNC.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Loek Janssen <loekjanssen@gmail.com>, 2016.
|
# Loek Janssen <loekjanssen@gmail.com>, 2016.
|
||||||
#
|
#
|
||||||
@ -76,7 +76,7 @@ msgid "Hide/Show the control bar"
|
|||||||
msgstr "Kontrollleiste verstecken/anzeigen"
|
msgstr "Kontrollleiste verstecken/anzeigen"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:106
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "Ansichtsfenster verschieben/ziehen"
|
msgstr "Ansichtsfenster verschieben/ziehen"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:106
|
||||||
@ -108,7 +108,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
#: ../vnc.html:124
|
#: ../vnc.html:124
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Tastatur anzeigen"
|
msgstr "Tastatur anzeigen"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
@ -116,7 +116,7 @@ msgid "Extra keys"
|
|||||||
msgstr "Zusatztasten"
|
msgstr "Zusatztasten"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "Zusatztasten anzeigen"
|
msgstr "Zusatztasten anzeigen"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:136
|
||||||
@ -200,19 +200,19 @@ msgid "Settings"
|
|||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
#: ../vnc.html:202
|
#: ../vnc.html:202
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "Geteilter Modus"
|
msgstr "Geteilter Modus"
|
||||||
|
|
||||||
#: ../vnc.html:205
|
#: ../vnc.html:205
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "Nur betrachten"
|
msgstr "Nur betrachten"
|
||||||
|
|
||||||
#: ../vnc.html:209
|
#: ../vnc.html:209
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "Auf Fenster begrenzen"
|
msgstr "Auf Fenster begrenzen"
|
||||||
|
|
||||||
#: ../vnc.html:212
|
#: ../vnc.html:212
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Skalierungsmodus:"
|
msgstr "Skalierungsmodus:"
|
||||||
|
|
||||||
#: ../vnc.html:214
|
#: ../vnc.html:214
|
||||||
@ -220,11 +220,11 @@ msgid "None"
|
|||||||
msgstr "Keiner"
|
msgstr "Keiner"
|
||||||
|
|
||||||
#: ../vnc.html:215
|
#: ../vnc.html:215
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "Lokales skalieren"
|
msgstr "Lokales skalieren"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:216
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Serverseitiges skalieren"
|
msgstr "Serverseitiges skalieren"
|
||||||
|
|
||||||
#: ../vnc.html:221
|
#: ../vnc.html:221
|
||||||
@ -256,11 +256,11 @@ msgid "Path:"
|
|||||||
msgstr "Pfad:"
|
msgstr "Pfad:"
|
||||||
|
|
||||||
#: ../vnc.html:249
|
#: ../vnc.html:249
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Automatisch wiederverbinden"
|
msgstr "Automatisch wiederverbinden"
|
||||||
|
|
||||||
#: ../vnc.html:252
|
#: ../vnc.html:252
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Wiederverbindungsverzögerung (ms):"
|
msgstr "Wiederverbindungsverzögerung (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:258
|
#: ../vnc.html:258
|
||||||
|
|||||||
2
po/el.po
2
po/el.po
@ -1,5 +1,5 @@
|
|||||||
# Greek translations for noVNC package.
|
# Greek translations for noVNC package.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Giannis Kosmas <kosmasgiannis@gmail.com>, 2016.
|
# Giannis Kosmas <kosmasgiannis@gmail.com>, 2016.
|
||||||
#
|
#
|
||||||
|
|||||||
18
po/es.po
18
po/es.po
@ -1,6 +1,6 @@
|
|||||||
# Spanish translations for noVNC package
|
# Spanish translations for noVNC package
|
||||||
# Traducciones al español para el paquete noVNC.
|
# Traducciones al español para el paquete noVNC.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Juanjo Diaz <juanjo.diazmo@gmail.com>, 2018.
|
# Juanjo Diaz <juanjo.diazmo@gmail.com>, 2018.
|
||||||
# Adrian Scillato <ascillato@gmail.com>, 2021.
|
# Adrian Scillato <ascillato@gmail.com>, 2021.
|
||||||
@ -64,7 +64,7 @@ msgid "Hide/Show the control bar"
|
|||||||
msgstr "Ocultar/Mostrar la barra de control"
|
msgstr "Ocultar/Mostrar la barra de control"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:106
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "Mover/Arrastrar la ventana"
|
msgstr "Mover/Arrastrar la ventana"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:106
|
||||||
@ -96,7 +96,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#: ../vnc.html:124
|
#: ../vnc.html:124
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Mostrar teclado"
|
msgstr "Mostrar teclado"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
@ -196,15 +196,15 @@ msgid "Shared Mode"
|
|||||||
msgstr "Modo Compartido"
|
msgstr "Modo Compartido"
|
||||||
|
|
||||||
#: ../vnc.html:205
|
#: ../vnc.html:205
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "Solo visualización"
|
msgstr "Solo visualización"
|
||||||
|
|
||||||
#: ../vnc.html:209
|
#: ../vnc.html:209
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "Recortar al tamaño de la ventana"
|
msgstr "Recortar al tamaño de la ventana"
|
||||||
|
|
||||||
#: ../vnc.html:212
|
#: ../vnc.html:212
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Modo de escalado:"
|
msgstr "Modo de escalado:"
|
||||||
|
|
||||||
#: ../vnc.html:214
|
#: ../vnc.html:214
|
||||||
@ -220,7 +220,7 @@ msgid "Local Downscaling"
|
|||||||
msgstr "Reducción de escala local"
|
msgstr "Reducción de escala local"
|
||||||
|
|
||||||
#: ../vnc.html:217
|
#: ../vnc.html:217
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Cambio de tamaño remoto"
|
msgstr "Cambio de tamaño remoto"
|
||||||
|
|
||||||
#: ../vnc.html:222
|
#: ../vnc.html:222
|
||||||
@ -252,11 +252,11 @@ msgid "Path:"
|
|||||||
msgstr "Ruta:"
|
msgstr "Ruta:"
|
||||||
|
|
||||||
#: ../vnc.html:254
|
#: ../vnc.html:254
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Reconexión automática"
|
msgstr "Reconexión automática"
|
||||||
|
|
||||||
#: ../vnc.html:257
|
#: ../vnc.html:257
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Retraso en la reconexión (ms):"
|
msgstr "Retraso en la reconexión (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:263
|
#: ../vnc.html:263
|
||||||
|
|||||||
26
po/fr.po
26
po/fr.po
@ -1,6 +1,6 @@
|
|||||||
# French translations for noVNC package
|
# French translations for noVNC package
|
||||||
# Traductions françaises du paquet noVNC.
|
# Traductions françaises du paquet noVNC.
|
||||||
# Copyright (C) 2021 The noVNC Authors
|
# Copyright (C) 2021 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Jose <jose.matsuda@canada.ca>, 2021.
|
# Jose <jose.matsuda@canada.ca>, 2021.
|
||||||
# Lowxorx <lowxorx@lahan.fr>, 2022.
|
# Lowxorx <lowxorx@lahan.fr>, 2022.
|
||||||
@ -92,7 +92,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Clavier"
|
msgstr "Clavier"
|
||||||
|
|
||||||
#: ../vnc.html:97
|
#: ../vnc.html:97
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Afficher le clavier"
|
msgstr "Afficher le clavier"
|
||||||
|
|
||||||
#: ../vnc.html:102
|
#: ../vnc.html:102
|
||||||
@ -100,7 +100,7 @@ msgid "Extra keys"
|
|||||||
msgstr "Touches supplémentaires"
|
msgstr "Touches supplémentaires"
|
||||||
|
|
||||||
#: ../vnc.html:102
|
#: ../vnc.html:102
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "Afficher les touches supplémentaires"
|
msgstr "Afficher les touches supplémentaires"
|
||||||
|
|
||||||
#: ../vnc.html:107
|
#: ../vnc.html:107
|
||||||
@ -192,19 +192,19 @@ msgid "Settings"
|
|||||||
msgstr "Paramètres"
|
msgstr "Paramètres"
|
||||||
|
|
||||||
#: ../vnc.html:175
|
#: ../vnc.html:175
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "Mode partagé"
|
msgstr "Mode partagé"
|
||||||
|
|
||||||
#: ../vnc.html:178
|
#: ../vnc.html:178
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "Afficher uniquement"
|
msgstr "Afficher uniquement"
|
||||||
|
|
||||||
#: ../vnc.html:182
|
#: ../vnc.html:182
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "Clip à fenêtre"
|
msgstr "Clip à fenêtre"
|
||||||
|
|
||||||
#: ../vnc.html:185
|
#: ../vnc.html:185
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Mode mise à l'échelle :"
|
msgstr "Mode mise à l'échelle :"
|
||||||
|
|
||||||
#: ../vnc.html:187
|
#: ../vnc.html:187
|
||||||
@ -212,11 +212,11 @@ msgid "None"
|
|||||||
msgstr "Aucun"
|
msgstr "Aucun"
|
||||||
|
|
||||||
#: ../vnc.html:188
|
#: ../vnc.html:188
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "Mise à l'échelle locale"
|
msgstr "Mise à l'échelle locale"
|
||||||
|
|
||||||
#: ../vnc.html:189
|
#: ../vnc.html:189
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Redimensionnement à distance"
|
msgstr "Redimensionnement à distance"
|
||||||
|
|
||||||
#: ../vnc.html:194
|
#: ../vnc.html:194
|
||||||
@ -256,15 +256,15 @@ msgid "Path:"
|
|||||||
msgstr "Chemin :"
|
msgstr "Chemin :"
|
||||||
|
|
||||||
#: ../vnc.html:231
|
#: ../vnc.html:231
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Reconnecter automatiquemen"
|
msgstr "Reconnecter automatiquemen"
|
||||||
|
|
||||||
#: ../vnc.html:234
|
#: ../vnc.html:234
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Délai de reconnexion (ms) :"
|
msgstr "Délai de reconnexion (ms) :"
|
||||||
|
|
||||||
#: ../vnc.html:239
|
#: ../vnc.html:239
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "Afficher le point lorsqu'il n'y a pas de curseur"
|
msgstr "Afficher le point lorsqu'il n'y a pas de curseur"
|
||||||
|
|
||||||
#: ../vnc.html:244
|
#: ../vnc.html:244
|
||||||
@ -292,7 +292,7 @@ msgid "Password:"
|
|||||||
msgstr "Mot de passe :"
|
msgstr "Mot de passe :"
|
||||||
|
|
||||||
#: ../vnc.html:298
|
#: ../vnc.html:298
|
||||||
msgid "Send Credentials"
|
msgid "Send credentials"
|
||||||
msgstr "Envoyer les identifiants"
|
msgstr "Envoyer les identifiants"
|
||||||
|
|
||||||
#: ../vnc.html:308
|
#: ../vnc.html:308
|
||||||
|
|||||||
12
po/it.po
12
po/it.po
@ -1,6 +1,6 @@
|
|||||||
# Italian translations for noVNC
|
# Italian translations for noVNC
|
||||||
# Traduzione italiana di noVNC
|
# Traduzione italiana di noVNC
|
||||||
# Copyright (C) 2022 The noVNC Authors
|
# Copyright (C) 2022 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Fabio Fantoni <fabio.fantoni@m2r.biz>, 2022.
|
# Fabio Fantoni <fabio.fantoni@m2r.biz>, 2022.
|
||||||
#
|
#
|
||||||
@ -84,7 +84,7 @@ msgid "Drag"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:78
|
#: ../vnc.html:78
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:84
|
#: ../vnc.html:84
|
||||||
@ -92,7 +92,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Tastiera"
|
msgstr "Tastiera"
|
||||||
|
|
||||||
#: ../vnc.html:84
|
#: ../vnc.html:84
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Mostra tastiera"
|
msgstr "Mostra tastiera"
|
||||||
|
|
||||||
#: ../vnc.html:89
|
#: ../vnc.html:89
|
||||||
@ -192,7 +192,7 @@ msgid "Settings"
|
|||||||
msgstr "Impostazioni"
|
msgstr "Impostazioni"
|
||||||
|
|
||||||
#: ../vnc.html:162
|
#: ../vnc.html:162
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "Modalità condivisa"
|
msgstr "Modalità condivisa"
|
||||||
|
|
||||||
#: ../vnc.html:165
|
#: ../vnc.html:165
|
||||||
@ -200,11 +200,11 @@ msgid "View Only"
|
|||||||
msgstr "Sola Visualizzazione"
|
msgstr "Sola Visualizzazione"
|
||||||
|
|
||||||
#: ../vnc.html:169
|
#: ../vnc.html:169
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:172
|
#: ../vnc.html:172
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Modalità di ridimensionamento:"
|
msgstr "Modalità di ridimensionamento:"
|
||||||
|
|
||||||
#: ../vnc.html:174
|
#: ../vnc.html:174
|
||||||
|
|||||||
227
po/ja.po
227
po/ja.po
@ -1,15 +1,15 @@
|
|||||||
# Japanese translations for noVNC package
|
# Japanese translations for noVNC package
|
||||||
# noVNC パッケージに対する日訳
|
# noVNC パッケージに対する日訳
|
||||||
# Copyright (C) 2019 The noVNC Authors
|
# Copyright (C) 2019-2024 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# nnn1590 <nnn1590@nnn1590.org>, 2019-2020.
|
# nnn1590 <nnn1590@nnn1590.org>, 2019-2024.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: noVNC 1.1.0\n"
|
"Project-Id-Version: noVNC 1.5.0\n"
|
||||||
"Report-Msgid-Bugs-To: novnc@googlegroups.com\n"
|
"Report-Msgid-Bugs-To: novnc@googlegroups.com\n"
|
||||||
"POT-Creation-Date: 2022-12-27 15:24+0100\n"
|
"POT-Creation-Date: 2024-06-03 14:10+0200\n"
|
||||||
"PO-Revision-Date: 2023-03-21 12:42+0900\n"
|
"PO-Revision-Date: 2024-12-14 15:22+0900\n"
|
||||||
"Last-Translator: nnn1590 <nnn1590@nnn1590.org>\n"
|
"Last-Translator: nnn1590 <nnn1590@nnn1590.org>\n"
|
||||||
"Language-Team: Japanese\n"
|
"Language-Team: Japanese\n"
|
||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
@ -20,8 +20,11 @@ msgstr ""
|
|||||||
"X-Generator: Poedit 2.3\n"
|
"X-Generator: Poedit 2.3\n"
|
||||||
|
|
||||||
#: ../app/ui.js:69
|
#: ../app/ui.js:69
|
||||||
msgid "HTTPS is required for full functionality"
|
msgid ""
|
||||||
msgstr "すべての機能を使用するにはHTTPS接続が必要です"
|
"Running without HTTPS is not recommended, crashes or other issues are likely."
|
||||||
|
msgstr ""
|
||||||
|
"HTTPS接続なしで実行することは推奨されません。クラッシュしたりその他の問題が発"
|
||||||
|
"生したりする可能性があります。"
|
||||||
|
|
||||||
#: ../app/ui.js:410
|
#: ../app/ui.js:410
|
||||||
msgid "Connecting..."
|
msgid "Connecting..."
|
||||||
@ -43,321 +46,297 @@ msgstr "内部エラー"
|
|||||||
msgid "Must set host"
|
msgid "Must set host"
|
||||||
msgstr "ホストを設定する必要があります"
|
msgstr "ホストを設定する必要があります"
|
||||||
|
|
||||||
#: ../app/ui.js:1110
|
#: ../app/ui.js:1052
|
||||||
|
msgid "Failed to connect to server: "
|
||||||
|
msgstr "サーバーへの接続に失敗しました: "
|
||||||
|
|
||||||
|
#: ../app/ui.js:1118
|
||||||
msgid "Connected (encrypted) to "
|
msgid "Connected (encrypted) to "
|
||||||
msgstr "接続しました (暗号化済み): "
|
msgstr "接続しました (暗号化済み): "
|
||||||
|
|
||||||
#: ../app/ui.js:1112
|
#: ../app/ui.js:1120
|
||||||
msgid "Connected (unencrypted) to "
|
msgid "Connected (unencrypted) to "
|
||||||
msgstr "接続しました (暗号化されていません): "
|
msgstr "接続しました (暗号化されていません): "
|
||||||
|
|
||||||
#: ../app/ui.js:1135
|
#: ../app/ui.js:1143
|
||||||
msgid "Something went wrong, connection is closed"
|
msgid "Something went wrong, connection is closed"
|
||||||
msgstr "何らかの問題で、接続が閉じられました"
|
msgstr "問題が発生したため、接続が閉じられました"
|
||||||
|
|
||||||
#: ../app/ui.js:1138
|
#: ../app/ui.js:1146
|
||||||
msgid "Failed to connect to server"
|
msgid "Failed to connect to server"
|
||||||
msgstr "サーバーへの接続に失敗しました"
|
msgstr "サーバーへの接続に失敗しました"
|
||||||
|
|
||||||
#: ../app/ui.js:1150
|
#: ../app/ui.js:1158
|
||||||
msgid "Disconnected"
|
msgid "Disconnected"
|
||||||
msgstr "切断しました"
|
msgstr "切断しました"
|
||||||
|
|
||||||
#: ../app/ui.js:1165
|
#: ../app/ui.js:1173
|
||||||
msgid "New connection has been rejected with reason: "
|
msgid "New connection has been rejected with reason: "
|
||||||
msgstr "新規接続は次の理由で拒否されました: "
|
msgstr "新規接続は次の理由で拒否されました: "
|
||||||
|
|
||||||
#: ../app/ui.js:1168
|
#: ../app/ui.js:1176
|
||||||
msgid "New connection has been rejected"
|
msgid "New connection has been rejected"
|
||||||
msgstr "新規接続は拒否されました"
|
msgstr "新規接続は拒否されました"
|
||||||
|
|
||||||
#: ../app/ui.js:1234
|
#: ../app/ui.js:1242
|
||||||
msgid "Credentials are required"
|
msgid "Credentials are required"
|
||||||
msgstr "資格情報が必要です"
|
msgstr "資格情報が必要です"
|
||||||
|
|
||||||
#: ../vnc.html:57
|
#: ../vnc.html:55
|
||||||
msgid "noVNC encountered an error:"
|
msgid "noVNC encountered an error:"
|
||||||
msgstr "noVNC でエラーが発生しました:"
|
msgstr "noVNC でエラーが発生しました:"
|
||||||
|
|
||||||
#: ../vnc.html:67
|
#: ../vnc.html:65
|
||||||
msgid "Hide/Show the control bar"
|
msgid "Hide/Show the control bar"
|
||||||
msgstr "コントロールバーを隠す/表示する"
|
msgstr "コントロールバーを隠す/表示する"
|
||||||
|
|
||||||
#: ../vnc.html:76
|
#: ../vnc.html:74
|
||||||
msgid "Drag"
|
msgid "Drag"
|
||||||
msgstr "ドラッグ"
|
msgstr "ドラッグ"
|
||||||
|
|
||||||
#: ../vnc.html:76
|
#: ../vnc.html:74
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "ビューポートを移動/ドラッグ"
|
msgstr "ビューポートを移動/ドラッグ"
|
||||||
|
|
||||||
#: ../vnc.html:82
|
#: ../vnc.html:80
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "キーボード"
|
msgstr "キーボード"
|
||||||
|
|
||||||
#: ../vnc.html:82
|
#: ../vnc.html:80
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "キーボードを表示"
|
msgstr "キーボードを表示"
|
||||||
|
|
||||||
#: ../vnc.html:87
|
#: ../vnc.html:85
|
||||||
msgid "Extra keys"
|
msgid "Extra keys"
|
||||||
msgstr "追加キー"
|
msgstr "追加キー"
|
||||||
|
|
||||||
#: ../vnc.html:87
|
#: ../vnc.html:85
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "追加キーを表示"
|
msgstr "追加キーを表示"
|
||||||
|
|
||||||
#: ../vnc.html:92
|
#: ../vnc.html:90
|
||||||
msgid "Ctrl"
|
msgid "Ctrl"
|
||||||
msgstr "Ctrl"
|
msgstr "Ctrl"
|
||||||
|
|
||||||
#: ../vnc.html:92
|
#: ../vnc.html:90
|
||||||
msgid "Toggle Ctrl"
|
msgid "Toggle Ctrl"
|
||||||
msgstr "Ctrl キーをトグル"
|
msgstr "Ctrl キーをトグル"
|
||||||
|
|
||||||
#: ../vnc.html:95
|
#: ../vnc.html:93
|
||||||
msgid "Alt"
|
msgid "Alt"
|
||||||
msgstr "Alt"
|
msgstr "Alt"
|
||||||
|
|
||||||
#: ../vnc.html:95
|
#: ../vnc.html:93
|
||||||
msgid "Toggle Alt"
|
msgid "Toggle Alt"
|
||||||
msgstr "Alt キーをトグル"
|
msgstr "Alt キーをトグル"
|
||||||
|
|
||||||
#: ../vnc.html:98
|
#: ../vnc.html:96
|
||||||
msgid "Toggle Windows"
|
msgid "Toggle Windows"
|
||||||
msgstr "Windows キーをトグル"
|
msgstr "Windows キーをトグル"
|
||||||
|
|
||||||
#: ../vnc.html:98
|
#: ../vnc.html:96
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Windows"
|
msgstr "Windows"
|
||||||
|
|
||||||
#: ../vnc.html:101
|
#: ../vnc.html:99
|
||||||
msgid "Send Tab"
|
msgid "Send Tab"
|
||||||
msgstr "Tab キーを送信"
|
msgstr "Tab キーを送信"
|
||||||
|
|
||||||
#: ../vnc.html:101
|
#: ../vnc.html:99
|
||||||
msgid "Tab"
|
msgid "Tab"
|
||||||
msgstr "Tab"
|
msgstr "Tab"
|
||||||
|
|
||||||
#: ../vnc.html:104
|
#: ../vnc.html:102
|
||||||
msgid "Esc"
|
msgid "Esc"
|
||||||
msgstr "Esc"
|
msgstr "Esc"
|
||||||
|
|
||||||
#: ../vnc.html:104
|
#: ../vnc.html:102
|
||||||
msgid "Send Escape"
|
msgid "Send Escape"
|
||||||
msgstr "Escape キーを送信"
|
msgstr "Escape キーを送信"
|
||||||
|
|
||||||
#: ../vnc.html:107
|
#: ../vnc.html:105
|
||||||
msgid "Ctrl+Alt+Del"
|
msgid "Ctrl+Alt+Del"
|
||||||
msgstr "Ctrl+Alt+Del"
|
msgstr "Ctrl+Alt+Del"
|
||||||
|
|
||||||
#: ../vnc.html:107
|
#: ../vnc.html:105
|
||||||
msgid "Send Ctrl-Alt-Del"
|
msgid "Send Ctrl-Alt-Del"
|
||||||
msgstr "Ctrl-Alt-Del を送信"
|
msgstr "Ctrl-Alt-Del を送信"
|
||||||
|
|
||||||
#: ../vnc.html:114
|
#: ../vnc.html:112
|
||||||
msgid "Shutdown/Reboot"
|
msgid "Shutdown/Reboot"
|
||||||
msgstr "シャットダウン/再起動"
|
msgstr "シャットダウン/再起動"
|
||||||
|
|
||||||
#: ../vnc.html:114
|
#: ../vnc.html:112
|
||||||
msgid "Shutdown/Reboot..."
|
msgid "Shutdown/Reboot..."
|
||||||
msgstr "シャットダウン/再起動..."
|
msgstr "シャットダウン/再起動..."
|
||||||
|
|
||||||
#: ../vnc.html:120
|
#: ../vnc.html:118
|
||||||
msgid "Power"
|
msgid "Power"
|
||||||
msgstr "電源"
|
msgstr "電源"
|
||||||
|
|
||||||
#: ../vnc.html:122
|
#: ../vnc.html:120
|
||||||
msgid "Shutdown"
|
msgid "Shutdown"
|
||||||
msgstr "シャットダウン"
|
msgstr "シャットダウン"
|
||||||
|
|
||||||
#: ../vnc.html:123
|
#: ../vnc.html:121
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr "再起動"
|
msgstr "再起動"
|
||||||
|
|
||||||
#: ../vnc.html:124
|
#: ../vnc.html:122
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "リセット"
|
msgstr "リセット"
|
||||||
|
|
||||||
#: ../vnc.html:129 ../vnc.html:135
|
#: ../vnc.html:127 ../vnc.html:133
|
||||||
msgid "Clipboard"
|
msgid "Clipboard"
|
||||||
msgstr "クリップボード"
|
msgstr "クリップボード"
|
||||||
|
|
||||||
#: ../vnc.html:137
|
#: ../vnc.html:135
|
||||||
msgid "Edit clipboard content in the textarea below."
|
msgid "Edit clipboard content in the textarea below."
|
||||||
msgstr "以下の入力欄からクリップボードの内容を編集できます。"
|
msgstr "以下の入力欄からクリップボードの内容を編集できます。"
|
||||||
|
|
||||||
#: ../vnc.html:145
|
#: ../vnc.html:143
|
||||||
msgid "Full Screen"
|
msgid "Full screen"
|
||||||
msgstr "全画面表示"
|
msgstr "全画面表示"
|
||||||
|
|
||||||
#: ../vnc.html:150 ../vnc.html:156
|
#: ../vnc.html:148 ../vnc.html:154
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "設定"
|
msgstr "設定"
|
||||||
|
|
||||||
#: ../vnc.html:160
|
#: ../vnc.html:158
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "共有モード"
|
msgstr "共有モード"
|
||||||
|
|
||||||
#: ../vnc.html:163
|
#: ../vnc.html:161
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "表示専用"
|
msgstr "表示専用"
|
||||||
|
|
||||||
#: ../vnc.html:167
|
#: ../vnc.html:165
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "ウィンドウにクリップ"
|
msgstr "ウィンドウにクリップ"
|
||||||
|
|
||||||
#: ../vnc.html:170
|
#: ../vnc.html:168
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "スケーリングモード:"
|
msgstr "スケーリングモード:"
|
||||||
|
|
||||||
#: ../vnc.html:172
|
#: ../vnc.html:170
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr "なし"
|
msgstr "なし"
|
||||||
|
|
||||||
#: ../vnc.html:173
|
#: ../vnc.html:171
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "ローカルスケーリング"
|
msgstr "ローカルでスケーリング"
|
||||||
|
|
||||||
#: ../vnc.html:174
|
#: ../vnc.html:172
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "リモートでリサイズ"
|
msgstr "リモートでリサイズ"
|
||||||
|
|
||||||
#: ../vnc.html:179
|
#: ../vnc.html:177
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr "高度"
|
msgstr "高度"
|
||||||
|
|
||||||
#: ../vnc.html:182
|
#: ../vnc.html:180
|
||||||
msgid "Quality:"
|
msgid "Quality:"
|
||||||
msgstr "品質:"
|
msgstr "品質:"
|
||||||
|
|
||||||
#: ../vnc.html:186
|
#: ../vnc.html:184
|
||||||
msgid "Compression level:"
|
msgid "Compression level:"
|
||||||
msgstr "圧縮レベル:"
|
msgstr "圧縮レベル:"
|
||||||
|
|
||||||
#: ../vnc.html:191
|
#: ../vnc.html:189
|
||||||
msgid "Repeater ID:"
|
msgid "Repeater ID:"
|
||||||
msgstr "リピーター ID:"
|
msgstr "リピーター ID:"
|
||||||
|
|
||||||
#: ../vnc.html:195
|
#: ../vnc.html:193
|
||||||
msgid "WebSocket"
|
msgid "WebSocket"
|
||||||
msgstr "WebSocket"
|
msgstr "WebSocket"
|
||||||
|
|
||||||
#: ../vnc.html:198
|
#: ../vnc.html:196
|
||||||
msgid "Encrypt"
|
msgid "Encrypt"
|
||||||
msgstr "暗号化"
|
msgstr "暗号化"
|
||||||
|
|
||||||
#: ../vnc.html:201
|
#: ../vnc.html:199
|
||||||
msgid "Host:"
|
msgid "Host:"
|
||||||
msgstr "ホスト:"
|
msgstr "ホスト:"
|
||||||
|
|
||||||
#: ../vnc.html:205
|
#: ../vnc.html:203
|
||||||
msgid "Port:"
|
msgid "Port:"
|
||||||
msgstr "ポート:"
|
msgstr "ポート:"
|
||||||
|
|
||||||
#: ../vnc.html:209
|
#: ../vnc.html:207
|
||||||
msgid "Path:"
|
msgid "Path:"
|
||||||
msgstr "パス:"
|
msgstr "パス:"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:214
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "自動再接続"
|
msgstr "自動再接続"
|
||||||
|
|
||||||
#: ../vnc.html:219
|
#: ../vnc.html:217
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "再接続する遅延 (ミリ秒):"
|
msgstr "再接続する遅延 (ミリ秒):"
|
||||||
|
|
||||||
#: ../vnc.html:224
|
#: ../vnc.html:222
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "カーソルがないときにドットを表示する"
|
msgstr "カーソルがないときにドットを表示する"
|
||||||
|
|
||||||
#: ../vnc.html:229
|
#: ../vnc.html:227
|
||||||
msgid "Logging:"
|
msgid "Logging:"
|
||||||
msgstr "ロギング:"
|
msgstr "ロギング:"
|
||||||
|
|
||||||
#: ../vnc.html:238
|
#: ../vnc.html:236
|
||||||
msgid "Version:"
|
msgid "Version:"
|
||||||
msgstr "バージョン:"
|
msgstr "バージョン:"
|
||||||
|
|
||||||
#: ../vnc.html:246
|
#: ../vnc.html:244
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
msgstr "切断"
|
msgstr "切断"
|
||||||
|
|
||||||
#: ../vnc.html:269
|
#: ../vnc.html:267
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "接続"
|
msgstr "接続"
|
||||||
|
|
||||||
#: ../vnc.html:278
|
#: ../vnc.html:276
|
||||||
msgid "Server identity"
|
msgid "Server identity"
|
||||||
msgstr "サーバーの識別情報"
|
msgstr "サーバーの識別情報"
|
||||||
|
|
||||||
#: ../vnc.html:281
|
#: ../vnc.html:279
|
||||||
msgid "The server has provided the following identifying information:"
|
msgid "The server has provided the following identifying information:"
|
||||||
msgstr "サーバーは以下の識別情報を提供しています:"
|
msgstr "サーバーは以下の識別情報を提供しています:"
|
||||||
|
|
||||||
#: ../vnc.html:285
|
#: ../vnc.html:283
|
||||||
msgid "Fingerprint:"
|
msgid "Fingerprint:"
|
||||||
msgstr "フィンガープリント:"
|
msgstr "フィンガープリント:"
|
||||||
|
|
||||||
#: ../vnc.html:288
|
#: ../vnc.html:286
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please verify that the information is correct and press \"Approve\". "
|
"Please verify that the information is correct and press \"Approve\". "
|
||||||
"Otherwise press \"Reject\"."
|
"Otherwise press \"Reject\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"この情報が正しい場合は「承認」を、そうでない場合は「拒否」を押してく"
|
"この情報が正しい場合は「承認」を、そうでない場合は「拒否」を押してください。"
|
||||||
"ださい。"
|
|
||||||
|
|
||||||
#: ../vnc.html:293
|
#: ../vnc.html:291
|
||||||
msgid "Approve"
|
msgid "Approve"
|
||||||
msgstr "承認"
|
msgstr "承認"
|
||||||
|
|
||||||
#: ../vnc.html:294
|
#: ../vnc.html:292
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "拒否"
|
msgstr "拒否"
|
||||||
|
|
||||||
#: ../vnc.html:302
|
#: ../vnc.html:300
|
||||||
msgid "Credentials"
|
msgid "Credentials"
|
||||||
msgstr "資格情報"
|
msgstr "資格情報"
|
||||||
|
|
||||||
#: ../vnc.html:306
|
#: ../vnc.html:304
|
||||||
msgid "Username:"
|
msgid "Username:"
|
||||||
msgstr "ユーザー名:"
|
msgstr "ユーザー名:"
|
||||||
|
|
||||||
#: ../vnc.html:310
|
#: ../vnc.html:308
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "パスワード:"
|
msgstr "パスワード:"
|
||||||
|
|
||||||
#: ../vnc.html:314
|
#: ../vnc.html:312
|
||||||
msgid "Send Credentials"
|
msgid "Send credentials"
|
||||||
msgstr "資格情報を送信"
|
msgstr "資格情報を送信"
|
||||||
|
|
||||||
#: ../vnc.html:323
|
#: ../vnc.html:321
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "キャンセル"
|
msgstr "キャンセル"
|
||||||
|
|
||||||
#~ msgid "Clear"
|
|
||||||
#~ msgstr "クリア"
|
|
||||||
|
|
||||||
#~ msgid "Password is required"
|
|
||||||
#~ msgstr "パスワードが必要です"
|
|
||||||
|
|
||||||
#~ msgid "viewport drag"
|
|
||||||
#~ msgstr "ビューポートをドラッグ"
|
|
||||||
|
|
||||||
#~ msgid "Active Mouse Button"
|
|
||||||
#~ msgstr "アクティブなマウスボタン"
|
|
||||||
|
|
||||||
#~ msgid "No mousebutton"
|
|
||||||
#~ msgstr "マウスボタンなし"
|
|
||||||
|
|
||||||
#~ msgid "Left mousebutton"
|
|
||||||
#~ msgstr "左マウスボタン"
|
|
||||||
|
|
||||||
#~ msgid "Middle mousebutton"
|
|
||||||
#~ msgstr "中マウスボタン"
|
|
||||||
|
|
||||||
#~ msgid "Right mousebutton"
|
|
||||||
#~ msgstr "右マウスボタン"
|
|
||||||
|
|
||||||
#~ msgid "Send Password"
|
|
||||||
#~ msgstr "パスワードを送信"
|
|
||||||
|
|||||||
24
po/ko.po
24
po/ko.po
@ -1,5 +1,5 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
# SOME DESCRIPTIVE TITLE.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Baw Appie <pp121324@gmail.com>, 2018.
|
# Baw Appie <pp121324@gmail.com>, 2018.
|
||||||
#
|
#
|
||||||
@ -78,7 +78,7 @@ msgid "Hide/Show the control bar"
|
|||||||
msgstr "컨트롤 바 숨기기/보이기"
|
msgstr "컨트롤 바 숨기기/보이기"
|
||||||
|
|
||||||
#: ../vnc.html:108
|
#: ../vnc.html:108
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "움직이기/드래그 뷰포트"
|
msgstr "움직이기/드래그 뷰포트"
|
||||||
|
|
||||||
#: ../vnc.html:108
|
#: ../vnc.html:108
|
||||||
@ -110,7 +110,7 @@ msgid "Keyboard"
|
|||||||
msgstr "키보드"
|
msgstr "키보드"
|
||||||
|
|
||||||
#: ../vnc.html:126
|
#: ../vnc.html:126
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "키보드 보이기"
|
msgstr "키보드 보이기"
|
||||||
|
|
||||||
#: ../vnc.html:133
|
#: ../vnc.html:133
|
||||||
@ -118,7 +118,7 @@ msgid "Extra keys"
|
|||||||
msgstr "기타 키들"
|
msgstr "기타 키들"
|
||||||
|
|
||||||
#: ../vnc.html:133
|
#: ../vnc.html:133
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "기타 키들 보이기"
|
msgstr "기타 키들 보이기"
|
||||||
|
|
||||||
#: ../vnc.html:138
|
#: ../vnc.html:138
|
||||||
@ -202,19 +202,19 @@ msgid "Settings"
|
|||||||
msgstr "설정"
|
msgstr "설정"
|
||||||
|
|
||||||
#: ../vnc.html:204
|
#: ../vnc.html:204
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "공유 모드"
|
msgstr "공유 모드"
|
||||||
|
|
||||||
#: ../vnc.html:207
|
#: ../vnc.html:207
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "보기 전용"
|
msgstr "보기 전용"
|
||||||
|
|
||||||
#: ../vnc.html:211
|
#: ../vnc.html:211
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "창에 클립"
|
msgstr "창에 클립"
|
||||||
|
|
||||||
#: ../vnc.html:214
|
#: ../vnc.html:214
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "스케일링 모드:"
|
msgstr "스케일링 모드:"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:216
|
||||||
@ -222,11 +222,11 @@ msgid "None"
|
|||||||
msgstr "없음"
|
msgstr "없음"
|
||||||
|
|
||||||
#: ../vnc.html:217
|
#: ../vnc.html:217
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "로컬 스케일링"
|
msgstr "로컬 스케일링"
|
||||||
|
|
||||||
#: ../vnc.html:218
|
#: ../vnc.html:218
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "원격 크기 조절"
|
msgstr "원격 크기 조절"
|
||||||
|
|
||||||
#: ../vnc.html:223
|
#: ../vnc.html:223
|
||||||
@ -258,11 +258,11 @@ msgid "Path:"
|
|||||||
msgstr "위치:"
|
msgstr "위치:"
|
||||||
|
|
||||||
#: ../vnc.html:251
|
#: ../vnc.html:251
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "자동 재연결"
|
msgstr "자동 재연결"
|
||||||
|
|
||||||
#: ../vnc.html:254
|
#: ../vnc.html:254
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "재연결 지연 시간 (ms)"
|
msgstr "재연결 지연 시간 (ms)"
|
||||||
|
|
||||||
#: ../vnc.html:260
|
#: ../vnc.html:260
|
||||||
|
|||||||
8
po/nl.po
8
po/nl.po
@ -1,6 +1,6 @@
|
|||||||
# Dutch translations for noVNC package
|
# Dutch translations for noVNC package
|
||||||
# Nederlandse vertalingen voor het pakket noVNC.
|
# Nederlandse vertalingen voor het pakket noVNC.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Loek Janssen <loekjanssen@gmail.com>, 2016.
|
# Loek Janssen <loekjanssen@gmail.com>, 2016.
|
||||||
#
|
#
|
||||||
@ -219,11 +219,11 @@ msgid "View Only"
|
|||||||
msgstr "Alleen Kijken"
|
msgstr "Alleen Kijken"
|
||||||
|
|
||||||
#: ../vnc.html:202
|
#: ../vnc.html:202
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "Randen buiten venster afsnijden"
|
msgstr "Randen buiten venster afsnijden"
|
||||||
|
|
||||||
#: ../vnc.html:205
|
#: ../vnc.html:205
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Schaalmodus:"
|
msgstr "Schaalmodus:"
|
||||||
|
|
||||||
#: ../vnc.html:207
|
#: ../vnc.html:207
|
||||||
@ -275,7 +275,7 @@ msgid "Reconnect Delay (ms):"
|
|||||||
msgstr "Vertraging voor Opnieuw Verbinden (ms):"
|
msgstr "Vertraging voor Opnieuw Verbinden (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:250
|
#: ../vnc.html:250
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "Geef stip weer indien geen cursor"
|
msgstr "Geef stip weer indien geen cursor"
|
||||||
|
|
||||||
#: ../vnc.html:255
|
#: ../vnc.html:255
|
||||||
|
|||||||
30
po/noVNC.pot
30
po/noVNC.pot
@ -1,5 +1,5 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
# SOME DESCRIPTIVE TITLE.
|
||||||
# Copyright (C) YEAR The noVNC Authors
|
# Copyright (C) YEAR The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
@ -91,7 +91,7 @@ msgid "Drag"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:74
|
#: ../vnc.html:74
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:80
|
#: ../vnc.html:80
|
||||||
@ -99,7 +99,7 @@ msgid "Keyboard"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:80
|
#: ../vnc.html:80
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:85
|
#: ../vnc.html:85
|
||||||
@ -107,7 +107,7 @@ msgid "Extra keys"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:85
|
#: ../vnc.html:85
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:90
|
#: ../vnc.html:90
|
||||||
@ -191,7 +191,7 @@ msgid "Edit clipboard content in the textarea below."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:143
|
#: ../vnc.html:143
|
||||||
msgid "Full Screen"
|
msgid "Full screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:148 ../vnc.html:154
|
#: ../vnc.html:148 ../vnc.html:154
|
||||||
@ -199,19 +199,19 @@ msgid "Settings"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:158
|
#: ../vnc.html:158
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:161
|
#: ../vnc.html:161
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:165
|
#: ../vnc.html:165
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:168
|
#: ../vnc.html:168
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:170
|
#: ../vnc.html:170
|
||||||
@ -219,11 +219,11 @@ msgid "None"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:171
|
#: ../vnc.html:171
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:172
|
#: ../vnc.html:172
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:177
|
#: ../vnc.html:177
|
||||||
@ -263,15 +263,15 @@ msgid "Path:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:214
|
#: ../vnc.html:214
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:217
|
#: ../vnc.html:217
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:222
|
#: ../vnc.html:222
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:227
|
#: ../vnc.html:227
|
||||||
@ -329,7 +329,7 @@ msgid "Password:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:312
|
#: ../vnc.html:312
|
||||||
msgid "Send Credentials"
|
msgid "Send credentials"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vnc.html:321
|
#: ../vnc.html:321
|
||||||
|
|||||||
14
po/pl.po
14
po/pl.po
@ -1,5 +1,5 @@
|
|||||||
# Polish translations for noVNC package.
|
# Polish translations for noVNC package.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Mariusz Jamro <mariusz.jamro@gmail.com>, 2017.
|
# Mariusz Jamro <mariusz.jamro@gmail.com>, 2017.
|
||||||
#
|
#
|
||||||
@ -108,7 +108,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Klawiatura"
|
msgstr "Klawiatura"
|
||||||
|
|
||||||
#: ../vnc.html:124
|
#: ../vnc.html:124
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Pokaż klawiaturę"
|
msgstr "Pokaż klawiaturę"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
@ -116,7 +116,7 @@ msgid "Extra keys"
|
|||||||
msgstr "Przyciski dodatkowe"
|
msgstr "Przyciski dodatkowe"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "Pokaż przyciski dodatkowe"
|
msgstr "Pokaż przyciski dodatkowe"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:136
|
||||||
@ -220,11 +220,11 @@ msgid "None"
|
|||||||
msgstr "Brak"
|
msgstr "Brak"
|
||||||
|
|
||||||
#: ../vnc.html:215
|
#: ../vnc.html:215
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "Skalowanie lokalne"
|
msgstr "Skalowanie lokalne"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:216
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Skalowanie zdalne"
|
msgstr "Skalowanie zdalne"
|
||||||
|
|
||||||
#: ../vnc.html:221
|
#: ../vnc.html:221
|
||||||
@ -256,11 +256,11 @@ msgid "Path:"
|
|||||||
msgstr "Ścieżka:"
|
msgstr "Ścieżka:"
|
||||||
|
|
||||||
#: ../vnc.html:249
|
#: ../vnc.html:249
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Automatycznie wznawiaj połączenie"
|
msgstr "Automatycznie wznawiaj połączenie"
|
||||||
|
|
||||||
#: ../vnc.html:252
|
#: ../vnc.html:252
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Opóźnienie wznawiania (ms):"
|
msgstr "Opóźnienie wznawiania (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:258
|
#: ../vnc.html:258
|
||||||
|
|||||||
35
po/po2js
35
po/po2js
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
/*
|
/*
|
||||||
* ps2js: gettext .po to noVNC .js converter
|
* ps2js: gettext .po to noVNC .js converter
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,29 +17,24 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const getopt = require('node-getopt');
|
const { program } = require('commander');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const po2json = require("po2json");
|
const pofile = require("pofile");
|
||||||
|
|
||||||
const opt = getopt.create([
|
program
|
||||||
['h', 'help', 'display this help'],
|
.argument('<input>')
|
||||||
]).bindHelp().parseSystem();
|
.argument('<output>')
|
||||||
|
.parse(process.argv);
|
||||||
|
|
||||||
if (opt.argv.length != 2) {
|
let data = fs.readFileSync(program.args[0], "utf8");
|
||||||
console.error("Incorrect number of arguments given");
|
let po = pofile.parse(data);
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
const data = po2json.parseFileSync(opt.argv[0]);
|
const bodyPart = po.items
|
||||||
|
.filter(item => item.msgid !== "")
|
||||||
const bodyPart = Object.keys(data)
|
.filter(item => item.msgstr[0] !== "")
|
||||||
.filter(msgid => msgid !== "")
|
.map(item => " " + JSON.stringify(item.msgid) + ": " + JSON.stringify(item.msgstr[0]))
|
||||||
.filter(msgid => data[msgid][1] !== "")
|
.join(",\n");
|
||||||
.map((msgid) => {
|
|
||||||
const msgstr = data[msgid][1];
|
|
||||||
return " " + JSON.stringify(msgid) + ": " + JSON.stringify(msgstr);
|
|
||||||
}).join(",\n");
|
|
||||||
|
|
||||||
const output = "{\n" + bodyPart + "\n}";
|
const output = "{\n" + bodyPart + "\n}";
|
||||||
|
|
||||||
fs.writeFileSync(opt.argv[1], output);
|
fs.writeFileSync(program.args[1], output);
|
||||||
|
|||||||
28
po/pt_BR.po
28
po/pt_BR.po
@ -1,5 +1,5 @@
|
|||||||
# Portuguese translations for noVNC package.
|
# Portuguese translations for noVNC package.
|
||||||
# Copyright (C) 2021 The noVNC Authors
|
# Copyright (C) 2021 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# <liddack@outlook.com>, 2021.
|
# <liddack@outlook.com>, 2021.
|
||||||
#
|
#
|
||||||
@ -83,7 +83,7 @@ msgid "Drag"
|
|||||||
msgstr "Arrastar"
|
msgstr "Arrastar"
|
||||||
|
|
||||||
#: ../vnc.html:78
|
#: ../vnc.html:78
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "Mover/arrastar a janela"
|
msgstr "Mover/arrastar a janela"
|
||||||
|
|
||||||
#: ../vnc.html:84
|
#: ../vnc.html:84
|
||||||
@ -91,7 +91,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#: ../vnc.html:84
|
#: ../vnc.html:84
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Mostrar teclado"
|
msgstr "Mostrar teclado"
|
||||||
|
|
||||||
#: ../vnc.html:89
|
#: ../vnc.html:89
|
||||||
@ -99,7 +99,7 @@ msgid "Extra keys"
|
|||||||
msgstr "Teclas adicionais"
|
msgstr "Teclas adicionais"
|
||||||
|
|
||||||
#: ../vnc.html:89
|
#: ../vnc.html:89
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "Mostar teclas adicionais"
|
msgstr "Mostar teclas adicionais"
|
||||||
|
|
||||||
#: ../vnc.html:94
|
#: ../vnc.html:94
|
||||||
@ -191,19 +191,19 @@ msgid "Settings"
|
|||||||
msgstr "Configurações"
|
msgstr "Configurações"
|
||||||
|
|
||||||
#: ../vnc.html:162
|
#: ../vnc.html:162
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "Modo compartilhado"
|
msgstr "Modo compartilhado"
|
||||||
|
|
||||||
#: ../vnc.html:165
|
#: ../vnc.html:165
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "Apenas visualizar"
|
msgstr "Apenas visualizar"
|
||||||
|
|
||||||
#: ../vnc.html:169
|
#: ../vnc.html:169
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "Recortar à janela"
|
msgstr "Recortar à janela"
|
||||||
|
|
||||||
#: ../vnc.html:172
|
#: ../vnc.html:172
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Modo de dimensionamento:"
|
msgstr "Modo de dimensionamento:"
|
||||||
|
|
||||||
#: ../vnc.html:174
|
#: ../vnc.html:174
|
||||||
@ -211,11 +211,11 @@ msgid "None"
|
|||||||
msgstr "Nenhum"
|
msgstr "Nenhum"
|
||||||
|
|
||||||
#: ../vnc.html:175
|
#: ../vnc.html:175
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "Local"
|
msgstr "Local"
|
||||||
|
|
||||||
#: ../vnc.html:176
|
#: ../vnc.html:176
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Remoto"
|
msgstr "Remoto"
|
||||||
|
|
||||||
#: ../vnc.html:181
|
#: ../vnc.html:181
|
||||||
@ -255,15 +255,15 @@ msgid "Path:"
|
|||||||
msgstr "Caminho:"
|
msgstr "Caminho:"
|
||||||
|
|
||||||
#: ../vnc.html:218
|
#: ../vnc.html:218
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Reconexão automática"
|
msgstr "Reconexão automática"
|
||||||
|
|
||||||
#: ../vnc.html:221
|
#: ../vnc.html:221
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Atraso da reconexão (ms)"
|
msgstr "Atraso da reconexão (ms)"
|
||||||
|
|
||||||
#: ../vnc.html:226
|
#: ../vnc.html:226
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "Mostrar ponto quando não há cursor"
|
msgstr "Mostrar ponto quando não há cursor"
|
||||||
|
|
||||||
#: ../vnc.html:231
|
#: ../vnc.html:231
|
||||||
@ -291,7 +291,7 @@ msgid "Password:"
|
|||||||
msgstr "Senha:"
|
msgstr "Senha:"
|
||||||
|
|
||||||
#: ../vnc.html:285
|
#: ../vnc.html:285
|
||||||
msgid "Send Credentials"
|
msgid "Send credentials"
|
||||||
msgstr "Enviar credenciais"
|
msgstr "Enviar credenciais"
|
||||||
|
|
||||||
#: ../vnc.html:295
|
#: ../vnc.html:295
|
||||||
|
|||||||
20
po/ru.po
20
po/ru.po
@ -86,7 +86,7 @@ msgid "Drag"
|
|||||||
msgstr "Переместить"
|
msgstr "Переместить"
|
||||||
|
|
||||||
#: ../vnc.html:78
|
#: ../vnc.html:78
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "Переместить окно"
|
msgstr "Переместить окно"
|
||||||
|
|
||||||
#: ../vnc.html:84
|
#: ../vnc.html:84
|
||||||
@ -94,7 +94,7 @@ msgid "Keyboard"
|
|||||||
msgstr "Клавиатура"
|
msgstr "Клавиатура"
|
||||||
|
|
||||||
#: ../vnc.html:84
|
#: ../vnc.html:84
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "Показать клавиатуру"
|
msgstr "Показать клавиатуру"
|
||||||
|
|
||||||
#: ../vnc.html:89
|
#: ../vnc.html:89
|
||||||
@ -194,7 +194,7 @@ msgid "Settings"
|
|||||||
msgstr "Настройки"
|
msgstr "Настройки"
|
||||||
|
|
||||||
#: ../vnc.html:162
|
#: ../vnc.html:162
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "Общий режим"
|
msgstr "Общий режим"
|
||||||
|
|
||||||
#: ../vnc.html:165
|
#: ../vnc.html:165
|
||||||
@ -202,11 +202,11 @@ msgid "View Only"
|
|||||||
msgstr "Только Просмотр"
|
msgstr "Только Просмотр"
|
||||||
|
|
||||||
#: ../vnc.html:169
|
#: ../vnc.html:169
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "В окно"
|
msgstr "В окно"
|
||||||
|
|
||||||
#: ../vnc.html:172
|
#: ../vnc.html:172
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Масштаб:"
|
msgstr "Масштаб:"
|
||||||
|
|
||||||
#: ../vnc.html:174
|
#: ../vnc.html:174
|
||||||
@ -214,11 +214,11 @@ msgid "None"
|
|||||||
msgstr "Нет"
|
msgstr "Нет"
|
||||||
|
|
||||||
#: ../vnc.html:175
|
#: ../vnc.html:175
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "Локальный масштаб"
|
msgstr "Локальный масштаб"
|
||||||
|
|
||||||
#: ../vnc.html:176
|
#: ../vnc.html:176
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "Удаленная перенастройка размера"
|
msgstr "Удаленная перенастройка размера"
|
||||||
|
|
||||||
#: ../vnc.html:181
|
#: ../vnc.html:181
|
||||||
@ -258,15 +258,15 @@ msgid "Path:"
|
|||||||
msgstr "Путь:"
|
msgstr "Путь:"
|
||||||
|
|
||||||
#: ../vnc.html:218
|
#: ../vnc.html:218
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "Автоматическое переподключение"
|
msgstr "Автоматическое переподключение"
|
||||||
|
|
||||||
#: ../vnc.html:221
|
#: ../vnc.html:221
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Задержка переподключения (мс):"
|
msgstr "Задержка переподключения (мс):"
|
||||||
|
|
||||||
#: ../vnc.html:226
|
#: ../vnc.html:226
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "Показать точку вместо курсора"
|
msgstr "Показать точку вместо курсора"
|
||||||
|
|
||||||
#: ../vnc.html:231
|
#: ../vnc.html:231
|
||||||
|
|||||||
10
po/sv.po
10
po/sv.po
@ -1,6 +1,6 @@
|
|||||||
# Swedish translations for noVNC package
|
# Swedish translations for noVNC package
|
||||||
# Svenska översättningar för paketet noVNC.
|
# Svenska översättningar för paketet noVNC.
|
||||||
# Copyright (C) 2020 The noVNC Authors
|
# Copyright (C) 2020 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Samuel Mannehed <samuel@cendio.se>, 2020.
|
# Samuel Mannehed <samuel@cendio.se>, 2020.
|
||||||
#
|
#
|
||||||
@ -195,7 +195,7 @@ msgid "Edit clipboard content in the textarea below."
|
|||||||
msgstr "Redigera urklippets innehåll i fältet nedan."
|
msgstr "Redigera urklippets innehåll i fältet nedan."
|
||||||
|
|
||||||
#: ../vnc.html:143
|
#: ../vnc.html:143
|
||||||
msgid "Full Screen"
|
msgid "Full screen"
|
||||||
msgstr "Fullskärm"
|
msgstr "Fullskärm"
|
||||||
|
|
||||||
#: ../vnc.html:148 ../vnc.html:154
|
#: ../vnc.html:148 ../vnc.html:154
|
||||||
@ -215,7 +215,7 @@ msgid "Clip to Window"
|
|||||||
msgstr "Begränsa till Fönster"
|
msgstr "Begränsa till Fönster"
|
||||||
|
|
||||||
#: ../vnc.html:168
|
#: ../vnc.html:168
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "Skalningsläge:"
|
msgstr "Skalningsläge:"
|
||||||
|
|
||||||
#: ../vnc.html:170
|
#: ../vnc.html:170
|
||||||
@ -271,11 +271,11 @@ msgid "Automatic Reconnect"
|
|||||||
msgstr "Automatisk Återanslutning"
|
msgstr "Automatisk Återanslutning"
|
||||||
|
|
||||||
#: ../vnc.html:217
|
#: ../vnc.html:217
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "Fördröjning (ms):"
|
msgstr "Fördröjning (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:222
|
#: ../vnc.html:222
|
||||||
msgid "Show Dot when No Cursor"
|
msgid "Show dot when no cursor"
|
||||||
msgstr "Visa prick när ingen muspekare finns"
|
msgstr "Visa prick när ingen muspekare finns"
|
||||||
|
|
||||||
#: ../vnc.html:227
|
#: ../vnc.html:227
|
||||||
|
|||||||
4
po/tr.po
4
po/tr.po
@ -1,6 +1,6 @@
|
|||||||
# Turkish translations for noVNC package
|
# Turkish translations for noVNC package
|
||||||
# Turkish translation for noVNC.
|
# Turkish translation for noVNC.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Ömer ÇAKMAK <farukomercakmak@gmail.com>, 2018.
|
# Ömer ÇAKMAK <farukomercakmak@gmail.com>, 2018.
|
||||||
#
|
#
|
||||||
@ -116,7 +116,7 @@ msgid "Extra keys"
|
|||||||
msgstr "Ekstra tuşlar"
|
msgstr "Ekstra tuşlar"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "Ekstra tuşları göster"
|
msgstr "Ekstra tuşları göster"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:136
|
||||||
|
|||||||
@ -1,18 +1,18 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
/*
|
/*
|
||||||
* xgettext-html: HTML gettext parser
|
* xgettext-html: HTML gettext parser
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const getopt = require('node-getopt');
|
const { program } = require('commander');
|
||||||
const jsdom = require("jsdom");
|
const jsdom = require("jsdom");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
|
|
||||||
const opt = getopt.create([
|
program
|
||||||
['o', 'output=FILE', 'write output to specified file'],
|
.argument('<INPUT...>')
|
||||||
['h', 'help', 'display this help'],
|
.requiredOption('-o, --output <FILE>', 'write output to specified file')
|
||||||
]).bindHelp().parseSystem();
|
.parse(process.argv);
|
||||||
|
|
||||||
const strings = {};
|
const strings = {};
|
||||||
|
|
||||||
@ -87,8 +87,8 @@ function process(elem, locator, enabled) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < opt.argv.length; i++) {
|
for (let i = 0; i < program.args.length; i++) {
|
||||||
const fn = opt.argv[i];
|
const fn = program.args[i];
|
||||||
const file = fs.readFileSync(fn, "utf8");
|
const file = fs.readFileSync(fn, "utf8");
|
||||||
const dom = new jsdom.JSDOM(file, { includeNodeLocations: true });
|
const dom = new jsdom.JSDOM(file, { includeNodeLocations: true });
|
||||||
const body = dom.window.document.body;
|
const body = dom.window.document.body;
|
||||||
@ -116,4 +116,4 @@ for (let str in strings) {
|
|||||||
output += "\n";
|
output += "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.writeFileSync(opt.options.output, output);
|
fs.writeFileSync(program.opts().output, output);
|
||||||
|
|||||||
351
po/zh_CN.po
351
po/zh_CN.po
@ -1,5 +1,5 @@
|
|||||||
# Simplified Chinese translations for noVNC package.
|
# Simplified Chinese translations for noVNC package.
|
||||||
# Copyright (C) 2020 The noVNC Authors
|
# Copyright (C) 2020 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Peter Dave Hello <hsu@peterdavehello.org>, 2018.
|
# Peter Dave Hello <hsu@peterdavehello.org>, 2018.
|
||||||
#
|
#
|
||||||
@ -7,278 +7,367 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: noVNC 1.1.0\n"
|
"Project-Id-Version: noVNC 1.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: novnc@googlegroups.com\n"
|
"Report-Msgid-Bugs-To: novnc@googlegroups.com\n"
|
||||||
"POT-Creation-Date: 2018-01-10 00:53+0800\n"
|
"POT-Creation-Date: 2024-06-03 14:10+0200\n"
|
||||||
"PO-Revision-Date: 2020-01-02 13:19+0800\n"
|
"PO-Revision-Date: 2024-11-23 15:29+0800\n"
|
||||||
"Last-Translator: CUI Wei <ghostplant@qq.com>\n"
|
"Last-Translator: wxtewx <wxtewx@qq.com>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
"Language: zh_CN\n"
|
"Language: zh_CN\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 3.5\n"
|
||||||
|
|
||||||
#: ../app/ui.js:430
|
#: ../app/ui.js:69
|
||||||
|
msgid ""
|
||||||
|
"Running without HTTPS is not recommended, crashes or other issues are likely."
|
||||||
|
msgstr "不建议在没有 HTTPS 的情况下运行,可能会出现崩溃或出现其他问题。"
|
||||||
|
|
||||||
|
#: ../app/ui.js:410
|
||||||
msgid "Connecting..."
|
msgid "Connecting..."
|
||||||
msgstr "连接中..."
|
msgstr "连接中..."
|
||||||
|
|
||||||
#: ../app/ui.js:438
|
#: ../app/ui.js:417
|
||||||
msgid "Connected (encrypted) to "
|
|
||||||
msgstr "已连接(已加密)到"
|
|
||||||
|
|
||||||
#: ../app/ui.js:440
|
|
||||||
msgid "Connected (unencrypted) to "
|
|
||||||
msgstr "已连接(未加密)到"
|
|
||||||
|
|
||||||
#: ../app/ui.js:446
|
|
||||||
msgid "Disconnecting..."
|
msgid "Disconnecting..."
|
||||||
msgstr "正在断开连接..."
|
msgstr "正在断开连接..."
|
||||||
|
|
||||||
#: ../app/ui.js:450
|
#: ../app/ui.js:423
|
||||||
msgid "Disconnected"
|
|
||||||
msgstr "已断开连接"
|
|
||||||
|
|
||||||
#: ../app/ui.js:1052 ../core/rfb.js:248
|
|
||||||
msgid "Must set host"
|
|
||||||
msgstr "必须设置主机"
|
|
||||||
|
|
||||||
#: ../app/ui.js:1101
|
|
||||||
msgid "Reconnecting..."
|
msgid "Reconnecting..."
|
||||||
msgstr "重新连接中..."
|
msgstr "重新连接中..."
|
||||||
|
|
||||||
#: ../app/ui.js:1140
|
#: ../app/ui.js:428
|
||||||
msgid "Password is required"
|
msgid "Internal error"
|
||||||
msgstr "请提供密码"
|
msgstr "内部错误"
|
||||||
|
|
||||||
#: ../core/rfb.js:548
|
#: ../app/ui.js:1026
|
||||||
msgid "Disconnect timeout"
|
msgid "Must set host"
|
||||||
msgstr "超时断开"
|
msgstr "必须设置主机"
|
||||||
|
|
||||||
#: ../vnc.html:89
|
#: ../app/ui.js:1052
|
||||||
|
msgid "Failed to connect to server: "
|
||||||
|
msgstr "无法连接到服务器:"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1118
|
||||||
|
msgid "Connected (encrypted) to "
|
||||||
|
msgstr "已连接(已加密)到"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1120
|
||||||
|
msgid "Connected (unencrypted) to "
|
||||||
|
msgstr "已连接(未加密)到"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1143
|
||||||
|
msgid "Something went wrong, connection is closed"
|
||||||
|
msgstr "出了点问题,连接已关闭"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1146
|
||||||
|
msgid "Failed to connect to server"
|
||||||
|
msgstr "无法连接到服务器"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1158
|
||||||
|
msgid "Disconnected"
|
||||||
|
msgstr "已断开连接"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1173
|
||||||
|
msgid "New connection has been rejected with reason: "
|
||||||
|
msgstr "新连接被拒绝,原因如下:"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1176
|
||||||
|
msgid "New connection has been rejected"
|
||||||
|
msgstr "新连接已被拒绝"
|
||||||
|
|
||||||
|
#: ../app/ui.js:1242
|
||||||
|
msgid "Credentials are required"
|
||||||
|
msgstr "需要凭证"
|
||||||
|
|
||||||
|
#: ../vnc.html:55
|
||||||
msgid "noVNC encountered an error:"
|
msgid "noVNC encountered an error:"
|
||||||
msgstr "noVNC 遇到一个错误:"
|
msgstr "noVNC 遇到一个错误:"
|
||||||
|
|
||||||
#: ../vnc.html:99
|
#: ../vnc.html:65
|
||||||
msgid "Hide/Show the control bar"
|
msgid "Hide/Show the control bar"
|
||||||
msgstr "显示/隐藏控制栏"
|
msgstr "显示/隐藏控制栏"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:74
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Drag"
|
||||||
|
msgstr "拖动"
|
||||||
|
|
||||||
|
#: ../vnc.html:74
|
||||||
|
msgid "Move/Drag viewport"
|
||||||
msgstr "移动/拖动窗口"
|
msgstr "移动/拖动窗口"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:80
|
||||||
msgid "viewport drag"
|
|
||||||
msgstr "窗口拖动"
|
|
||||||
|
|
||||||
#: ../vnc.html:112 ../vnc.html:115 ../vnc.html:118 ../vnc.html:121
|
|
||||||
msgid "Active Mouse Button"
|
|
||||||
msgstr "启动鼠标按键"
|
|
||||||
|
|
||||||
#: ../vnc.html:112
|
|
||||||
msgid "No mousebutton"
|
|
||||||
msgstr "禁用鼠标按键"
|
|
||||||
|
|
||||||
#: ../vnc.html:115
|
|
||||||
msgid "Left mousebutton"
|
|
||||||
msgstr "鼠标左键"
|
|
||||||
|
|
||||||
#: ../vnc.html:118
|
|
||||||
msgid "Middle mousebutton"
|
|
||||||
msgstr "鼠标中键"
|
|
||||||
|
|
||||||
#: ../vnc.html:121
|
|
||||||
msgid "Right mousebutton"
|
|
||||||
msgstr "鼠标右键"
|
|
||||||
|
|
||||||
#: ../vnc.html:124
|
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "键盘"
|
msgstr "键盘"
|
||||||
|
|
||||||
#: ../vnc.html:124
|
#: ../vnc.html:80
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "显示键盘"
|
msgstr "显示键盘"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:85
|
||||||
msgid "Extra keys"
|
msgid "Extra keys"
|
||||||
msgstr "额外按键"
|
msgstr "额外按键"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:85
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "显示额外按键"
|
msgstr "显示额外按键"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:90
|
||||||
msgid "Ctrl"
|
msgid "Ctrl"
|
||||||
msgstr "Ctrl"
|
msgstr "Ctrl"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:90
|
||||||
msgid "Toggle Ctrl"
|
msgid "Toggle Ctrl"
|
||||||
msgstr "切换 Ctrl"
|
msgstr "切换 Ctrl"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:93
|
||||||
msgid "Edit clipboard content in the textarea below."
|
|
||||||
msgstr "在下面的文本区域中编辑剪贴板内容。"
|
|
||||||
|
|
||||||
#: ../vnc.html:139
|
|
||||||
msgid "Alt"
|
msgid "Alt"
|
||||||
msgstr "Alt"
|
msgstr "Alt"
|
||||||
|
|
||||||
#: ../vnc.html:139
|
#: ../vnc.html:93
|
||||||
msgid "Toggle Alt"
|
msgid "Toggle Alt"
|
||||||
msgstr "切换 Alt"
|
msgstr "切换 Alt"
|
||||||
|
|
||||||
#: ../vnc.html:142
|
#: ../vnc.html:96
|
||||||
|
msgid "Toggle Windows"
|
||||||
|
msgstr "切换窗口"
|
||||||
|
|
||||||
|
#: ../vnc.html:96
|
||||||
|
msgid "Windows"
|
||||||
|
msgstr "窗口"
|
||||||
|
|
||||||
|
#: ../vnc.html:99
|
||||||
msgid "Send Tab"
|
msgid "Send Tab"
|
||||||
msgstr "发送 Tab 键"
|
msgstr "发送 Tab 键"
|
||||||
|
|
||||||
#: ../vnc.html:142
|
#: ../vnc.html:99
|
||||||
msgid "Tab"
|
msgid "Tab"
|
||||||
msgstr "Tab"
|
msgstr "Tab"
|
||||||
|
|
||||||
#: ../vnc.html:145
|
#: ../vnc.html:102
|
||||||
msgid "Esc"
|
msgid "Esc"
|
||||||
msgstr "Esc"
|
msgstr "Esc"
|
||||||
|
|
||||||
#: ../vnc.html:145
|
#: ../vnc.html:102
|
||||||
msgid "Send Escape"
|
msgid "Send Escape"
|
||||||
msgstr "发送 Escape 键"
|
msgstr "发送 Escape 键"
|
||||||
|
|
||||||
#: ../vnc.html:148
|
#: ../vnc.html:105
|
||||||
msgid "Ctrl+Alt+Del"
|
msgid "Ctrl+Alt+Del"
|
||||||
msgstr "Ctrl+Alt+Del"
|
msgstr "Ctrl+Alt+Del"
|
||||||
|
|
||||||
#: ../vnc.html:148
|
#: ../vnc.html:105
|
||||||
msgid "Send Ctrl-Alt-Del"
|
msgid "Send Ctrl-Alt-Del"
|
||||||
msgstr "发送 Ctrl+Alt+Del 键"
|
msgstr "发送 Ctrl+Alt+Del 键"
|
||||||
|
|
||||||
#: ../vnc.html:156
|
#: ../vnc.html:112
|
||||||
msgid "Shutdown/Reboot"
|
msgid "Shutdown/Reboot"
|
||||||
msgstr "关机/重启"
|
msgstr "关机/重启"
|
||||||
|
|
||||||
#: ../vnc.html:156
|
#: ../vnc.html:112
|
||||||
msgid "Shutdown/Reboot..."
|
msgid "Shutdown/Reboot..."
|
||||||
msgstr "关机/重启..."
|
msgstr "关机/重启..."
|
||||||
|
|
||||||
#: ../vnc.html:162
|
#: ../vnc.html:118
|
||||||
msgid "Power"
|
msgid "Power"
|
||||||
msgstr "电源"
|
msgstr "电源"
|
||||||
|
|
||||||
#: ../vnc.html:164
|
#: ../vnc.html:120
|
||||||
msgid "Shutdown"
|
msgid "Shutdown"
|
||||||
msgstr "关机"
|
msgstr "关机"
|
||||||
|
|
||||||
#: ../vnc.html:165
|
#: ../vnc.html:121
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr "重启"
|
msgstr "重启"
|
||||||
|
|
||||||
#: ../vnc.html:166
|
#: ../vnc.html:122
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "重置"
|
msgstr "重置"
|
||||||
|
|
||||||
#: ../vnc.html:171 ../vnc.html:177
|
#: ../vnc.html:127 ../vnc.html:133
|
||||||
msgid "Clipboard"
|
msgid "Clipboard"
|
||||||
msgstr "剪贴板"
|
msgstr "剪贴板"
|
||||||
|
|
||||||
#: ../vnc.html:181
|
#: ../vnc.html:135
|
||||||
msgid "Clear"
|
msgid "Edit clipboard content in the textarea below."
|
||||||
msgstr "清除"
|
msgstr "在下面的文本区域中编辑剪贴板内容。"
|
||||||
|
|
||||||
#: ../vnc.html:187
|
#: ../vnc.html:143
|
||||||
msgid "Fullscreen"
|
msgid "Full screen"
|
||||||
msgstr "全屏"
|
msgstr "全屏"
|
||||||
|
|
||||||
#: ../vnc.html:192 ../vnc.html:199
|
#: ../vnc.html:148 ../vnc.html:154
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "设置"
|
msgstr "设置"
|
||||||
|
|
||||||
#: ../vnc.html:200
|
#: ../vnc.html:158
|
||||||
msgid "Encrypt"
|
msgid "Shared mode"
|
||||||
msgstr "加密"
|
|
||||||
|
|
||||||
#: ../vnc.html:202
|
|
||||||
msgid "Shared Mode"
|
|
||||||
msgstr "分享模式"
|
msgstr "分享模式"
|
||||||
|
|
||||||
#: ../vnc.html:205
|
#: ../vnc.html:161
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "仅查看"
|
msgstr "仅查看"
|
||||||
|
|
||||||
#: ../vnc.html:209
|
#: ../vnc.html:165
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "限制/裁切窗口大小"
|
msgstr "限制/裁切窗口大小"
|
||||||
|
|
||||||
#: ../vnc.html:212
|
#: ../vnc.html:168
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "缩放模式:"
|
msgstr "缩放模式:"
|
||||||
|
|
||||||
#: ../vnc.html:214
|
#: ../vnc.html:170
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr "无"
|
msgstr "无"
|
||||||
|
|
||||||
#: ../vnc.html:215
|
#: ../vnc.html:171
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "本地缩放"
|
msgstr "本地缩放"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:172
|
||||||
msgid "Local Downscaling"
|
msgid "Remote resizing"
|
||||||
msgstr "降低本地尺寸"
|
|
||||||
|
|
||||||
#: ../vnc.html:217
|
|
||||||
msgid "Remote Resizing"
|
|
||||||
msgstr "远程调整大小"
|
msgstr "远程调整大小"
|
||||||
|
|
||||||
#: ../vnc.html:222
|
#: ../vnc.html:177
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr "高级"
|
msgstr "高级"
|
||||||
|
|
||||||
#: ../vnc.html:225
|
#: ../vnc.html:180
|
||||||
msgid "Local Cursor"
|
msgid "Quality:"
|
||||||
msgstr "本地光标"
|
msgstr "品质:"
|
||||||
|
|
||||||
#: ../vnc.html:229
|
#: ../vnc.html:184
|
||||||
|
msgid "Compression level:"
|
||||||
|
msgstr "压缩级别:"
|
||||||
|
|
||||||
|
#: ../vnc.html:189
|
||||||
msgid "Repeater ID:"
|
msgid "Repeater ID:"
|
||||||
msgstr "中继站 ID"
|
msgstr "中继站 ID"
|
||||||
|
|
||||||
#: ../vnc.html:233
|
#: ../vnc.html:193
|
||||||
msgid "WebSocket"
|
msgid "WebSocket"
|
||||||
msgstr "WebSocket"
|
msgstr "WebSocket"
|
||||||
|
|
||||||
#: ../vnc.html:239
|
#: ../vnc.html:196
|
||||||
|
msgid "Encrypt"
|
||||||
|
msgstr "加密"
|
||||||
|
|
||||||
|
#: ../vnc.html:199
|
||||||
msgid "Host:"
|
msgid "Host:"
|
||||||
msgstr "主机:"
|
msgstr "主机:"
|
||||||
|
|
||||||
#: ../vnc.html:243
|
#: ../vnc.html:203
|
||||||
msgid "Port:"
|
msgid "Port:"
|
||||||
msgstr "端口:"
|
msgstr "端口:"
|
||||||
|
|
||||||
#: ../vnc.html:247
|
#: ../vnc.html:207
|
||||||
msgid "Path:"
|
msgid "Path:"
|
||||||
msgstr "路径:"
|
msgstr "路径:"
|
||||||
|
|
||||||
#: ../vnc.html:254
|
#: ../vnc.html:214
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "自动重新连接"
|
msgstr "自动重新连接"
|
||||||
|
|
||||||
#: ../vnc.html:257
|
#: ../vnc.html:217
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "重新连接间隔 (ms):"
|
msgstr "重新连接间隔 (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:263
|
#: ../vnc.html:222
|
||||||
|
msgid "Show dot when no cursor"
|
||||||
|
msgstr "无光标时显示点"
|
||||||
|
|
||||||
|
#: ../vnc.html:227
|
||||||
msgid "Logging:"
|
msgid "Logging:"
|
||||||
msgstr "日志级别:"
|
msgstr "日志级别:"
|
||||||
|
|
||||||
#: ../vnc.html:275
|
#: ../vnc.html:236
|
||||||
|
msgid "Version:"
|
||||||
|
msgstr "版本:"
|
||||||
|
|
||||||
|
#: ../vnc.html:244
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
msgstr "断开连接"
|
msgstr "断开连接"
|
||||||
|
|
||||||
#: ../vnc.html:294
|
#: ../vnc.html:267
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "连接"
|
msgstr "连接"
|
||||||
|
|
||||||
|
#: ../vnc.html:276
|
||||||
|
msgid "Server identity"
|
||||||
|
msgstr "服务器身份"
|
||||||
|
|
||||||
|
#: ../vnc.html:279
|
||||||
|
msgid "The server has provided the following identifying information:"
|
||||||
|
msgstr "服务器提供了以下识别信息:"
|
||||||
|
|
||||||
|
#: ../vnc.html:283
|
||||||
|
msgid "Fingerprint:"
|
||||||
|
msgstr "指纹:"
|
||||||
|
|
||||||
|
#: ../vnc.html:286
|
||||||
|
msgid ""
|
||||||
|
"Please verify that the information is correct and press \"Approve\". "
|
||||||
|
"Otherwise press \"Reject\"."
|
||||||
|
msgstr "请核实信息是否正确,并按 “同意”,否则按 “拒绝”。"
|
||||||
|
|
||||||
|
#: ../vnc.html:291
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "同意"
|
||||||
|
|
||||||
|
#: ../vnc.html:292
|
||||||
|
msgid "Reject"
|
||||||
|
msgstr "拒绝"
|
||||||
|
|
||||||
|
#: ../vnc.html:300
|
||||||
|
msgid "Credentials"
|
||||||
|
msgstr "凭证"
|
||||||
|
|
||||||
#: ../vnc.html:304
|
#: ../vnc.html:304
|
||||||
|
msgid "Username:"
|
||||||
|
msgstr "用户名:"
|
||||||
|
|
||||||
|
#: ../vnc.html:308
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "密码:"
|
msgstr "密码:"
|
||||||
|
|
||||||
#: ../vnc.html:318
|
#: ../vnc.html:312
|
||||||
|
msgid "Send credentials"
|
||||||
|
msgstr "发送凭证"
|
||||||
|
|
||||||
|
#: ../vnc.html:321
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "取消"
|
msgstr "取消"
|
||||||
|
|
||||||
#: ../vnc.html:334
|
#~ msgid "Password is required"
|
||||||
msgid "Canvas not supported."
|
#~ msgstr "请提供密码"
|
||||||
msgstr "不支持 Canvas。"
|
|
||||||
|
#~ msgid "Disconnect timeout"
|
||||||
|
#~ msgstr "超时断开"
|
||||||
|
|
||||||
|
#~ msgid "viewport drag"
|
||||||
|
#~ msgstr "窗口拖动"
|
||||||
|
|
||||||
|
#~ msgid "Active Mouse Button"
|
||||||
|
#~ msgstr "启动鼠标按键"
|
||||||
|
|
||||||
|
#~ msgid "No mousebutton"
|
||||||
|
#~ msgstr "禁用鼠标按键"
|
||||||
|
|
||||||
|
#~ msgid "Left mousebutton"
|
||||||
|
#~ msgstr "鼠标左键"
|
||||||
|
|
||||||
|
#~ msgid "Middle mousebutton"
|
||||||
|
#~ msgstr "鼠标中键"
|
||||||
|
|
||||||
|
#~ msgid "Right mousebutton"
|
||||||
|
#~ msgstr "鼠标右键"
|
||||||
|
|
||||||
|
#~ msgid "Clear"
|
||||||
|
#~ msgstr "清除"
|
||||||
|
|
||||||
|
#~ msgid "Local Downscaling"
|
||||||
|
#~ msgstr "降低本地尺寸"
|
||||||
|
|
||||||
|
#~ msgid "Local Cursor"
|
||||||
|
#~ msgstr "本地光标"
|
||||||
|
|
||||||
|
#~ msgid "Canvas not supported."
|
||||||
|
#~ msgstr "不支持 Canvas。"
|
||||||
|
|||||||
24
po/zh_TW.po
24
po/zh_TW.po
@ -1,5 +1,5 @@
|
|||||||
# Traditional Chinese translations for noVNC package.
|
# Traditional Chinese translations for noVNC package.
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# This file is distributed under the same license as the noVNC package.
|
# This file is distributed under the same license as the noVNC package.
|
||||||
# Peter Dave Hello <hsu@peterdavehello.org>, 2018.
|
# Peter Dave Hello <hsu@peterdavehello.org>, 2018.
|
||||||
#
|
#
|
||||||
@ -77,7 +77,7 @@ msgid "Hide/Show the control bar"
|
|||||||
msgstr "顯示/隱藏控制列"
|
msgstr "顯示/隱藏控制列"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:106
|
||||||
msgid "Move/Drag Viewport"
|
msgid "Move/Drag viewport"
|
||||||
msgstr "拖放顯示範圍"
|
msgstr "拖放顯示範圍"
|
||||||
|
|
||||||
#: ../vnc.html:106
|
#: ../vnc.html:106
|
||||||
@ -109,7 +109,7 @@ msgid "Keyboard"
|
|||||||
msgstr "鍵盤"
|
msgstr "鍵盤"
|
||||||
|
|
||||||
#: ../vnc.html:124
|
#: ../vnc.html:124
|
||||||
msgid "Show Keyboard"
|
msgid "Show keyboard"
|
||||||
msgstr "顯示鍵盤"
|
msgstr "顯示鍵盤"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
@ -117,7 +117,7 @@ msgid "Extra keys"
|
|||||||
msgstr "額外按鍵"
|
msgstr "額外按鍵"
|
||||||
|
|
||||||
#: ../vnc.html:131
|
#: ../vnc.html:131
|
||||||
msgid "Show Extra Keys"
|
msgid "Show extra keys"
|
||||||
msgstr "顯示額外按鍵"
|
msgstr "顯示額外按鍵"
|
||||||
|
|
||||||
#: ../vnc.html:136
|
#: ../vnc.html:136
|
||||||
@ -201,19 +201,19 @@ msgid "Settings"
|
|||||||
msgstr "設定"
|
msgstr "設定"
|
||||||
|
|
||||||
#: ../vnc.html:202
|
#: ../vnc.html:202
|
||||||
msgid "Shared Mode"
|
msgid "Shared mode"
|
||||||
msgstr "分享模式"
|
msgstr "分享模式"
|
||||||
|
|
||||||
#: ../vnc.html:205
|
#: ../vnc.html:205
|
||||||
msgid "View Only"
|
msgid "View only"
|
||||||
msgstr "僅檢視"
|
msgstr "僅檢視"
|
||||||
|
|
||||||
#: ../vnc.html:209
|
#: ../vnc.html:209
|
||||||
msgid "Clip to Window"
|
msgid "Clip to window"
|
||||||
msgstr "限制/裁切視窗大小"
|
msgstr "限制/裁切視窗大小"
|
||||||
|
|
||||||
#: ../vnc.html:212
|
#: ../vnc.html:212
|
||||||
msgid "Scaling Mode:"
|
msgid "Scaling mode:"
|
||||||
msgstr "縮放模式:"
|
msgstr "縮放模式:"
|
||||||
|
|
||||||
#: ../vnc.html:214
|
#: ../vnc.html:214
|
||||||
@ -221,11 +221,11 @@ msgid "None"
|
|||||||
msgstr "無"
|
msgstr "無"
|
||||||
|
|
||||||
#: ../vnc.html:215
|
#: ../vnc.html:215
|
||||||
msgid "Local Scaling"
|
msgid "Local scaling"
|
||||||
msgstr "本機縮放"
|
msgstr "本機縮放"
|
||||||
|
|
||||||
#: ../vnc.html:216
|
#: ../vnc.html:216
|
||||||
msgid "Remote Resizing"
|
msgid "Remote resizing"
|
||||||
msgstr "遠端調整大小"
|
msgstr "遠端調整大小"
|
||||||
|
|
||||||
#: ../vnc.html:221
|
#: ../vnc.html:221
|
||||||
@ -257,11 +257,11 @@ msgid "Path:"
|
|||||||
msgstr "路徑:"
|
msgstr "路徑:"
|
||||||
|
|
||||||
#: ../vnc.html:249
|
#: ../vnc.html:249
|
||||||
msgid "Automatic Reconnect"
|
msgid "Automatic reconnect"
|
||||||
msgstr "自動重新連線"
|
msgstr "自動重新連線"
|
||||||
|
|
||||||
#: ../vnc.html:252
|
#: ../vnc.html:252
|
||||||
msgid "Reconnect Delay (ms):"
|
msgid "Reconnect delay (ms):"
|
||||||
msgstr "重新連線間隔 (ms):"
|
msgstr "重新連線間隔 (ms):"
|
||||||
|
|
||||||
#: ../vnc.html:258
|
#: ../vnc.html:258
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* noVNC: HTML5 VNC client
|
* noVNC: HTML5 VNC client
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Base64 from '../core/base64.js';
|
import Base64 from '../core/base64.js';
|
||||||
|
|
||||||
describe('Base64 Tools', function () {
|
describe('Base64 tools', function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const BIN_ARR = new Array(256);
|
const BIN_ARR = new Array(256);
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('CopyRect Decoder', function () {
|
describe('CopyRect decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import Base64 from '../core/base64.js';
|
import Base64 from '../core/base64.js';
|
||||||
import Display from '../core/display.js';
|
import Display from '../core/display.js';
|
||||||
|
|
||||||
describe('Display/Canvas Helper', function () {
|
describe('Display/Canvas helper', function () {
|
||||||
const checkedData = new Uint8ClampedArray([
|
const checkedData = new Uint8ClampedArray([
|
||||||
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
|
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
|
||||||
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
|
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import Display from '../core/display.js';
|
|||||||
import { H264Parser } from '../core/decoders/h264.js';
|
import { H264Parser } from '../core/decoders/h264.js';
|
||||||
import H264Decoder from '../core/decoders/h264.js';
|
import H264Decoder from '../core/decoders/h264.js';
|
||||||
import Base64 from '../core/base64.js';
|
import Base64 from '../core/base64.js';
|
||||||
|
import { supportsWebCodecsH264Decode } from '../core/util/browser.js';
|
||||||
|
|
||||||
import FakeWebSocket from './fake.websocket.js';
|
import FakeWebSocket from './fake.websocket.js';
|
||||||
|
|
||||||
@ -29,30 +30,6 @@ const redGreenBlue16x16Video = new Uint8Array(Base64.decode(
|
|||||||
'4AA5DRJMnkycJk4TPwAAAAFBiIga8RigADVVHAAGaGOAANtuAAAAAUGIkBr///wRRQABVf8c' +
|
'4AA5DRJMnkycJk4TPwAAAAFBiIga8RigADVVHAAGaGOAANtuAAAAAUGIkBr///wRRQABVf8c' +
|
||||||
'AAcho4AAiD4='));
|
'AAcho4AAiD4='));
|
||||||
|
|
||||||
let _haveH264Decode = null;
|
|
||||||
|
|
||||||
async function haveH264Decode() {
|
|
||||||
if (_haveH264Decode !== null) {
|
|
||||||
return _haveH264Decode;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!('VideoDecoder' in window)) {
|
|
||||||
_haveH264Decode = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We'll need to make do with some placeholders here
|
|
||||||
const config = {
|
|
||||||
codec: 'avc1.42401f',
|
|
||||||
codedWidth: 1920,
|
|
||||||
codedHeight: 1080,
|
|
||||||
optimizeForLatency: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
_haveH264Decode = await VideoDecoder.isConfigSupported(config);
|
|
||||||
return _haveH264Decode;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSolidColorFrameBuffer(color, width, height) {
|
function createSolidColorFrameBuffer(color, width, height) {
|
||||||
const r = (color >> 24) & 0xff;
|
const r = (color >> 24) & 0xff;
|
||||||
const g = (color >> 16) & 0xff;
|
const g = (color >> 16) & 0xff;
|
||||||
@ -131,7 +108,7 @@ function almost(a, b) {
|
|||||||
return diff < 5;
|
return diff < 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('H.264 Parser', function () {
|
describe('H.264 parser', function () {
|
||||||
it('should parse constrained baseline video', function () {
|
it('should parse constrained baseline video', function () {
|
||||||
let parser = new H264Parser(redGreenBlue16x16Video);
|
let parser = new H264Parser(redGreenBlue16x16Video);
|
||||||
|
|
||||||
@ -153,11 +130,11 @@ describe('H.264 Parser', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('H.264 Decoder Unit Test', function () {
|
describe('H.264 decoder unit test', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
|
|
||||||
beforeEach(async function () {
|
beforeEach(function () {
|
||||||
if (!await haveH264Decode()) {
|
if (!supportsWebCodecsH264Decode) {
|
||||||
this.skip();
|
this.skip();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -204,15 +181,15 @@ describe('H.264 Decoder Unit Test', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('H.264 Decoder Functional Test', function () {
|
describe('H.264 decoder functional test', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
before(FakeWebSocket.replace);
|
before(FakeWebSocket.replace);
|
||||||
after(FakeWebSocket.restore);
|
after(FakeWebSocket.restore);
|
||||||
|
|
||||||
beforeEach(async function () {
|
beforeEach(function () {
|
||||||
if (!await haveH264Decode()) {
|
if (!supportsWebCodecsH264Decode) {
|
||||||
this.skip();
|
this.skip();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,7 @@ function push32(arr, num) {
|
|||||||
num & 0xFF);
|
num & 0xFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Hextile Decoder', function () {
|
describe('Hextile decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('JPEG Decoder', function () {
|
describe('JPEG decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Keyboard from '../core/input/keyboard.js';
|
import Keyboard from '../core/input/keyboard.js';
|
||||||
|
|
||||||
describe('Key Event Handling', function () {
|
describe('Key event handling', function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// The real KeyboardEvent constructor might not work everywhere we
|
// The real KeyboardEvent constructor might not work everywhere we
|
||||||
@ -19,7 +19,7 @@ describe('Key Event Handling', function () {
|
|||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Decode Keyboard Events', function () {
|
describe('Decode keyboard events', function () {
|
||||||
it('should decode keydown events', function (done) {
|
it('should decode keydown events', function (done) {
|
||||||
const kbd = new Keyboard(document);
|
const kbd = new Keyboard(document);
|
||||||
kbd.onkeyevent = (keysym, code, down) => {
|
kbd.onkeyevent = (keysym, code, down) => {
|
||||||
@ -68,7 +68,7 @@ describe('Key Event Handling', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Track Key State', function () {
|
describe('Track key state', function () {
|
||||||
it('should send release using the same keysym as the press', function (done) {
|
it('should send release using the same keysym as the press', function (done) {
|
||||||
const kbd = new Keyboard(document);
|
const kbd = new Keyboard(document);
|
||||||
kbd.onkeyevent = (keysym, code, down) => {
|
kbd.onkeyevent = (keysym, code, down) => {
|
||||||
@ -101,7 +101,7 @@ describe('Key Event Handling', function () {
|
|||||||
expect(kbd.onkeyevent).to.not.have.been.called;
|
expect(kbd.onkeyevent).to.not.have.been.called;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Legacy Events', function () {
|
describe('Legacy events', function () {
|
||||||
it('should track keys using keyCode if no code', function (done) {
|
it('should track keys using keyCode if no code', function (done) {
|
||||||
const kbd = new Keyboard(document);
|
const kbd = new Keyboard(document);
|
||||||
kbd.onkeyevent = (keysym, code, down) => {
|
kbd.onkeyevent = (keysym, code, down) => {
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Raw Decoder', function () {
|
describe('Raw decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -67,7 +67,7 @@ function deflateWithSize(data) {
|
|||||||
return new Uint8Array(strm.output.buffer, 0, strm.next_out);
|
return new Uint8Array(strm.output.buffer, 0, strm.next_out);
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Remote Frame Buffer Protocol Client', function () {
|
describe('Remote Frame Buffer protocol client', function () {
|
||||||
let clock;
|
let clock;
|
||||||
let raf;
|
let raf;
|
||||||
let fakeResizeObserver = null;
|
let fakeResizeObserver = null;
|
||||||
@ -287,7 +287,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Public API Basic Behavior', function () {
|
describe('Public API basic behavior', function () {
|
||||||
let client;
|
let client;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
client = makeRFB();
|
client = makeRFB();
|
||||||
@ -730,6 +730,28 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
container.style.width = '70px';
|
container.style.width = '70px';
|
||||||
container.style.height = '80px';
|
container.style.height = '80px';
|
||||||
client.scaleViewport = true;
|
client.scaleViewport = true;
|
||||||
|
|
||||||
|
const incoming = [ 0x00, // msg-type=FBU
|
||||||
|
0x00, // padding
|
||||||
|
0x00, 0x01, // number of rects = 1
|
||||||
|
0x00, 0x00, // reason = server initialized
|
||||||
|
0x00, 0x00, // status = no error
|
||||||
|
0x00, 0x04, // new width = 4
|
||||||
|
0x00, 0x04, // new height = 4
|
||||||
|
0xff, 0xff,
|
||||||
|
0xfe, 0xcc, // enc = (-308) ExtendedDesktopSize
|
||||||
|
0x01, // number of screens = 1
|
||||||
|
0x00, 0x00,
|
||||||
|
0x00, // padding
|
||||||
|
0x78, 0x90,
|
||||||
|
0xab, 0xcd, // screen id = 0
|
||||||
|
0x00, 0x00, // screen x = 0
|
||||||
|
0x00, 0x00, // screen y = 0
|
||||||
|
0x00, 0x04, // screen width = 4
|
||||||
|
0x00, 0x04, // screen height = 4
|
||||||
|
0x12, 0x34,
|
||||||
|
0x56, 0x78]; // screen flags
|
||||||
|
client._sock._websocket._receiveData(new Uint8Array(incoming));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should update display scale factor when changing the property', function () {
|
it('should update display scale factor when changing the property', function () {
|
||||||
@ -774,6 +796,28 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
expect(client._display.autoscale).to.have.been.calledWith(40, 50);
|
expect(client._display.autoscale).to.have.been.calledWith(40, 50);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should update the scaling resized back to initial size', function () {
|
||||||
|
sinon.spy(client._display, "autoscale");
|
||||||
|
|
||||||
|
container.style.width = '40px';
|
||||||
|
container.style.height = '50px';
|
||||||
|
fakeResizeObserver.fire();
|
||||||
|
clock.tick(1000);
|
||||||
|
|
||||||
|
expect(client._display.autoscale).to.have.been.calledOnce;
|
||||||
|
expect(client._display.autoscale).to.have.been.calledWith(40, 50);
|
||||||
|
client._display.autoscale.resetHistory();
|
||||||
|
|
||||||
|
container.style.width = '70px';
|
||||||
|
container.style.height = '80px';
|
||||||
|
fakeResizeObserver.fire();
|
||||||
|
clock.tick(1000);
|
||||||
|
|
||||||
|
expect(client._display.autoscale).to.have.been.calledOnce;
|
||||||
|
expect(client._display.autoscale).to.have.been.calledWith(70, 80);
|
||||||
|
client._display.autoscale.resetHistory();
|
||||||
|
});
|
||||||
|
|
||||||
it('should update the scaling when the remote session resizes', function () {
|
it('should update the scaling when the remote session resizes', function () {
|
||||||
// Simple ExtendedDesktopSize FBU message
|
// Simple ExtendedDesktopSize FBU message
|
||||||
const incoming = [ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
const incoming = [ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||||
@ -941,6 +985,27 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
expect(RFB.messages.setDesktopSize).to.not.have.been.called;
|
expect(RFB.messages.setDesktopSize).to.not.have.been.called;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should request a resize when resized back to initial size', function () {
|
||||||
|
container.style.width = '40px';
|
||||||
|
container.style.height = '50px';
|
||||||
|
fakeResizeObserver.fire();
|
||||||
|
clock.tick(1000);
|
||||||
|
|
||||||
|
expect(RFB.messages.setDesktopSize).to.have.been.calledOnce;
|
||||||
|
expect(RFB.messages.setDesktopSize).to.have.been.calledWith(
|
||||||
|
sinon.match.object, 40, 50, 0x7890abcd, 0x12345678);
|
||||||
|
RFB.messages.setDesktopSize.resetHistory();
|
||||||
|
|
||||||
|
container.style.width = '70px';
|
||||||
|
container.style.height = '80px';
|
||||||
|
fakeResizeObserver.fire();
|
||||||
|
clock.tick(1000);
|
||||||
|
|
||||||
|
expect(RFB.messages.setDesktopSize).to.have.been.calledOnce;
|
||||||
|
expect(RFB.messages.setDesktopSize).to.have.been.calledWith(
|
||||||
|
sinon.match.object, 70, 80, 0x7890abcd, 0x12345678);
|
||||||
|
});
|
||||||
|
|
||||||
it('should not resize until the container size is stable', function () {
|
it('should not resize until the container size is stable', function () {
|
||||||
container.style.width = '20px';
|
container.style.width = '20px';
|
||||||
container.style.height = '30px';
|
container.style.height = '30px';
|
||||||
@ -1027,7 +1092,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Misc Internals', function () {
|
describe('Misc internals', function () {
|
||||||
describe('#_fail', function () {
|
describe('#_fail', function () {
|
||||||
let client;
|
let client;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
@ -1068,7 +1133,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Protocol Initialization States', function () {
|
describe('Protocol initialization states', function () {
|
||||||
let client;
|
let client;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
client = makeRFB();
|
client = makeRFB();
|
||||||
@ -1226,7 +1291,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Legacy Authentication', function () {
|
describe('Legacy authentication', function () {
|
||||||
it('should fail on auth scheme 0 (pre 3.7) with the given message', function () {
|
it('should fail on auth scheme 0 (pre 3.7) with the given message', function () {
|
||||||
const errMsg = "Whoopsies";
|
const errMsg = "Whoopsies";
|
||||||
const data = [0, 0, 0, 0];
|
const data = [0, 0, 0, 0];
|
||||||
@ -1286,7 +1351,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
expect(callback.args[0][0].detail.clean).to.be.false;
|
expect(callback.args[0][0].detail.clean).to.be.false;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('VNC Authentication (type 2) Handler', function () {
|
describe('VNC authentication (type 2) handler', function () {
|
||||||
it('should fire the credentialsrequired event if missing a password', function () {
|
it('should fire the credentialsrequired event if missing a password', function () {
|
||||||
const spy = sinon.spy();
|
const spy = sinon.spy();
|
||||||
client.addEventListener("credentialsrequired", spy);
|
client.addEventListener("credentialsrequired", spy);
|
||||||
@ -1331,7 +1396,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('RSA-AES Authentication (type 6) Handler', function () {
|
describe('RSA-AES authentication (type 6) handler', function () {
|
||||||
function fakeGetRandomValues(arr) {
|
function fakeGetRandomValues(arr) {
|
||||||
if (arr.length === 16) {
|
if (arr.length === 16) {
|
||||||
arr.set(new Uint8Array([
|
arr.set(new Uint8Array([
|
||||||
@ -1776,7 +1841,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('ARD Authentication (type 30) Handler', function () {
|
describe('ARD authentication (type 30) handler', function () {
|
||||||
let byteArray = new Uint8Array(Array.from(new Uint8Array(128).keys()));
|
let byteArray = new Uint8Array(Array.from(new Uint8Array(128).keys()));
|
||||||
function fakeGetRandomValues(arr) {
|
function fakeGetRandomValues(arr) {
|
||||||
if (arr.length == 128) {
|
if (arr.length == 128) {
|
||||||
@ -1869,7 +1934,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('MSLogonII Authentication (type 113) Handler', function () {
|
describe('MSLogonII authentication (type 113) handler', function () {
|
||||||
function fakeGetRandomValues(arr) {
|
function fakeGetRandomValues(arr) {
|
||||||
if (arr.length == 8) {
|
if (arr.length == 8) {
|
||||||
arr.set(new Uint8Array([0, 0, 0, 0, 5, 6, 7, 8]));
|
arr.set(new Uint8Array([0, 0, 0, 0, 5, 6, 7, 8]));
|
||||||
@ -1952,7 +2017,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('XVP Authentication (type 22) Handler', function () {
|
describe('XVP authentication (type 22) handler', function () {
|
||||||
it('should fall through to standard VNC authentication upon completion', function () {
|
it('should fall through to standard VNC authentication upon completion', function () {
|
||||||
client.addEventListener("credentialsrequired", () => {
|
client.addEventListener("credentialsrequired", () => {
|
||||||
client.sendCredentials({ username: 'user',
|
client.sendCredentials({ username: 'user',
|
||||||
@ -2001,7 +2066,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('TightVNC Authentication (type 16) Handler', function () {
|
describe('TightVNC authentication (type 16) handler', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sendSecurity(16, client);
|
sendSecurity(16, client);
|
||||||
client._sock._websocket._getSentData(); // skip the security reply
|
client._sock._websocket._getSentData(); // skip the security reply
|
||||||
@ -2088,7 +2153,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('VeNCrypt Authentication (type 19) Handler', function () {
|
describe('VeNCrypt authentication (type 19) handler', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sendSecurity(19, client);
|
sendSecurity(19, client);
|
||||||
expect(client._sock).to.have.sent(new Uint8Array([19]));
|
expect(client._sock).to.have.sent(new Uint8Array([19]));
|
||||||
@ -2171,7 +2236,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Plain Authentication (type 256) Handler', function () {
|
describe('Plain authentication (type 256) handler', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sendSecurity(19, client);
|
sendSecurity(19, client);
|
||||||
expect(client._sock).to.have.sent(new Uint8Array([19]));
|
expect(client._sock).to.have.sent(new Uint8Array([19]));
|
||||||
@ -2430,7 +2495,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
expect(client._keyboard.grab).to.have.been.calledOnce;
|
expect(client._keyboard.grab).to.have.been.calledOnce;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Initial Update Request', function () {
|
describe('Initial update request', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sinon.spy(RFB.messages, "pixelFormat");
|
sinon.spy(RFB.messages, "pixelFormat");
|
||||||
sinon.spy(RFB.messages, "clientEncodings");
|
sinon.spy(RFB.messages, "clientEncodings");
|
||||||
@ -2485,7 +2550,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Protocol Message Processing After Completing Initialization', function () {
|
describe('Protocol message processing after completing initialization', function () {
|
||||||
let client;
|
let client;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
@ -2495,7 +2560,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
client._fbHeight = 20;
|
client._fbHeight = 20;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Framebuffer Update Handling', function () {
|
describe('Framebuffer update handling', function () {
|
||||||
function sendFbuMsg(rectInfo, rectData, client, rectCnt) {
|
function sendFbuMsg(rectInfo, rectData, client, rectCnt) {
|
||||||
let data = [];
|
let data = [];
|
||||||
|
|
||||||
@ -2576,7 +2641,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
expect(callback.args[0][0].detail.clean).to.be.false;
|
expect(callback.args[0][0].detail.clean).to.be.false;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Message Encoding Handlers', function () {
|
describe('Message encoding handlers', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
// a really small frame
|
// a really small frame
|
||||||
client._fbWidth = 4;
|
client._fbWidth = 4;
|
||||||
@ -2817,7 +2882,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('the VMware Cursor pseudo-encoding handler', function () {
|
describe('the VMware cursor pseudo-encoding handler', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sinon.spy(client._cursor, 'change');
|
sinon.spy(client._cursor, 'change');
|
||||||
});
|
});
|
||||||
@ -3150,7 +3215,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('XVP Message Handling', function () {
|
describe('XVP message handling', function () {
|
||||||
it('should set the XVP version and fire the callback with the version on XVP_INIT', function () {
|
it('should set the XVP version and fire the callback with the version on XVP_INIT', function () {
|
||||||
const spy = sinon.spy();
|
const spy = sinon.spy();
|
||||||
client.addEventListener("capabilities", spy);
|
client.addEventListener("capabilities", spy);
|
||||||
@ -3172,7 +3237,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Normal Clipboard Handling Receive', function () {
|
describe('Normal clipboard handling receive', function () {
|
||||||
it('should fire the clipboard callback with the retrieved text on ServerCutText', function () {
|
it('should fire the clipboard callback with the retrieved text on ServerCutText', function () {
|
||||||
const expectedStr = 'cheese!';
|
const expectedStr = 'cheese!';
|
||||||
const data = [3, 0, 0, 0];
|
const data = [3, 0, 0, 0];
|
||||||
@ -3187,7 +3252,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Extended clipboard Handling', function () {
|
describe('Extended clipboard handling', function () {
|
||||||
|
|
||||||
describe('Extended clipboard initialization', function () {
|
describe('Extended clipboard initialization', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
@ -3222,7 +3287,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Extended Clipboard Handling Receive', function () {
|
describe('Extended clipboard handling receive', function () {
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
// Send our capabilities
|
// Send our capabilities
|
||||||
@ -3493,7 +3558,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Asynchronous Events', function () {
|
describe('Asynchronous events', function () {
|
||||||
let client;
|
let client;
|
||||||
let pointerEvent;
|
let pointerEvent;
|
||||||
let keyEvent;
|
let keyEvent;
|
||||||
@ -3537,7 +3602,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Mouse Events', function () {
|
describe('Mouse events', function () {
|
||||||
function sendMouseMoveEvent(x, y) {
|
function sendMouseMoveEvent(x, y) {
|
||||||
let pos = elementToClient(x, y);
|
let pos = elementToClient(x, y);
|
||||||
let ev;
|
let ev;
|
||||||
@ -3663,7 +3728,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
50, 70, 0x0);
|
50, 70, 0x0);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Event Aggregation', function () {
|
describe('Event aggregation', function () {
|
||||||
it('should send a single pointer event on mouse movement', function () {
|
it('should send a single pointer event on mouse movement', function () {
|
||||||
sendMouseMoveEvent(50, 70);
|
sendMouseMoveEvent(50, 70);
|
||||||
clock.tick(100);
|
clock.tick(100);
|
||||||
@ -3790,7 +3855,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Wheel Events', function () {
|
describe('Wheel events', function () {
|
||||||
function sendWheelEvent(x, y, dx, dy, mode=0) {
|
function sendWheelEvent(x, y, dx, dy, mode=0) {
|
||||||
let pos = elementToClient(x, y);
|
let pos = elementToClient(x, y);
|
||||||
let ev;
|
let ev;
|
||||||
@ -3900,7 +3965,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Keyboard Events', function () {
|
describe('Keyboard events', function () {
|
||||||
it('should send a key message on a key press', function () {
|
it('should send a key message on a key press', function () {
|
||||||
let esock = new Websock();
|
let esock = new Websock();
|
||||||
let ews = new FakeWebSocket();
|
let ews = new FakeWebSocket();
|
||||||
@ -4613,7 +4678,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('WebSocket Events', function () {
|
describe('WebSocket events', function () {
|
||||||
// message events
|
// message events
|
||||||
it('should do nothing if we receive an empty message and have nothing in the queue', function () {
|
it('should do nothing if we receive an empty message and have nothing in the queue', function () {
|
||||||
sinon.spy(client, "_normalMsg");
|
sinon.spy(client, "_normalMsg");
|
||||||
@ -4901,7 +4966,7 @@ describe('RFB messages', function () {
|
|||||||
sock.attach(websock);
|
sock.attach(websock);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Input Events', function () {
|
describe('Input events', function () {
|
||||||
it('should send correct data for keyboard events', function () {
|
it('should send correct data for keyboard events', function () {
|
||||||
// FIXME: down should be boolean
|
// FIXME: down should be boolean
|
||||||
RFB.messages.keyEvent(sock, 0x12345678, 0);
|
RFB.messages.keyEvent(sock, 0x12345678, 0);
|
||||||
@ -4936,7 +5001,7 @@ describe('RFB messages', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Clipboard Events', function () {
|
describe('Clipboard events', function () {
|
||||||
it('should send correct data for clipboard events', function () {
|
it('should send correct data for clipboard events', function () {
|
||||||
RFB.messages.clientCutText(sock, new Uint8Array([ 0x01, 0x23, 0x45, 0x67 ]));
|
RFB.messages.clientCutText(sock, new Uint8Array([ 0x01, 0x23, 0x45, 0x67 ]));
|
||||||
let expected =
|
let expected =
|
||||||
@ -4946,7 +5011,7 @@ describe('RFB messages', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Extended Clipboard Handling Send', function () {
|
describe('Extended clipboard handling send', function () {
|
||||||
it('should call clientCutText with correct Caps data', function () {
|
it('should call clientCutText with correct Caps data', function () {
|
||||||
let formats = {
|
let formats = {
|
||||||
0: 2,
|
0: 2,
|
||||||
@ -5133,7 +5198,7 @@ describe('RFB messages', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Screen Layout', function () {
|
describe('Screen layout', function () {
|
||||||
it('should send correct data for screen layout changes', function () {
|
it('should send correct data for screen layout changes', function () {
|
||||||
RFB.messages.setDesktopSize(sock, 12345, 54321, 0x12345678, 0x90abcdef);
|
RFB.messages.setDesktopSize(sock, 12345, 54321, 0x12345678, 0x90abcdef);
|
||||||
let expected =
|
let expected =
|
||||||
@ -5155,7 +5220,7 @@ describe('RFB messages', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Continuous Updates', function () {
|
describe('Continuous updates', function () {
|
||||||
it('should send correct data for continuous updates configuration', function () {
|
it('should send correct data for continuous updates configuration', function () {
|
||||||
// FIXME: enable should be boolean
|
// FIXME: enable should be boolean
|
||||||
RFB.messages.enableContinuousUpdates(sock, 0, 12345, 54321, 34343, 18181);
|
RFB.messages.enableContinuousUpdates(sock, 0, 12345, 54321, 34343, 18181);
|
||||||
@ -5165,7 +5230,7 @@ describe('RFB messages', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Pixel Format', function () {
|
describe('Pixel format', function () {
|
||||||
it('should send correct data for normal depth', function () {
|
it('should send correct data for normal depth', function () {
|
||||||
RFB.messages.pixelFormat(sock, 24, true);
|
RFB.messages.pixelFormat(sock, 24, true);
|
||||||
let expected =
|
let expected =
|
||||||
|
|||||||
@ -41,7 +41,7 @@ function push32(arr, num) {
|
|||||||
num & 0xFF);
|
num & 0xFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('RRE Decoder', function () {
|
describe('RRE decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Tight Decoder', function () {
|
describe('Tight decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('TightPng Decoder', function () {
|
describe('TightPng decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -535,7 +535,7 @@ describe('Websock', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('WebSocket Receiving', function () {
|
describe('WebSocket receiving', function () {
|
||||||
let sock;
|
let sock;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sock = new Websock();
|
sock = new Websock();
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Zlib Decoder', function () {
|
describe('Zlib decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('ZRLE Decoder', function () {
|
describe('ZRLE decoder', function () {
|
||||||
let decoder;
|
let decoder;
|
||||||
let display;
|
let display;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title>VNC Playback</title>
|
<title>VNC playback</title>
|
||||||
<script type="module" src="./playback-ui.js"></script>
|
<script type="module" src="./playback-ui.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
/*
|
/*
|
||||||
* genkeysymdef: X11 keysymdef.h to JavaScript converter
|
* genkeysymdef: X11 keysymdef.h to JavaScript converter
|
||||||
* Copyright (C) 2018 The noVNC Authors
|
* Copyright (C) 2018 The noVNC authors
|
||||||
* Licensed under MPL 2.0 (see LICENSE.txt)
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (C) 2018 The noVNC Authors
|
# Copyright (C) 2018 The noVNC authors
|
||||||
# Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
# Licensed under MPL 2.0 or any later version (see LICENSE.txt)
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
@ -82,7 +82,7 @@ cleanup() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Process Arguments
|
# Process arguments
|
||||||
|
|
||||||
# Arguments that only apply to chrooter itself
|
# Arguments that only apply to chrooter itself
|
||||||
while [ "$*" ]; do
|
while [ "$*" ]; do
|
||||||
|
|||||||
46
vnc.html
46
vnc.html
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
noVNC example: simple example using default UI
|
noVNC example: simple example using default UI
|
||||||
Copyright (C) 2019 The noVNC Authors
|
Copyright (C) 2019 The noVNC authors
|
||||||
noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
||||||
This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
||||||
|
|
||||||
@ -108,7 +108,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- noVNC Control Bar -->
|
<!-- noVNC control bar -->
|
||||||
<div id="noVNC_control_bar_anchor" class="noVNC_vcenter">
|
<div id="noVNC_control_bar_anchor" class="noVNC_vcenter">
|
||||||
|
|
||||||
<div id="noVNC_control_bar">
|
<div id="noVNC_control_bar">
|
||||||
@ -123,18 +123,18 @@
|
|||||||
<!-- Drag/Pan the viewport -->
|
<!-- Drag/Pan the viewport -->
|
||||||
<input type="image" alt="Drag" src="app/images/drag.svg"
|
<input type="image" alt="Drag" src="app/images/drag.svg"
|
||||||
id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden"
|
id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden"
|
||||||
title="Move/Drag Viewport">
|
title="Move/Drag viewport">
|
||||||
|
|
||||||
<!--noVNC Touch Device only buttons-->
|
<!--noVNC touch device only buttons-->
|
||||||
<div id="noVNC_mobile_buttons">
|
<div id="noVNC_mobile_buttons">
|
||||||
<input type="image" alt="Keyboard" src="app/images/keyboard.svg"
|
<input type="image" alt="Keyboard" src="app/images/keyboard.svg"
|
||||||
id="noVNC_keyboard_button" class="noVNC_button" title="Show Keyboard">
|
id="noVNC_keyboard_button" class="noVNC_button" title="Show keyboard">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Extra manual keys -->
|
<!-- Extra manual keys -->
|
||||||
<input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg"
|
<input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg"
|
||||||
id="noVNC_toggle_extra_keys_button" class="noVNC_button"
|
id="noVNC_toggle_extra_keys_button" class="noVNC_button"
|
||||||
title="Show Extra Keys">
|
title="Show extra keys">
|
||||||
<div class="noVNC_vcenter">
|
<div class="noVNC_vcenter">
|
||||||
<div id="noVNC_modifiers" class="noVNC_panel">
|
<div id="noVNC_modifiers" class="noVNC_panel">
|
||||||
<input type="image" alt="Ctrl" src="app/images/ctrl.svg"
|
<input type="image" alt="Ctrl" src="app/images/ctrl.svg"
|
||||||
@ -190,9 +190,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Toggle fullscreen -->
|
<!-- Toggle fullscreen -->
|
||||||
<input type="image" alt="Full Screen" src="app/images/fullscreen.svg"
|
<input type="image" alt="Full screen" src="app/images/fullscreen.svg"
|
||||||
id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden"
|
id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden"
|
||||||
title="Full Screen">
|
title="Full screen">
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<input type="image" alt="Settings" src="app/images/settings.svg"
|
<input type="image" alt="Settings" src="app/images/settings.svg"
|
||||||
@ -205,21 +205,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<label><input id="noVNC_setting_shared" type="checkbox"> Shared Mode</label>
|
<label><input id="noVNC_setting_shared" type="checkbox"> Shared mode</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label><input id="noVNC_setting_view_only" type="checkbox"> View Only</label>
|
<label><input id="noVNC_setting_view_only" type="checkbox"> View only</label>
|
||||||
</li>
|
</li>
|
||||||
<li><hr></li>
|
<li><hr></li>
|
||||||
<li>
|
<li>
|
||||||
<label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label>
|
<label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to window</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label for="noVNC_setting_resize">Scaling Mode:</label>
|
<label for="noVNC_setting_resize">Scaling mode:</label>
|
||||||
<select id="noVNC_setting_resize" name="vncResize">
|
<select id="noVNC_setting_resize" name="vncResize">
|
||||||
<option value="off">None</option>
|
<option value="off">None</option>
|
||||||
<option value="scale">Local Scaling</option>
|
<option value="scale">Local scaling</option>
|
||||||
<option value="remote">Remote Resizing</option>
|
<option value="remote">Remote resizing</option>
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li><hr></li>
|
<li><hr></li>
|
||||||
@ -261,15 +261,15 @@
|
|||||||
</li>
|
</li>
|
||||||
<li><hr></li>
|
<li><hr></li>
|
||||||
<li>
|
<li>
|
||||||
<label><input id="noVNC_setting_reconnect" type="checkbox"> Automatic Reconnect</label>
|
<label><input id="noVNC_setting_reconnect" type="checkbox"> Automatic reconnect</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label for="noVNC_setting_reconnect_delay">Reconnect Delay (ms):</label>
|
<label for="noVNC_setting_reconnect_delay">Reconnect delay (ms):</label>
|
||||||
<input id="noVNC_setting_reconnect_delay" type="number">
|
<input id="noVNC_setting_reconnect_delay" type="number">
|
||||||
</li>
|
</li>
|
||||||
<li><hr></li>
|
<li><hr></li>
|
||||||
<li>
|
<li>
|
||||||
<label><input id="noVNC_setting_show_dot" type="checkbox"> Show Dot when No Cursor</label>
|
<label><input id="noVNC_setting_show_dot" type="checkbox"> Show dot when no cursor</label>
|
||||||
</li>
|
</li>
|
||||||
<li><hr></li>
|
<li><hr></li>
|
||||||
<!-- Logging selection dropdown -->
|
<!-- Logging selection dropdown -->
|
||||||
@ -290,7 +290,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Connection Controls -->
|
<!-- Connection controls -->
|
||||||
<input type="image" alt="Disconnect" src="app/images/disconnect.svg"
|
<input type="image" alt="Disconnect" src="app/images/disconnect.svg"
|
||||||
id="noVNC_disconnect_button" class="noVNC_button"
|
id="noVNC_disconnect_button" class="noVNC_button"
|
||||||
title="Disconnect">
|
title="Disconnect">
|
||||||
@ -305,7 +305,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Status Dialog -->
|
<!-- Status dialog -->
|
||||||
<div id="noVNC_status"></div>
|
<div id="noVNC_status"></div>
|
||||||
|
|
||||||
<!-- Connect button -->
|
<!-- Connect button -->
|
||||||
@ -320,7 +320,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Server Key Verification Dialog -->
|
<!-- Server key verification dialog -->
|
||||||
<div class="noVNC_center noVNC_connect_layer">
|
<div class="noVNC_center noVNC_connect_layer">
|
||||||
<div id="noVNC_verify_server_dlg" class="noVNC_panel"><form>
|
<div id="noVNC_verify_server_dlg" class="noVNC_panel"><form>
|
||||||
<div class="noVNC_heading">
|
<div class="noVNC_heading">
|
||||||
@ -344,7 +344,7 @@
|
|||||||
</form></div>
|
</form></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Password Dialog -->
|
<!-- Password dialog -->
|
||||||
<div class="noVNC_center noVNC_connect_layer">
|
<div class="noVNC_center noVNC_connect_layer">
|
||||||
<div id="noVNC_credentials_dlg" class="noVNC_panel"><form>
|
<div id="noVNC_credentials_dlg" class="noVNC_panel"><form>
|
||||||
<div class="noVNC_heading">
|
<div class="noVNC_heading">
|
||||||
@ -359,12 +359,12 @@
|
|||||||
<input id="noVNC_password_input" type="password">
|
<input id="noVNC_password_input" type="password">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input id="noVNC_credentials_button" type="submit" value="Send Credentials" class="noVNC_submit">
|
<input id="noVNC_credentials_button" type="submit" value="Send credentials" class="noVNC_submit">
|
||||||
</div>
|
</div>
|
||||||
</form></div>
|
</form></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Transition Screens -->
|
<!-- Transition screens -->
|
||||||
<div id="noVNC_transition">
|
<div id="noVNC_transition">
|
||||||
<div id="noVNC_transition_text"></div>
|
<div id="noVNC_transition_text"></div>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user