Juanjo Diaz
879e33ab64
Extract rQshift to common function
2018-12-08 17:32:00 +02:00
Juanjo Diaz
8a189a6291
Add getters/setter to websock
2018-12-08 17:31:20 +02:00
Samuel Mannehed
18439b0680
Merge pull request #1165 from juanjoDiaz/throw_errors_instead_of_strings
...
Throw Error instead of String
2018-11-26 19:09:44 +01:00
Samuel Mannehed
2bab9a0460
Merge pull request #1166 from juanjoDiaz/simplify_EventTargetMixin
...
Simplify EventTargetMixin
2018-11-26 18:42:10 +01:00
Juanjo Diaz
11ef53544f
Simplify EventTargetMixin
2018-11-25 13:53:23 +02:00
Juanjo Diaz
d3ed883a8f
Use `new` when constructing errors
2018-11-24 21:44:11 +02:00
Juanjo Diaz
84a5a2d827
Throw Error instead of String
2018-11-24 19:47:57 +02:00
Solly Ross
84586c0f17
Change copyright header ( #1138 )
...
* Change copyright header
This updates the copyright header to say "The noVNC Authors". People
who previously had copyright listings are now under the AUTHORS file.
2018-10-09 12:15:35 +02:00
Pierre Ossman
679535ec29
Fix cursor encoding handling from earlier merge
...
Old code snuck in when merging the split of decoders to separate
classes. Restore the proper handling of cursors.
2018-09-18 11:08:02 +02:00
Pierre Ossman
9881899e7b
Merge branch 'style' of https://github.com/CendioOssman/noVNC
2018-09-17 13:54:04 +02:00
Pierre Ossman
934c606d91
Merge branch 'decoders' of https://github.com/CendioOssman/noVNC
2018-09-17 13:47:12 +02:00
Alexander E. Patrakov
4c38179d15
Show dot when there is no visible cursor
...
Disabled by default.
2018-09-14 20:31:59 +05:00
Alexander E. Patrakov
d1314d4b3a
Moved the "pixels + mask -> RGBA" logic to rfb.js
...
As requested by Pierre Ossman - he needs this for supporting other
cursor extensions.
2018-09-07 23:01:46 +08:00
Pierre Ossman
2c5491e131
Enforce space after function name
2018-09-06 17:34:15 +02:00
Pierre Ossman
3f1cda2e37
Enforce space before code block
2018-09-06 17:29:26 +02:00
Pierre Ossman
0ae5c54ab3
Enforce explicit semi-colons
2018-09-06 17:25:02 +02:00
Pierre Ossman
426a8c927b
Enforce curly braces for control statements
2018-09-06 17:22:40 +02:00
Pierre Ossman
4a16dc51a8
Enforce no trailing whitespace
2018-09-06 17:12:45 +02:00
Pierre Ossman
942a312779
Enforce object key spacing
2018-09-06 17:07:11 +02:00
Pierre Ossman
6786fd8719
Enforce comma spacing
2018-09-06 16:43:31 +02:00
Pierre Ossman
7b536961b2
Enforce indentation
2018-09-06 16:37:38 +02:00
Pierre Ossman
a98881151f
Enforce brace style
2018-09-06 15:39:26 +02:00
Pierre Ossman
923cd22083
Move decoders to separate classes
...
Makes things a lot clearer by letting each encoding handle its own
details and state.
2018-08-22 15:12:34 +02:00
Pierre Ossman
11309f3243
Handle pseudo encodings directly
...
These have very special behaviour compared to normal data encodings,
so separate out them and handle them separately.
2018-08-22 15:12:10 +02:00
Pierre Ossman
e17cae8f32
Remove statistics tracking
...
The profiles in the browsers are much better these days and give us
much better data than we can provide ourselves.
2018-08-22 15:12:05 +02:00
Pierre Ossman
71960cda85
Give proper int argument to encodingName()
2018-08-22 14:46:37 +02:00
Pierre Ossman
ce6287574f
Merge branch 'hidpi_scale' of https://github.com/CendioOssman/noVNC
2018-08-16 17:50:09 +02:00
Samuel Mannehed
3b7c47417e
Move dragThreshold definition to util/
...
In order to avoid multiple declarations that has to be updated in the
case of future updates.
2018-08-10 11:24:09 +02:00
Pierre Ossman
ab1ace383e
Handle fractional screen sizes
...
With high DPI systems we can end up with a container with a size that
is not an integer number of CSS pixels. Make sure we can handle those
cases by allowing a fractional size for the output canvas. Framebuffer
size and viewport coordinates are still restricted to integer dimensions
though.
Based on initial patch by Alexander E. Patrakov.
2018-07-26 14:15:59 +02:00
Juanjo Diaz
651c23ece3
Use fat arrow functions `const foo = () => { ... };` for callbacks
...
and any other function that is passed around and it's not a top level function
2018-07-12 19:06:57 +02:00
Juanjo Diaz
0e4808bf6f
Use ES6 classes
...
Always use the shorthand notation if the function is a method of an object or class `{ foo() { ... } }` or `class bar { foo() { ... } }`
unless it's a callback in which case you a fat arrow function should be used `{ cb: () => { ... } }`
2018-07-12 19:06:57 +02:00
Pierre Ossman
67fefcf184
Merge branch 'cursor' of https://github.com/CendioOssman/noVNC
2018-07-11 13:39:37 +02:00
Pierre Ossman
baa4f23ee5
Provide fallback cursor method
...
Some browsers don't support custom cursors, and there are cases
where the browsers refuse to show the cursor. Handle both of these
cases by letting the browser render the cursor via a floating
canvas.
This allows us to support a local cursor at all times.
2018-07-06 16:37:27 +02:00
Pierre Ossman
1073b60155
Sort vkeys table
2018-07-04 15:53:41 +02:00
Pierre Ossman
8acadd9e97
Merge branch 'fix/ie11-numpad5-compatibility' of https://github.com/vlastoun/noVNC
2018-07-04 15:53:30 +02:00
Samuel Mannehed
f90c2a6d4b
Avoid TypedArray.slice() because of IE11
2018-06-15 12:00:43 +02:00
Samuel Mannehed
d9814c06bf
Use string assignment operator instead of concat()
...
The assignment operator is a lot faster.
2018-06-15 11:59:28 +02:00
Samuel Mannehed
4318c8cafd
Use the correct slicing for rQshiftStr
...
This didn't result in any error however since slice() handles such
mistakes gracefully.
2018-06-15 11:56:56 +02:00
Samuel Mannehed
db9daa98a5
Avoid big strings on the stack
...
Previous code resulted in RangeErrors by potentially creating big
strings.
Fixes issue #1065
2018-06-14 16:59:52 +02:00
Samuel Mannehed
362bd5e3a2
Call rQshiftBytes to avoid code duplication
2018-06-14 16:51:29 +02:00
Samuel Mannehed
e87b645b56
Remove typedArrayToString
...
We don't use PhantomJS anymore
2018-06-14 16:43:48 +02:00
Pierre Ossman
8f47bd296c
Work around Siemens touch panel authentication bug
...
Siemens' touch panels support Tight authentication as well as NOTUNNEL,
but they fail to advertise the latter. Work around this issue by detecting
a Siemens device (through their custom tunnel types) and assume NOTUNNEL
support even if not advertised.
2018-06-07 15:03:34 +02:00
Pierre Ossman
e6bad200e4
Add debug logging for Tight authentication
...
Makes it easier to diagnose user issues when we can see what the
server and noVNC are trying to negotiate.
2018-06-07 14:57:17 +02:00
Juanjo Diaz
2b5f94fa6a
Prefer const/let over var
2018-05-24 00:27:09 +03:00
Juanjo Diaz
8727f598c2
Add eslint and fix reported issues
2018-05-24 00:25:44 +03:00
Vlastimil Sadilek
5858f472e3
Fix: IE11 Numpad5 compatibility when numlock off
...
This fix Numpad5 in Internet Explorer 11 if numlock state of host differs with numlock state of
VNC console.
2018-05-16 13:52:56 +02:00
Samuel Mannehed
2bb8b28d78
Handle sending large clipboards
...
Pasting clipboard texts that were larger than 10240 bytes didnt work and
caused a crash in noVNC. This commit fixes the crash and adds handling
for sending large clipboard texts. Fixes issue #1065 .
2018-05-07 13:02:51 +02:00
Vlastimil Sadilek
f3e2fc58ec
Fix: undefined err, undefined Exception
2018-05-04 14:23:02 +02:00
Pierre Ossman
b475eed5fa
Separate out cursor handling
...
Make cursor handling more generic in preparation for generic handling
of corner cases.
2018-03-15 17:22:21 +01:00
Pierre Ossman
35dd3c2299
Merge branches 'ffalt' and 'altgr' of https://github.com/CendioOssman/noVNC
2018-03-13 16:03:01 +01:00
Pierre Ossman
3a7c0c67c1
Work around broken Alt keyup in Firefox
...
Firefox no longer sends keyup events properly for the Alt keys. Try
to sniff out the state of the Alt key by monitoring other events that
include its state.
2018-03-13 16:01:38 +01:00
Pierre Ossman
b22c9ef954
Better detection of AltGr on Windows
...
Try to properly detect the fake CtrlL+AltR sequence Windows sends
when pressing AltGr. This allows us to send more accurate key
events over to the server.
2018-03-09 12:14:23 +01:00
Pierre Ossman
d6ae445773
Handle _keyDownList in _sendKeyEvent()
...
This makes sure it never gets out of sync with what we've actually
sent.
2018-03-09 12:13:21 +01:00
Pierre Ossman
e1802cac7f
Separate Tight PNG in stats output
2018-02-27 10:52:02 +01:00
Pierre Ossman
5bdcf5d31c
Enforce Tight PNG restrictions
...
Tight PNG rects cannot use the basic compression variants, and PNG
cannot be used in a standard Tight rect.
This is a partial revert of 3e8b26a
based on better understanding
of the encoding.
2018-02-27 10:50:13 +01:00
Leslie Qi Wang
2c813a33fe
add encoding support for TightPNG
2018-02-23 10:38:17 -08:00
Solly Ross
a4d51bd220
Merge pull request #1009 from juanjoDiaz/move_browser_checks
...
Move browser checks to browser.js
2018-02-01 10:33:28 -05:00
Solly Ross
096fcc4fa3
Merge pull request #1007 from juanjoDiaz/remove_jshints_comments
...
Remove jshint comments
2018-01-31 10:58:20 -05:00
Juanjo Diaz
9e1bd410aa
Remove jshint comments
2018-01-31 07:38:29 -08:00
Solly Ross
ca0644b252
Merge pull request #1008 from juanjoDiaz/remove_unnecesary_base64_dependency
...
Remove unnecessary base64 dependency
2018-01-30 13:41:28 -05:00
Juanjo Diaz
a003535941
Remove console statements
2018-01-30 08:53:38 -08:00
Juanjo Diaz
24c99fbfd7
Remove unnecessary Log dependency in events.js
2018-01-30 08:38:46 -08:00
Juanjo Diaz
59ef29163e
Move browser checks to browser.js
2018-01-30 08:35:47 -08:00
Juanjo Diaz
9dc0f4095b
Remove unnecessary base64 dependency
2018-01-30 08:19:39 -08:00
Pierre Ossman
72abf78487
Merge branch 'master' of https://github.com/josiah2009/noVNC
2017-12-14 12:50:38 +01:00
Samuel Mannehed
b245ec7038
Fix disconnect crash when screen doesn't exist
...
The function removeChild throws an exception when the element specified
doesn't exist. This can happen when opening the websocket throws an
exception during connect. Fixes issue #979
2017-12-12 18:25:20 +01:00
Pierre Ossman
4f4f62261a
Merge branch 'resize' of https://github.com/CendioOssman/noVNC
2017-12-11 16:48:54 +01:00
Pierre Ossman
9b84f51685
Move resize handling in to RFB object
...
Makes the API simpler and makes it easier for other frontends to
get this functionality.
2017-12-06 11:29:57 +01:00
Pierre Ossman
898cd32c07
Don't send pointer event on end of drag
...
We should only send an event to the server if we didn't actually
end up dragging the viewport.
2017-11-30 16:15:42 +01:00
Josiah White
baf822d3de
Initalize cached 16x16 tile.
2017-11-30 03:17:02 -05:00
Pierre Ossman
7f39868158
Remove noisy websock debug logging
...
It generates too many log lines that it drowns out everything else.
2017-11-24 13:10:35 +01:00
Pierre Ossman
ddcb60c3b3
Don't log WebSocket close by default
...
This is an expected event so it shouldn't be logged by default.
2017-11-20 15:21:59 +01:00
Samuel Mannehed
db46e36eb9
Merge pull request #950 from samhed/disconnectapi
...
Abstract information from RFB to the UI
2017-11-17 11:01:11 +01:00
Samuel Mannehed
7279364c9a
Move localization.js to app
...
Since it is no longer used in core. Also splits localization tests into
a separate file.
2017-11-14 15:36:12 +01:00
Samuel Mannehed
d472f3f19e
Abstract RFB errors to avoid sending strings
...
The API allowed strings to be passed from the RFB module to the
application using the disconnect reason. This caused problems since
the application didn't have control over translations for these
strings.
Most of the information being passed using this string was very
technical and not helpful to the end user. One exception to this was
the security result information regarding for example authentication
failures. The protocol allows the VNC server to pass a string
directly to the user in the security result.
So the disconnect reason is replaced by a boolean saying if the
disconnection was clean or not. And for the security result information
from the server, a new event has been added.
2017-11-14 15:36:12 +01:00
Samuel Mannehed
ee5cae9fee
Replace updatestate event with connect
...
Instead of exposing all the internal connection states, the RFB module
will now only send events on connect and on disconnect. This makes it
simpler for the application and gets rid of the double events that were
being sent on disconnect (previously updatestate and disconnect).
2017-11-14 14:10:36 +01:00
Pierre Ossman
b8dfb983df
Fix old focus on click references
...
The property was renamed when mergin the public API changes, but
a few references were overlooked.
2017-11-11 16:44:53 +01:00
Samuel Mannehed
5b20d338ce
Remove RFB.notification()
...
This interface was a band aid for poor design. The two cases where it
was used was replaced by logging.
2017-11-11 02:10:12 +01:00
Samuel Mannehed
4e1c5435b8
Add missing semicolons
2017-11-11 02:10:12 +01:00
Pierre Ossman
a201bfc5eb
Merge branch 'api' of https://github.com/CendioOssman/noVNC
2017-11-10 14:19:05 +01:00
Pierre Ossman
e89eef94aa
Use standard EventTarget interface for events
2017-11-09 13:14:16 +01:00
Pierre Ossman
65fdfeae13
Remove unused options argument in onnotification event handler
2017-11-09 13:13:41 +01:00
Pierre Ossman
2f4516f293
Integrate connect() in to constructor
...
An RFB object represents a single connection so it doesn't make
sense to have one without it trying to connect right away. Matches
the behaviour of other APIs, e.g. WebSocket.
2017-11-09 13:13:41 +01:00
Pierre Ossman
68e09edcdc
Remove disconnectTimeout property
...
Callers should not need to modify this timeout.
2017-11-09 13:13:41 +01:00
Pierre Ossman
002907d2ce
Remove "downscale only" mode
...
The normal scaling mode should be sufficient for most use cases, so
let's keep the interface simple.
2017-11-09 13:13:41 +01:00
Pierre Ossman
8d1f0a3de8
Remove local cursor setting
...
We have no reason to disable this except for touch devices, which
we can handle without having a setting for it.
2017-11-09 13:13:41 +01:00
Pierre Ossman
0460e5fdbe
Improve naming for viewport properties
2017-11-09 13:13:41 +01:00
Pierre Ossman
a80aa41628
Change clippingDisplay() to a property
...
It fits much better as a property given that it only tells what the
current state of things are.
2017-11-09 13:13:41 +01:00
Pierre Ossman
15a6269510
Remove some unused return values
2017-11-09 13:13:41 +01:00
Pierre Ossman
747b462337
Use standard JavaScript properties
...
Use normal properties with JavaScript setters and getters instead of
our homegrown stuff.
This also changes the properties to follow normal naming conventions.
2017-11-09 13:03:32 +01:00
Pierre Ossman
fdff59eeb4
Move cursor URI check to RFB object
...
Keeps the Display object simpler, and avoids having to abuse a
property to transfer the information.
2017-11-09 12:52:05 +01:00
Pierre Ossman
134ec26ee0
Remove non-JavaScript render code
...
It wasn't used anyway so simplify things.
2017-11-09 12:52:05 +01:00
Pierre Ossman
656858a6d6
Remove render_mode property
...
It can only have a single value these days, so it is no longer
useful.
2017-11-09 12:52:05 +01:00
Pierre Ossman
3d7bb02036
Change some attributes to arguments
...
Some attributes are better suited as arguments, primarily because they
are associated with a specific method and cannot be changed later.
2017-11-09 12:52:05 +01:00
Pierre Ossman
dd0db4d460
Allow omitting configuration for properties
2017-11-09 12:52:05 +01:00
Pierre Ossman
ebf1c0f991
Always include ID marker in repeater protocol
...
This makes sure we're always following the protocol, and the caller
doesn't have to care about the details.
2017-11-09 12:52:05 +01:00
Pierre Ossman
f8318361b1
Remove wsProtocols setting
...
It isn't in use anymore since we deprecated support for Base64 mode.
2017-11-09 12:52:05 +01:00
Pierre Ossman
5b4e5d016e
Switch to URL for connect()
...
This is more in line with how other JavaScript APIs work.
2017-11-09 12:52:05 +01:00
Pierre Ossman
c7d08d721f
Tidy up variable initialisation
...
Sort things by category, and organise everything in the same place.
We don't support reuse of RFB objects so we can safely init everything
in the constructor.
2017-11-09 12:52:05 +01:00
Pierre Ossman
30691b668e
Remove onFBU* callbacks
...
They are internal mechanisms that callers should be isolated from.
2017-11-09 12:52:03 +01:00
Pierre Ossman
832be2625b
Add resize as a capability
...
Makes the API more transparent than piggybacking on completion
of the first framebuffer update.
2017-11-09 12:51:15 +01:00
Pierre Ossman
cd523e8f28
Make power API generic
...
Decouple it from XVP and make it a generic API.
2017-11-09 12:47:21 +01:00
Pierre Ossman
85b35fc0cc
Add proper protocol encoder for XVP messages
2017-11-09 12:45:08 +01:00
Pierre Ossman
430f00d6fe
Allow other credentials than just password
...
Makes the XVP authentication mechanism more general.
2017-11-09 12:45:05 +01:00
Pierre Ossman
1d6ff4a3e9
Improved focus handling on touch input field
...
The previous method of retaining focus didn't work reliably when
the RFB object tried to move the focus to the canvas. Add a setting
to control "focus on click" behaviour instead of letting them try
to fight it out.
2017-11-02 15:30:36 +01:00
Pierre Ossman
233c8b6a53
Hide keyboard object from RFB callers
2017-10-27 13:58:12 +02:00
Pierre Ossman
f976b5500e
Hide mouse object from RFB callers
2017-10-27 13:58:12 +02:00
Pierre Ossman
b9854a5ca5
Hide display object from RFB callers
2017-10-27 13:58:11 +02:00
Pierre Ossman
458086177c
Let RFB object make sure canvas can have focus
...
Let's set up things properly ourselves instead of forcing everyone
to create their canvas element just like we want it.
2017-10-18 17:01:34 +02:00
Pierre Ossman
4c11755ce7
Merge branch 'focus' of https://github.com/CendioOssman/noVNC
2017-10-18 15:12:46 +02:00
Pierre Ossman
2afda54456
Only grab key events on canvas
...
Give the canvas proper focus handling. This avoids messy logic that
needs to disable and enable event handling when we want to interact
with other UI elements.
It also makes sure we can properly inhibit the browser from triggering
local actions on key presses.
2017-10-18 15:07:17 +02:00
Samuel Mannehed
abfe5b7a37
Wait for challenge before asking for password
...
Fixes #928 .
2017-10-16 15:39:10 +02:00
Samuel Mannehed
cd23036314
Fix missing semicolons
...
Was missing in commit 49a8183757
2017-10-12 12:42:16 +02:00
Samuel Mannehed
4a818a7ddd
Merge pull request #893 from CendioOssman/amt
...
Basic support for Intel AMT
2017-10-05 16:59:53 +02:00
Pierre Ossman
8290d3f271
Merge branch 'optional-port' of https://github.com/bkylerussell/noVNC
2017-09-29 16:26:02 +02:00
Pierre Ossman
5a5f5ada58
Basic support for Intel AMT
...
This restores basic support for Intel AMT servers. They refuse clients
that request more than 16 bits per pixels, so implement a fallback
in just the "Raw" encoding.
2017-09-22 15:17:56 +02:00
Pierre Ossman
cd74793b44
Always hide local cursor initally
...
We don't know if the server will support a client side cursor, so
we have to assume a server side one to start with.
2017-09-22 15:17:56 +02:00
Pierre Ossman
c7c6cb196d
Remove rect arguments onFBUComplete callback
...
This callback is for an entire FBU, so it's not really relevant
to include info about just a single of the included rects.
2017-09-22 15:17:56 +02:00
Pierre Ossman
49a8183757
Clean up encoding handling
...
Allow things to be more explicit and dynamic. Makes it easier to read
and allows us to have more flexible selection of encodings in the future.
2017-09-22 15:17:56 +02:00
Samuel Mannehed
28b004fd70
Combine small mouse wheel events
...
The VNC protocol can't handle different deltas or speeds for a mouse
wheel event. When using a device that sends a lot of small mouse wheel
events, instead of fewer larger steps, the effect was that mouse wheel
scrolling was way to sensitive.
This patch looks at the delta of wheel events and doesn't send events
until the combined delta has passed a threshold. Single events that
doesn't pass the threshold get sent after a timeout in order to not
loose any events.
Fixes #577 .
2017-09-17 18:23:57 +02:00
Samuel Mannehed
c1e2785fb6
Split devices.js into keyboard.js and mouse.js
2017-09-17 18:23:57 +02:00
Pierre Ossman
c338622719
Build encoding stats array dynamically
...
Avoids having to hard code which encodings we might see.
2017-09-07 17:18:25 +02:00
Pierre Ossman
f8ec2df2bb
Add helper for encoding enumeration and names
2017-09-07 17:18:25 +02:00
Pierre Ossman
3e8b26ab58
Remove unused encoding handlers
...
These should never be sent by a server, so we don't need handlers
for them.
2017-09-07 17:18:25 +02:00
Pierre Ossman
bc86b63c24
Remove unused helper for Tight encoding
...
It's already been inlined where used.
2017-09-07 17:18:25 +02:00
Pierre Ossman
910fd3afc9
Fix handling of ExtendedDesktopSize errors
2017-09-07 17:18:25 +02:00
Pierre Ossman
91d5c62589
Merge resize handling to single method
...
It also fits better in the core RFB object rather than as a helper
for the encoding handlers.
2017-09-07 17:18:25 +02:00
Pierre Ossman
1678bf860f
Stop hiding exceptions in WebSock class
...
Let them application decide how to deal with such things and do not
enforce this particular model, which easily hides bugs.
2017-09-07 17:18:25 +02:00
shaneharris
b5c982ea42
fix typscript error - the only one. ( #837 )
...
* fix typscript error TypeScript error: novnc/core/rfb.js(1012,17): Error TS7027: Unreachable code detected.
* Update rfb.js
2017-08-05 02:29:50 +02:00
Pierre Ossman
be70fe0a3d
Only send QEMU Extended Key Event if we have a scan code
...
Servers will assume that a scan code is present if this message type
is used, so fall back to the standard key event message if we don't
know the scan code.
2017-07-07 15:06:13 +02:00
Pierre Ossman
4093c37f28
Ignore compositing key
...
keyCode 229 is commonly used with virtual keyboards when the
system cannot map things to a specific key. As such we should
treat it as 'Unidentified'.
2017-07-07 15:04:44 +02:00
Pierre Ossman
8f8c1803ff
Merge branch 'qemufix' of https://github.com/CendioOssman/noVNC
2017-07-06 13:07:19 +02:00
Pierre Ossman
2bf4cf5a20
try/catch guard for QEMU keyboard test
...
Safari on older iOS doesn't support creating KeyboardEvent objects,
so put a guard in to avoid crashes.
2017-07-06 13:00:00 +02:00
Pierre Ossman
7cac5c8e9f
Fallback for missing keypress events
...
IE and Edge have some corner cases (e.g. Ctrl+key) where we get
insufficient information in the keydown event, and we never get
a keypress event. Try to make a guess of the key in those cases.
2017-07-06 13:00:00 +02:00
Pierre Ossman
7e79dfe425
Track keys using keyIdentifier
...
This is necessary on older iOS where code isn't provided.
2017-07-06 13:00:00 +02:00
Pierre Ossman
e7c4d669f0
Handle iOS special keys
2017-06-21 14:02:24 +02:00
Pierre Ossman
9e99ce126c
Fake key release for iOS hardware keyboards
...
iOS sends decent key down events, but junk key up events when a
hardware keyboard is used. This confuses the key tracking as a
corresponding release is then never detected. To work around this
we'll treat the hardware keyboard like the virtual ones and send
the key release right away.
2017-06-21 13:58:53 +02:00
Pierre Ossman
858ea4a774
Avoid use of 'let' and 'const'
...
They are not supported on older browsers, e.g. iOS 9.
2017-06-02 15:41:37 +02:00
Pierre Ossman
844e983916
Limit use of keypress fallback
...
It was preventing key events for dead keys, so try to reduce it to
only cases where we must use it.
2017-06-02 14:38:16 +02:00
Pierre Ossman
459ed0083f
Allow key events without symbols
...
They can still be useful if the server makes use of the keycode instead.
2017-06-02 14:37:36 +02:00
Pierre Ossman
dfa7826d72
Get XT scan code mappings from the keycodemapdb project
...
This way we can work together with other projects that need this kind
of mapping.
2017-05-31 16:20:24 +02:00
Samuel Mannehed
afb621d577
Add missing semicolon
2017-05-13 01:56:35 +02:00
Samuel Mannehed
333ad45c70
Don't capture touch events
...
They are implicitly captured anyway, and we get problems if we try
to explicitly capture them.
2017-05-11 13:34:43 +02:00
Samuel Mannehed
4f1c81dca9
Stop tracking mouse capture state
...
Was a workaround for other bugs which are now fixed.
2017-05-11 13:30:40 +02:00
Samuel Mannehed
cb568ece8b
Stop grabbing mouse events globally
...
Not necessary anymore since we have proper capture.
2017-05-11 13:27:10 +02:00
Pierre Ossman
26586b9ddf
Remove colour map support
...
It was broken and unused. Remove it so we can simplify the code.
2017-05-04 15:13:33 +02:00
Pierre Ossman
fb7e99e84b
Remove browser engine detection
...
It is out of date and not used anyway.
2017-05-04 14:52:05 +02:00
Pierre Ossman
38170d2442
Merge branch 'png_cursor' of https://github.com/CendioOssman/noVNC
2017-05-04 13:13:02 +02:00
Pierre Ossman
545442afc3
Merge branch 'keyboard' of https://github.com/CendioOssman/noVNC
2017-05-04 12:18:55 +02:00
Pierre Ossman
9782d4a324
Use KeyboardEvent.key too look up keysyms
...
And emulate it on browsers where it is missing or incorrect. This
makes the code more future oriented as it primarily uses the standardised
fields.
2017-05-04 12:13:48 +02:00
Pierre Ossman
634cc1ba46
Handle CapsLock on macOS
...
Modifiers behave a bit oddly on macOS, causing weird CapsLock events
to be sent by the browsers.
2017-05-04 12:13:48 +02:00
Pierre Ossman
bf43c26319
Clean up AltGraph handling
...
It doesn't need to be this general as the issue is mostly about
Windows. Also use the same modifier shuffle that RealVNC and
TigerVNC uses to get macOS working well.
2017-05-04 12:13:48 +02:00
Pierre Ossman
ae82053366
Simplify pressed key handling
...
Prefer avoid having the server simulate multiple key presses by
refusing to use multiple keysyms for the same physical key.
2017-05-04 12:13:47 +02:00
Pierre Ossman
9fce233d51
Simplify handling of keypress
...
Use a dedicated variable to track a two stage key rather than
piggy-backing on the key state array.
2017-05-04 12:13:47 +02:00
Pierre Ossman
f7363fd26d
Move keyboard handling in to Keyboard class
...
Replace the multi stage pipeline system with something simpler.
That level of abstraction is not needed.
2017-05-04 12:13:47 +02:00
Pierre Ossman
9e6f71cb75
Remove modifier synchronisation
...
The fields provided cannot tell us if it is the left or right
version of the key that's pressed, so they are inherently unreliable.
It is also not a huge problem in practice as we'll get in sync on
the next press or release of the modifier.
2017-05-04 12:13:47 +02:00
Pierre Ossman
a784a9cabc
Remove QEMU key event handler
...
The normal event handler provides all the necessary information
now, so it is no longer needed.
2017-05-04 12:13:47 +02:00
Pierre Ossman
d0703d1bde
Simplify keyboard event API
...
No need for an object for three static fields.
2017-05-04 12:13:47 +02:00
Pierre Ossman
94f5cf05f3
Send keyboard events from single place
...
This makes it easier to handle any needed variations, like different
types of messages.
2017-05-04 12:13:47 +02:00
Pierre Ossman
f714f7deae
Improve lookup of special keys
...
Look up keys that are independent of layout and state first,
followed by keys that are only mild variations in layouts.
This is more robust as there might be multiple physical keys
generating the same symbols, and Keysyms don't map directly to
Unicode in all cases.
At the same time switch over to using the modern, standardised
'code' field for lookup.
2017-05-04 12:13:47 +02:00
Pierre Ossman
bfa1b237b9
Improve character keysym lookup
...
Use the more modern 'key' field, and remove some legacy fallbacks
that are no longer required. This also removes the "stall" mechanism
as it is not needed with current browsers.
2017-05-04 12:13:47 +02:00
Pierre Ossman
80cb8ffddd
Use standard DOM identifiers for physical keys
2017-05-04 12:13:45 +02:00
Samuel Mannehed
41c958d450
Properly restore the default style
...
Setting a style to null does restore it in FF, Chrome, Safari and Edge.
But it does not work in Internet Explorer. The proper way to restore to
default values is to set it to the empty string. This works in all
browsers. Fixes issue #808 .
2017-04-11 10:57:21 +02:00
Samuel Mannehed
270bdbd7fb
Always send mouseUp events properly
...
If down is false we can't just toggle the current internal state, even
though this is correct most of the time. There are cases where we don't
get the down event and thus won't have a correct internal state. For
example, when clicking in the session after using the clipboard
textarea.
If down is false, we always want to send a mouse event with the button
in 'up'-state.
2017-04-05 14:00:59 +02:00
Solly Ross
5abbdf5a51
Merge pull request #738 from patrakov/master
...
Changed the default compression level to 2
2017-03-24 17:40:15 -07:00
Pierre Ossman
a5c8a755e8
Hide internal keyboard functions
...
These may change and are not part of a stable API.
This also reindents the object functions to make sure they can
access private functions.
2017-03-24 11:53:16 +01:00
Pierre Ossman
0a865e15ff
Remove character substitution
...
We can handle any Unicode codepoint now, so stop replacing symbols.
2017-03-24 11:35:36 +01:00
Pierre Ossman
278a5e7fbd
Simplify keysymdef.js
...
Some Unicode to Keysym mappings can be computed and can therefore
be left out of the huge lookup table.
2017-03-24 11:31:38 +01:00
Pierre Ossman
041568bd31
Clean up keysymdef
2017-03-24 11:26:02 +01:00
Pierre Ossman
524d67f283
Remove keysym names from keysymdef.js
...
They were incomplete and turned off in most cases so they served
little use besides adding complexity.
2017-03-24 11:16:53 +01:00
Solly Ross
b4ff032e20
Fix view_only clipboard handling
...
We need to actually consume the clipboard event message,
even if we don't act on it.
2017-03-21 17:39:07 -04:00
Solly Ross
6d6f0db0da
Refactor ES6 module structure/split up Util
...
This commit restructures many of the ES6 modules, splitting them
up to actual export multiple functions instead of a single object.
It also splits up Util into multiple sub-modules, to make it easier
to maintain.
Finally, localisation is renamed to localization.
2017-03-21 17:39:05 -04:00
Solly Ross
6e744119f8
Remove WebUtil.load_scripts
...
The only remaining user of WebUtil.load_scripts was for loading
localisation. Instead, we now load the localization information
over XHR as a JSON blob.
2017-03-07 11:11:29 -05:00
Pierre Ossman
83250a6aa6
Use PNG for mouse cursors
...
The browsers' support for Microsoft's cursor format is a bit spotty,
so use the more common PNG format instead. This also allows us to
use a Canvas to generate the image, rather than coding it by hand.
2017-03-06 16:29:27 +01:00
Solly Ross
fba220c6fc
Vendor an ES6-modules-compatible Pako
...
This commit vendors a converted, stripped-down version of Pako which
uses ES6 modules instead of CommonJS modules.
2017-03-01 11:21:32 -05:00
Solly Ross
3ae0bb0968
Uncomment ES6 module syntax
...
This removes the special comment part of the ES6 module syntax,
opting to enable ES6 module syntax by default.
It also appends `.js` to all import paths to better support in-browser
loading.
2017-02-26 16:30:37 -05:00
Solly Ross
d55e454582
Fix typos in imports and i18n
...
`app/ui.js` had an incorrect import path which caused issues
when using the ES6 and/or CommonJS builds of noVNC.
`core/util.js` had a non-strict-compatible declaration of a variable
without a `let` or `var` (it now uses `let`).
This fixes both issues.
2017-02-26 16:30:37 -05:00
Samuel Mannehed
b56d975248
Merge branch 'settingswhileconnected' of https://github.com/samhed/noVNC
...
Closes pull request #778
2017-02-24 15:42:27 +01:00
Samuel Mannehed
7a005a1b18
Merge branch 'disableLabels' of https://github.com/samhed/noVNC
...
Closes pull request #776
2017-02-24 15:13:09 +01:00
Pierre Ossman
90ecc739df
Protect against race in setCapture() polyfill
...
It might take a long time for a timer to fire, long enough for a
new grab to be initiated. Clearing out the capture element would
then cause a crash.
2017-02-23 14:26:50 +01:00
Pierre Ossman
a7ca8e5c1a
Fix wrong colours on local cursor
...
The RGB order was backwards compared to the pixel format we've
requested, resulting in the red and blue channels getting swapped.
2017-02-20 16:44:54 +01:00
Samuel Mannehed
fb49f91b00
Allow local cursor to be changed while connected
2017-02-19 01:53:41 +01:00
Samuel Mannehed
ef1e8bab22
Allow view_only to be changed while connected
2017-02-19 01:53:41 +01:00
Samuel Mannehed
f78a652e86
Don't send or recieve clipboard in view_only
2017-02-18 20:39:57 +01:00
Samuel Mannehed
c3325dc6f7
Fix translateDOM for placeholders
...
Replaced 'in' with a comma, like in the surrounding code.
2017-02-17 12:45:54 +01:00
Samuel Mannehed
280676c7e9
Properly encapsulate the scale in Display
...
Other parts of the code shouldn't have to care about this. Let Display
convert between canvas coordinates and framebuffer coordinates.
2017-02-16 14:00:39 +01:00
Samuel Mannehed
8cbf1dd9d2
Set correct cursor style for setCapture()
2017-02-16 14:00:36 +01:00
Samuel Mannehed
10d1ecc118
Remove return value from event handlers
...
It's not used in modern event handlers.
2017-02-16 13:59:34 +01:00
Samuel Mannehed
a0e3ec0ae6
Stop using window.event
...
It's an old propriatary IE thing that isn't necessary.
2017-02-16 13:59:34 +01:00
Samuel Mannehed
af1b2ae1e5
Remove Util.getEventPosition()
...
It mostly dealt with scrolling which we don't use. It also made mistakes
in some cases. Remove it and compute the coordinates directly in the
calling code.
2017-02-16 13:59:34 +01:00
Samuel Mannehed
b69dda9b19
Clean up some mouse workarounds
...
Adds comments that clarifies why they are needed. Also narrows the
handler for contextmenu a bit.
2017-02-16 13:59:34 +01:00
Samuel Mannehed
1658466579
Improve setCapture polyfill
...
Fix some corner cases.
Fixes issue #773
2017-02-16 13:59:22 +01:00
Pierre Ossman
0ee5ca6ebe
Fix tests after changing auth negotiation
...
PhantomJS has a very basic implementation of Uint8Array, so we
need to help it out a bit.
2017-02-13 15:00:32 +01:00
Pierre Ossman
95533c579e
Better selection of auth type
...
If no authentication is required then we should pick the None
option to avoid bothering the user.
2017-02-13 13:58:10 +01:00
Pierre Ossman
6ffdfd3aa7
Improve check for when to ignore mouse events
...
The browser tells us which element was under the cursor, so we don't
have to calculate it ourselves.
2017-02-09 16:02:58 +01:00
Pierre Ossman
86d15a4929
Use setCapture() polyfill everywhere
...
This makes sure we get consistent behaviour across all browsers.
2017-02-09 15:51:22 +01:00
Pierre Ossman
d314d2c226
Merge branch 'util-console' of https://github.com/tghw/noVNC
2017-02-07 16:37:58 +01:00
Pierre Ossman
d2467189f5
Don't delay WebSocket flushing
...
The native WebSocket is in a much better position to do queue
management than us. We also failed to check the return value and
set up a timer, causing stalls.
This gets us in sync with websockify as of 40238b00.
2017-02-03 17:12:41 +01:00
Pierre Ossman
2e6a58fb15
Avoid changing scale unless necessary
...
It causes the browser to redo the layout needlessly otherwise,
having annoying effects like moving the scroll position.
2017-02-03 12:00:13 +01:00
Pierre Ossman
a6e52f9a73
Merge display scale changes
2017-02-03 11:56:02 +01:00