Skip to content

Commit

Permalink
Server: Allow disabling server-side key mapping
Browse files Browse the repository at this point in the history
Referring to novnc/noVNC#1886, there are some
VNC viewers that don't allow the feature to be disabled on the client
side.
  • Loading branch information
dcommander committed Aug 12, 2024
1 parent af9fd5e commit f683a73
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 11 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ endif()

project(TurboVNC NONE)
string(TOLOWER ${CMAKE_PROJECT_NAME} CMAKE_PROJECT_NAME_LC)
set(VERSION 3.1.2)
set(DOCVERSION 3.1.2)
set(VERSION 3.1.3)
set(DOCVERSION 3.1.3)
set(COPYRIGHT_YEAR "1999-2024")
set(COPYRIGHT "The VirtualGL Project and many others (see README.md)")
set(URLTEXT "Visit http://www.TurboVNC.org for more information on TurboVNC")
Expand Down
9 changes: 9 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
3.1.3
=====

### Significant changes relative to 3.1.2:

1. Added a new Xvnc command-line option (`-noserverkeymap`) that can be used to
disable the server-side key mapping feature introduced in 3.1 beta1[4].


3.1.2
=====

Expand Down
18 changes: 9 additions & 9 deletions doc/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta name="language" content="en">
<meta name="date" content="2024-07-31T17:54:24">
<meta name="date" content="2024-08-12T10:37:50">
<meta name="generator" content="deplate.rb 0.8.5">
<title>User&rsquo;s Guide for TurboVNC 3.1.2</title>
<title>User&rsquo;s Guide for TurboVNC 3.1.3</title>
<link rel="start" href="index.html" title="Frontpage">
<link rel="chapter" href="index.html#hd001" title="1 Legal Information">
<link rel="chapter" href="index.html#hd002" title="2 Conventions Used in This Document">
Expand All @@ -23,7 +23,7 @@
<body >
<a name="#pagetop"></a>
<div class="title">
<p class="title">User&rsquo;s Guide for TurboVNC 3.1.2</p>
<p class="title">User&rsquo;s Guide for TurboVNC 3.1.3</p>
</div>
<div id="hd">
<div id="hdBlock" class="hd">
Expand Down Expand Up @@ -588,8 +588,8 @@ <h2 id="hd005002">5.2&nbsp;Installing the TurboVNC Viewer on macOS</h2>
<ol class="Ordered numeric">
<li class="Ordered-1 Ordered">
Download the TurboVNC Mac disk image
(<strong class="filename">TurboVNC-3.1.2-x86_64.dmg</strong> for Intel
CPUs or <strong class="filename">TurboVNC-3.1.2-arm64.dmg</strong> for
(<strong class="filename">TurboVNC-3.1.3-x86_64.dmg</strong> for Intel
CPUs or <strong class="filename">TurboVNC-3.1.3-arm64.dmg</strong> for
Apple silicon CPUs) from the
<span class="remote"><a href="https://github.com/TurboVNC/turbovnc/releases" target="_blank" class="remote">Releases
area</a></span><a name="idx0020"></a> of the
Expand All @@ -610,8 +610,8 @@ <h2 id="hd005003">5.3&nbsp;Installing the TurboVNC Viewer on Windows</h2>
<ol class="Ordered numeric">
<li class="Ordered-1 Ordered">
Download the TurboVNC Windows installer package
(<strong class="filename">TurboVNC-3.1.2-x64.exe</strong> for 64-bit
systems or <strong class="filename">TurboVNC-3.1.2-x86.exe</strong> for
(<strong class="filename">TurboVNC-3.1.3-x64.exe</strong> for 64-bit
systems or <strong class="filename">TurboVNC-3.1.3-x86.exe</strong> for
legacy 32-bit-only systems) from the
<span class="remote"><a href="https://github.com/TurboVNC/turbovnc/releases" target="_blank" class="remote">Releases
area</a></span><a name="idx0022"></a> of the
Expand All @@ -631,13 +631,13 @@ <h2 id="hd005004">5.4&nbsp;Installing TurboVNC from Source</h2>

<p>If you are using a Linux/Un*x platform for which there is not a
pre-built TurboVNC binary package available, then download the TurboVNC
source tarball (<strong class="filename">turbovnc-3.1.2.tar.gz</strong>)
source tarball (<strong class="filename">turbovnc-3.1.3.tar.gz</strong>)
from the
<span class="remote"><a href="https://github.com/TurboVNC/turbovnc/releases" target="_blank" class="remote">Releases
area</a></span><a name="idx0024"></a> of the
<span class="remote"><a href="https://github.com/TurboVNC/turbovnc" target="_blank" class="remote">TurboVNC
GitHub project page</a></span><a name="idx0025"></a>, uncompress it,
<code>cd turbovnc-3.1.2</code>, and read
<code>cd turbovnc-3.1.3</code>, and read
<strong class="filename">BUILDING.md</strong> for further instructions
on how to build TurboVNC from source.</p>

Expand Down
11 changes: 11 additions & 0 deletions unix/Xvnc/programs/Xserver/Xvnc.man.in
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,17 @@ connected viewer to complete [default: 20000].
\fB\-nocursor\fR
Don't display a mouse pointer on the remote desktop.

.TP
\fB\-noserverkeymap\fR
Disable the QEMU Extended Key Event, QEMU LED State, and VMware LED State RFB
extensions, which allow raw keyboard scancodes to be transmitted to the VNC
server instead of X11 keysyms. Those extensions cause the mapping of keycodes
into keysyms to be performed on the host rather than on the client, which
eliminates various system-specific and locale-specific key mapping issues
(including issues with dead keys on international keyboards.) Disabling the
extensions causes TurboVNC to behave like TurboVNC 3.0.x and prior, mapping
keycodes to keysyms on the client.

.TP
\fB\-pointerlocktimeout \fItime\fR
Maximum amount of time, in milliseconds, to wait for a new pointer event from a
Expand Down
8 changes: 8 additions & 0 deletions unix/Xvnc/programs/Xserver/hw/vnc/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,11 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return 1;
}

if (strcasecmp(argv[i], "-noserverkeymap") == 0) {
enableQEMUExtKeyEvent = FALSE;
return 1;
}

if (strcasecmp(argv[i], "-pointerlocktimeout") == 0) {
REQUIRE_ARG();
rfbPointerLockTimeout = atoi(argv[i + 1]);
Expand Down Expand Up @@ -1744,6 +1749,9 @@ void ddxUseMsg(void)
ErrorF("\nTurboVNC input options\n");
ErrorF("======================\n");
ErrorF("-nocursor don't display a cursor\n");
ErrorF("-noserverkeymap disable QEMU Extended Key Event, QEMU LED State, and\n");
ErrorF(" VMware LED State RFB extensions, which cause keycode to\n");
ErrorF(" keysym mapping to be performed on the host\n");
ErrorF("-pointerlocktimeout time\n");
ErrorF(" max time in ms (0 = indefinitely) to wait for a new\n");
ErrorF(" pointer event from a connected viewer that is dragging\n");
Expand Down

0 comments on commit f683a73

Please sign in to comment.