of that file in existance, not all of which have all the symbols we
require and none of which provide any convenient means of telling
what groups of symbols they define.
absolute mouse_event(). Improved keyboard handling: now using
keyboard layout of last foreground window when leaving server
so users can meaningfully choose the locale, moved dead key
handling into hook library so there should be no more race
conditions involving the keyboard dead key buffer, simplified
keyboard and cursor handling by using a full screen transparent
window when not using low level hooks, fixed error in restoring
buffered dead key when checking for dead keys. This hopefully
fixes all known keyboard bugs on win32.
an event queue and events, TCP sockets converted to use events,
unix multithreading and network stuff converted, and an X Windows
event queue subclass.
doesn't map to anything via AltGr. This is an improvement over
the previous code which would simply discard the key but it
still behaves slightly differently than pressing ctrl+alt+<key>
on the server: if that combination is a hotkey on the server
then the hotkey is performed, even if the combination is also
a valid AltGr combination; on the client, we'll get the AltGr
combination in preference to the hotkey.
using low-level keyboard hooks, fixed handling of the global
keyboard layout dead key buffer, fixed identification of dead
keys, fixed synthesis of AltGr (now using right-alt instead
of left-alt), now using VK_DECIMAL for Separator key, fixed
bug where an unmappable key was treated as virtual key 0xff,
and added support for shift-space (shift was being discarded).
Also fixed failure to hide cursor when leaving primary screen
and added support for handling PrintScreen key.
and then space should convert the dead key to a non-dead key but
previous the key was discarded. Fixed that but VkKeyScan() fails
in this case so added special case to fix that (assuming AltGr is
required). VkKeyScan() can return the wrong result for characters
that have more than one virtual key mapped to them. AltGr+9 (^)
on the French layout has this problem. Now detecting that problem
and using the current keyboard state to decide if AltGr is
required.
doesn't appear to have any negative consequences and may prevent
synergy from freezing when some X client (probably the window
manager) grabs the server.
to connect. This prevents a log from filling up while the client
can't connect for no useful reason. Also removed --camp option
and cleaned up handling of client connection. Users must now use
--restart instead of --camp.
sending a key that requires AltGr. That's because AltGr *is*
ctrl and alt but AltGr should be seen on clients as mode
switch without the ctrl and alt. I can't think of a better
way to do this other than to not send modifier keystrokes to
the clients at all.
with applying the incorrect shift and mode switch modifiers to
some keycodes, such as getting Pointer_EnableKeys when pressing
shift with NumLock enabled.
need a precompose area or status area. This includes IMs that
do simple dead key composition. This only changes the server.
The client still does not decompose a character it cannot
generate directly into the keysyms to compose the character.
family because nt automatically converts to and from the unicode
format. This may fix text encoding errors when synergy puts
non-ascii text on the clipboard and other clients prefer CF_TEXT
to CF_UNICODE (which they should not because synergy lists
CF_UNICODE first).
is accessible (was already fixed when inaccessible). This change
also ignores press and release of virtual key 0, which should never
happen but does according to one user.
warping on screen 0. That just doesn't work if screen 0 is not at
0,0. So now always use XWarpPointer() if there are multiple
xinerama screens and the appropriate option is enabled.
true, faking a mouse motion outside screen 0 is clamped onto screen 0.
When the workaround is enabled, we use XWarpPointer() instead of an
XTest fake motion. This isn't perfect but the only real fix requires
patching XTest.