Commit Graph

16 Commits

Author SHA1 Message Date
lhchavez 30f9d4eee9 Support grabbing the pointer with the Pointer Lock API
This change adds the following:

a) A new button on the UI to enter full pointer lock mode, which invokes
   the Pointer Lock API[1] on the canvas, which hides the cursor and
   makes mouse events provide relative motion from the previous event
   (through `movementX` and `movementY`). These can be added to the
   previously-known mouse position to convert it back to an absolute
   position.
b) Adds support for the VMware Cursor Position pseudo-encoding[2], which
   servers can use when they make cursor position changes themselves.
   This is done by some APIs like SDL, when they detect that the client
   does not support relative mouse movement[3] and then "warp"[4] the
   cursor to the center of the window, to calculate the relative mouse
   motion themselves.
c) When the canvas is in pointer lock mode and the cursor is not being
   locally displayed, it updates the cursor position with the
   information that the server sends, since the actual position of the
   cursor does not matter locally anymore, since it's not visible.
d) Adds some tests for the above.

You can try this out end-to-end with TigerVNC with
https://github.com/TigerVNC/tigervnc/pull/1198 applied!

Fixes: #1493 under some circumstances (at least all SDL games would now
work).

1: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
2: https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#vmware-cursor-position-pseudo-encoding
3: https://hg.libsdl.org/SDL/file/28e3b60e2131/src/events/SDL_mouse.c#l804
4: https://tronche.com/gui/x/xlib/input/XWarpPointer.html
2021-02-07 20:16:19 -08:00
Pierre Ossman 8be924c9d9 Add touch gestures for mouse emulation
Add several single and multitouch gestures to simulate various mouse
actions that would otherwise be impossible to perform.

This replaces the old system where you could select which mouse button
a single touch would generate.
2020-06-12 09:18:46 +02:00
Pierre Ossman 65066326c5 Improve Windows key image
The previous one didn't have sharp lines, or follow pixel boundaries
properly.
2019-10-23 15:51:41 +02:00
Sebastian Safari 3e835a5d37 Add Windows Key Feature 2019-01-08 06:57:12 -08:00
Pierre Ossman 6e8a8c8df1 Remove 512x512 icon
It is not a launcher icon, but rather used for display on Google
Play. As such it is not needed and removing it mitigates the issue
of some buggy browsers downloading each and every listed icon.
2017-02-23 16:29:16 +01:00
Pierre Ossman 575f69832d Group WebSocket settings together
It was easy to confuse them as being VNC settings, so keep them all
under one group.
2017-01-04 15:05:01 +01:00
Pierre Ossman 8ee432f1db Allow control bar to be moved to the right side 2016-11-26 15:13:33 +01:00
Samuel Mannehed 9b3d363d07 Merge pull request #686 from CendioOssman/favicon
Clean up page icons ("favicon")
2016-10-24 12:09:58 +02:00
Pierre Ossman 171086bc1d Improve info and error icons
Give them a solid background to make them more easily identifiable
as icons, rather than text or some other more inline element.
2016-10-14 16:10:32 +02:00
Pierre Ossman 1351544e9f Remove iOS startup image
Apple seems to have removed this feature from iOS 9.
2016-10-14 15:46:08 +02:00
Pierre Ossman 2b4e6ed523 Clean up page icon ("favicon") handling
Makes sure we use standardised formats and references, and makes sure
we have all the sizes we might need.
2016-10-14 13:24:35 +02:00
Pierre Ossman 267d1edfb6 Remove unused startup screen image 2016-10-13 16:58:27 +02:00
Pierre Ossman 38323d4d92 Add handle to open and close the control bar 2016-09-23 14:39:21 +02:00
Pierre Ossman 8bf688265d Replace icons with SVG versions
Resolution independent for high DPI devices, and easier to modify
if we want to change something.
2016-09-23 14:22:19 +02:00
samhed ca5c74ad5a Show all status messages in a popup top bar 2016-09-23 14:22:16 +02:00
Solly Ross ae510306b5 Enable noVNC to become Browserifiable
This commit restructures noVNC, splitting it into the core directory
and the app directory, with the former containing core noVNC parts,
and the latter containing parts specific to the application.
2016-09-16 15:49:51 -04:00