This repository has been archived by the owner. It is now read-only.
Permalink
...
Checking mergeability…
Don’t worry, you can still create the pull request.
Comparing changes
Open a pull request
18
contributors
Unified
Split
Showing
with
316 additions
and 182 deletions.
- +2 −0 .github/ISSUE_TEMPLATE.md
- +2 −7 CMakeLists.txt
- +28 −0 ChangeLog
- +3 −3 doc/MacReadme.txt
- +1 −1 ext/toolchain/commands1.py
- +3 −1 src/gui/res/SettingsDialogBase.ui
- +2 −2 src/gui/res/lang/Languages.xml
- +26 −18 src/gui/res/mac/Info.plist
- +1 −1 src/gui/src/LicenseManager.cpp
- +4 −3 src/gui/src/main.cpp
- +3 −1 src/lib/arch/unix/ArchDaemonUnix.cpp
- +1 −1 src/lib/arch/unix/ArchSystemUnix.cpp
- +1 −1 src/lib/ipc/IpcClientProxy.cpp
- +1 −1 src/lib/ipc/IpcServerProxy.cpp
- +24 −12 src/lib/platform/MSWindowsKeyState.cpp
- +1 −1 src/lib/platform/MSWindowsKeyState.h
- +103 −65 src/lib/platform/OSXKeyState.cpp
- +6 −0 src/lib/platform/OSXKeyState.h
- +17 −1 src/lib/platform/OSXScreen.mm
- +5 −24 src/lib/platform/XWindowsScreen.cpp
- +2 −2 src/lib/server/Config.cpp
- +44 −30 src/lib/server/Server.cpp
- +1 −1 src/lib/synergy/ClipboardChunk.cpp
- +4 −2 src/lib/synergy/key_types.h
- +1 −1 src/micro/uSynergy.h
- +21 −0 src/test/integtests/platform/MSWindowsKeyStateTests.cpp
- +9 −3 src/test/unittests/synergy/ClipboardChunkTests.cpp
View
2
.github/ISSUE_TEMPLATE.md
| @@ -27,4 +27,6 @@ Client: Applesoft Windy OS 10 | ||
| * Is there a way to work around it? No/Yes, you can... | ||
| * Does this bug prevent you from using Synergy entirely? Yes/No | ||
| +Please follow the link below to send us logs from both your server and client sides if it's appropriate. https://github.com/symless/synergy/wiki/Sending-logs | ||
| + | ||
| Put anything else you can think of here. | ||
View
9
CMakeLists.txt
| @@ -17,8 +17,8 @@ | ||
| # Version number for Synergy | ||
| set(VERSION_MAJOR 1) | ||
| set(VERSION_MINOR 8) | ||
| -set(VERSION_REV 6) | ||
| -set(VERSION_STAGE rc1) | ||
| +set(VERSION_REV 8) | ||
| +set(VERSION_STAGE stable) | ||
| set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REV}") | ||
| cmake_minimum_required(VERSION 2.6) | ||
| @@ -74,11 +74,6 @@ endif() | ||
| # Depending on the platform, pass in the required defines. | ||
| if (UNIX) | ||
| - | ||
| - # warnings as errors: | ||
| - # we have a problem with people checking in code with warnings. | ||
| - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-unused-local-typedef") | ||
| - | ||
| if (NOT APPLE) | ||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") | ||
| endif() | ||
View
28
ChangeLog
| @@ -1,3 +1,31 @@ | ||
| +v1.8.8 | ||
| +========== | ||
| +Bug #5196 - Some keys on Korean and Japanese keyboards have the same keycode | ||
| +Bug #5578 - Pressing Hangul key results in alt+'a' | ||
| +Bug #5785 - Can't switch screens when cursor is in a corner | ||
| +Bug #3992 - macOS: Dragging is broken in Unity 3D | ||
| +Bug #5075 - macOS: Build fails on macOS 10.9 due to unknown compiler flag | ||
| +Bug #5809 - macOS: No version number is shown in the App Info dialog | ||
| +Bug #3197 - Linux: switchDoubleTap option is not working | ||
| +Bug #4477 - Linux: Mouse buttons higher than id 10 result in crash | ||
| +Bug #5832 - Linux: Screen size misdetected on multi-monitor display | ||
| +Enhancement #4504 - Improved Korean language description | ||
| +Enhancement #5525 - Added support for precise screen positioning in config file | ||
| +Enhancement #4290 - Windows: Removed annoying alt+print screen functionality | ||
| + | ||
| +v1.8.7-stable | ||
| +============= | ||
| +Bug #5784 - Edition changes when reopening GUI | ||
| + | ||
| +v1.8.6-stable | ||
| +============= | ||
| +Bug #5592 - Some keys don't work for macOS Sierra clients | ||
| +Bug #5186 - Cursor stuck on client when using multi-DPI server | ||
| +Bug #5722 - Malformed serial key in registry will crash GUI on startup | ||
| +Bug #5752 - Tab order is incorrect on Settings dialog | ||
| +Enhancement #5699 - Unified installers on macOS | ||
| +Feature #4836 - macOS Sierra build | ||
| + | ||
| v1.8.5-stable | ||
| ============= | ||
| Bug #5680 - Server crashes when disconnecting SSL clients | ||
View
6
doc/MacReadme.txt
| @@ -5,10 +5,10 @@ To install on Mac OS X with the .zip distribution (first seen in 1.3.6) you must | ||
| 1. Extract the zip file to any location (usually double click will do this) | ||
| 2. Open Terminal, and cd to the extracted directory (e.g. /Users/my-name/Downloads/extracted-dir/) | ||
| - 3. Change to super user (use the su command) | ||
| - 4. Copy the binaries to /usr/bin using: cp synergy* /usr/bin | ||
| + 3. Copy the binaries to /usr/bin using: sudo cp synergy* /usr/bin | ||
| + 4. Correct the permissions and ownership: sudo chown root:wheel /usr/bin/synergy*; sudo chmod 555 /usr/bin/synergy* | ||
| -How to enable the root user in Mac OS X: | ||
| +Alternatively, you can copy the binaries as root. How to enable the root user in Mac OS X: | ||
| http://support.apple.com/en-us/ht1528 | ||
| Once the binaries have been copied to /usr/bin, you should follow the configuration guide: | ||
View
2
ext/toolchain/commands1.py
| @@ -309,7 +309,7 @@ def usage(self): | ||
| ' genlist Shows the list of available platform generators\n' | ||
| ' usage Shows the help screen\n' | ||
| '\n' | ||
| - 'Example: %s build -g 3' | ||
| + 'Example: %s conf -g 3' | ||
| ) % (app, app) | ||
| def configureAll(self, targets, extraArgs=''): | ||
View
4
src/gui/res/SettingsDialogBase.ui
| @@ -330,11 +330,13 @@ | ||
| <tabstop>m_pLineEditScreenName</tabstop> | ||
| <tabstop>m_pSpinBoxPort</tabstop> | ||
| <tabstop>m_pLineEditInterface</tabstop> | ||
| + <tabstop>m_pComboElevate</tabstop> | ||
| + <tabstop>m_pCheckBoxAutoHide</tabstop> | ||
| + <tabstop>m_pCheckBoxEnableCrypto</tabstop> | ||
| <tabstop>m_pComboLogLevel</tabstop> | ||
| <tabstop>m_pCheckBoxLogToFile</tabstop> | ||
| <tabstop>m_pLineEditLogFilename</tabstop> | ||
| <tabstop>m_pButtonBrowseLog</tabstop> | ||
| - <tabstop>buttonBox</tabstop> | ||
| </tabstops> | ||
| <resources/> | ||
| <connections> | ||
View
4
src/gui/res/lang/Languages.xml
| @@ -36,11 +36,11 @@ | ||
| <language ietfCode="ar" name="العربية" /> | ||
| <language ietfCode="pes-IR" name="فارسی" /> | ||
| <language ietfCode="ur" name="اردو" /> | ||
| - <language ietfCode="mr" name="मराठी" /> | ||
| + <language ietfCode="mr" name="मराठी" /> | ||
| <language ietfCode="si" name="Sඉන්හල" /> | ||
| <language ietfCode="th-TH" name="ภาษาไทย" /> | ||
| <language ietfCode="zh-CN" name="中文 (简体)" /> | ||
| <language ietfCode="zh-TW" name="中文 (繁體)" /> | ||
| <language ietfCode="ja-JP" name="日本語" /> | ||
| - <language ietfCode="ko" name="한국의" /> | ||
| + <language ietfCode="ko" name="한국어" /> | ||
| </languages> | ||
View
44
src/gui/res/mac/Info.plist
| @@ -1,20 +1,28 @@ | ||
| -<?xml version="1.0" encoding="UTF-8"?> | ||
| -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| <plist version="1.0"> | ||
| -<dict> | ||
| - <key>CFBundleInfoDictionaryVersion</key> | ||
| - <string>6.0</string> | ||
| - <key>NSPrincipalClass</key> | ||
| - <string>NSApplication</string> | ||
| - <key>CFBundleIconFile</key> | ||
| - <string>Synergy.icns</string> | ||
| - <key>CFBundlePackageType</key> | ||
| - <string>APPL</string> | ||
| - <key>CFBundleSignature</key> | ||
| - <string>????</string> | ||
| - <key>CFBundleExecutable</key> | ||
| - <string>Synergy</string> | ||
| - <key>CFBundleIdentifier</key> | ||
| - <string>synergy</string> | ||
| -</dict> | ||
| + <dict> | ||
| + <key>CFBundleDevelopmentRegion</key> | ||
| + <string>English</string> | ||
| + <key>CFBundleDisplayName</key> | ||
| + <string>Synergy</string> | ||
| + <key>CFBundleExecutable</key> | ||
| + <string>Synergy</string> | ||
| + <key>CFBundleIconFile</key> | ||
| + <string>Synergy.icns</string> | ||
| + <key>CFBundleIdentifier</key> | ||
| + <string>synergy</string> | ||
| + <!-- TODO: Fix this in v2.0 //--> | ||
| + <key>CFBundleInfoDictionaryVersion</key> | ||
| + <string>6.0</string> | ||
| + <key>CFBundleName</key> | ||
| + <string>Synergy</string> | ||
| + <key>CFBundlePackageType</key> | ||
| + <string>APPL</string> | ||
| + <key>CFBundleShortVersionString</key> | ||
| + <string>1.8.8</string> | ||
| + <key>CFBundleVersion</key> | ||
| + <string>1.8.8</string> | ||
| + <key>NSHumanReadableCopyright</key> | ||
| + <string>© 2012-2016, Symless Ltd</string> | ||
| + </dict> | ||
| </plist> |
View
2
src/gui/src/LicenseManager.cpp
| @@ -44,7 +44,7 @@ LicenseManager::setSerialKey(SerialKey serialKey, bool acceptExpired) | ||
| using std::swap; | ||
| swap (serialKey, m_serialKey); | ||
| m_AppConfig->setSerialKey(QString::fromStdString | ||
| - (serialKey.toString())); | ||
| + (m_serialKey.toString())); | ||
| emit serialKeyChanged(m_serialKey); | ||
| if (serialKey.isTrial()) { | ||
View
7
src/gui/src/main.cpp
| @@ -119,8 +119,8 @@ int waitForTray() | ||
| if (++trayAttempts > TRAY_RETRY_COUNT) | ||
| { | ||
| QMessageBox::critical(NULL, "Synergy", | ||
| - QObject::tr("System tray is unavailable, quitting.")); | ||
| - return false; | ||
| + QObject::tr("System tray is unavailable, don't close your window.")); | ||
| + return true; | ||
| } | ||
| QThreadImpl::msleep(TRAY_RETRY_WAIT); | ||
| @@ -159,7 +159,8 @@ bool checkMacAssistiveDevices() | ||
| QMessageBox::information( | ||
| NULL, "Synergy", | ||
| "Please enable access to assistive devices " | ||
| - "(System Preferences), then re-open Synergy."); | ||
| + "System Preferences -> Security & Privacy -> " | ||
| + "Privacy -> Accessibility, then re-open Synergy."); | ||
| } | ||
| return result; | ||
View
4
src/lib/arch/unix/ArchDaemonUnix.cpp
| @@ -117,9 +117,11 @@ ArchDaemonUnix::daemonize(const char* name, DaemonFunc func) | ||
| open("/dev/null", O_RDWR); | ||
| int dupErr = dup(1); | ||
| - if (dupErr) | ||
| + | ||
| + if (dupErr < 0) { | ||
| // NB: file logging actually isn't working at this point! | ||
| LOG((CLOG_ERR "dup error: %i", dupErr)); | ||
| + } | ||
| #ifdef __APPLE__ | ||
| return execSelfNonDaemonized(); | ||
View
2
src/lib/arch/unix/ArchSystemUnix.cpp
| @@ -76,5 +76,5 @@ ArchSystemUnix::setting(const std::string&, const std::string&) const | ||
| std::string | ||
| ArchSystemUnix::getLibsUsed(void) const | ||
| { | ||
| - return "not implmented.\nuse lsof on shell"; | ||
| + return "not implemented.\nuse lsof on shell"; | ||
| } | ||
View
2
src/lib/ipc/IpcClientProxy.cpp
| @@ -146,7 +146,7 @@ IpcClientProxy::send(const IpcMessage& message) | ||
| switch (message.type()) { | ||
| case kIpcLogLine: { | ||
| const IpcLogLineMessage& llm = static_cast<const IpcLogLineMessage&>(message); | ||
| - String logLine = llm.logLine(); | ||
| + const String logLine = llm.logLine(); | ||
| ProtocolUtil::writef(&m_stream, kIpcMsgLogLine, &logLine); | ||
| break; | ||
| } | ||
View
2
src/lib/ipc/IpcServerProxy.cpp
| @@ -94,7 +94,7 @@ IpcServerProxy::send(const IpcMessage& message) | ||
| case kIpcCommand: { | ||
| const IpcCommandMessage& cm = static_cast<const IpcCommandMessage&>(message); | ||
| - String command = cm.command(); | ||
| + const String command = cm.command(); | ||
| ProtocolUtil::writef(&m_stream, kIpcMsgCommand, &command); | ||
| break; | ||
| } | ||
View
36
src/lib/platform/MSWindowsKeyState.cpp
| @@ -61,11 +61,11 @@ const KeyID MSWindowsKeyState::s_virtualKey[] = | ||
| /* 0x012 */ { kKeyAlt_L }, // VK_MENU | ||
| /* 0x013 */ { kKeyPause }, // VK_PAUSE | ||
| /* 0x014 */ { kKeyCapsLock }, // VK_CAPITAL | ||
| - /* 0x015 */ { kKeyHangulKana }, // VK_HANGUL, VK_KANA | ||
| + /* 0x015 */ { kKeyKana }, // VK_HANGUL, VK_KANA | ||
| /* 0x016 */ { kKeyNone }, // undefined | ||
| /* 0x017 */ { kKeyNone }, // VK_JUNJA | ||
| /* 0x018 */ { kKeyNone }, // VK_FINAL | ||
| - /* 0x019 */ { kKeyHanjaKanzi }, // VK_KANJI | ||
| + /* 0x019 */ { kKeyKanzi }, // VK_HANJA, VK_KANJI | ||
| /* 0x01a */ { kKeyNone }, // undefined | ||
| /* 0x01b */ { kKeyEscape }, // VK_ESCAPE | ||
| /* 0x01c */ { kKeyHenkan }, // VK_CONVERT | ||
| @@ -318,11 +318,11 @@ const KeyID MSWindowsKeyState::s_virtualKey[] = | ||
| /* 0x112 */ { kKeyAlt_R }, // VK_MENU | ||
| /* 0x113 */ { kKeyNone }, // VK_PAUSE | ||
| /* 0x114 */ { kKeyNone }, // VK_CAPITAL | ||
| - /* 0x115 */ { kKeyNone }, // VK_KANA | ||
| - /* 0x116 */ { kKeyNone }, // VK_HANGUL | ||
| + /* 0x115 */ { kKeyHangul }, // VK_HANGUL | ||
| + /* 0x116 */ { kKeyNone }, // undefined | ||
| /* 0x117 */ { kKeyNone }, // VK_JUNJA | ||
| /* 0x118 */ { kKeyNone }, // VK_FINAL | ||
| - /* 0x119 */ { kKeyNone }, // VK_KANJI | ||
| + /* 0x119 */ { kKeyHanja }, // VK_HANJA | ||
| /* 0x11a */ { kKeyNone }, // undefined | ||
| /* 0x11b */ { kKeyNone }, // VK_ESCAPE | ||
| /* 0x11c */ { kKeyNone }, // VK_CONVERT | ||
| @@ -728,6 +728,10 @@ MSWindowsKeyState::mapKeyFromEvent(WPARAM charAndVirtKey, | ||
| // that so we clear it. | ||
| active &= ~s_controlAlt; | ||
| } | ||
| + if (id == kKeyHangul) { | ||
| + // If shift-space is used to change input mode, clear shift modifier. | ||
| + active &= ~KeyModifierShift; | ||
| + } | ||
| *maskOut = active; | ||
| } | ||
| @@ -1071,13 +1075,8 @@ MSWindowsKeyState::getKeyMap(synergy::KeyMap& keyMap) | ||
| } | ||
| } | ||
| - // add alt+printscreen | ||
| - if (m_buttonToVK[0x54u] == 0) { | ||
| - m_buttonToVK[0x54u] = VK_SNAPSHOT; | ||
| - } | ||
| - | ||
| // set virtual key to button table | ||
| - if (GetKeyboardLayout(0) == m_groups[g]) { | ||
| + if (activeLayout == m_groups[g]) { | ||
| for (KeyButton i = 0; i < 512; ++i) { | ||
| if (m_buttonToVK[i] != 0) { | ||
| if (m_virtualKeyToButton[m_buttonToVK[i]] == 0) { | ||
| @@ -1339,8 +1338,20 @@ MSWindowsKeyState::setWindowGroup(SInt32 group) | ||
| } | ||
| KeyID | ||
| -MSWindowsKeyState::getKeyID(UINT virtualKey, KeyButton button) | ||
| +MSWindowsKeyState::getKeyID(UINT virtualKey, KeyButton button) const | ||
| { | ||
| + // Some virtual keycodes have same values. | ||
| + // VK_HANGUL == VK_KANA, VK_HANJA == NK_KANJI | ||
| + // which are used to change the input mode of IME. | ||
| + // But they have different X11 keysym. So we should distinguish them. | ||
| + if ((LOWORD(m_keyLayout) & 0xffffu) == 0x0412u) { // 0x0412 : Korean Locale ID | ||
| + if (virtualKey == VK_HANGUL || virtualKey == VK_HANJA) { | ||
| + // If shift-space is used to change the input mode, | ||
| + // the extented bit is not set. So add it to get right key id. | ||
| + button |= 0x100u; | ||
| + } | ||
| + } | ||
| + | ||
| if ((button & 0x100u) != 0) { | ||
| virtualKey += 0x100u; | ||
| } | ||
| @@ -1392,3 +1403,4 @@ MSWindowsKeyState::addKeyEntry(synergy::KeyMap& keyMap, synergy::KeyMap::KeyItem | ||
| m_keyToVKMap[item.m_id] = static_cast<UINT>(item.m_client); | ||
| } | ||
| } | ||
| + | ||
View
2
src/lib/platform/MSWindowsKeyState.h
| @@ -122,7 +122,7 @@ class MSWindowsKeyState : public KeyState { | ||
| (button should include the extended key bit), or kKeyNone if there is | ||
| no such key. | ||
| */ | ||
| - static KeyID getKeyID(UINT virtualKey, KeyButton button); | ||
| + KeyID getKeyID(UINT virtualKey, KeyButton button) const; | ||
| //! Map button to virtual key | ||
| /*! | ||
Oops, something went wrong.