deskflow/src/lib/platform
rNoz dd3944cabc feat(macos): preserve the left/right side of modifier keys on the client
The macOS client mapped every right-hand modifier (Control_R, Shift_R,
Alt_R, Super/Meta_R) to its left-hand virtual key and always emitted the
left device-dependent event flags, so a remote right-side modifier
arrived on the client as the left one. Apps that distinguish the two
(input methods that need Right Shift, hotkeys bound to Right Control,
etc.) never saw the right key.

Map the right-hand KeyIDs to their macOS right virtual keys, teach
isModifier() and setKeyboardModifiers() about them, track which side is
held, and emit the matching NX_DEVICER*KEYMASK device flag. This change
is client-only; the macOS server key map is unchanged.

fixes: #8486
Signed-off-by: rNoz <rnoz.commits@gmail.com>
2026-08-10 17:33:48 -04:00
..
CMakeLists.txt build: simplify link for platform library 2026-08-06 13:59:27 +01:00
EiClipboard.cpp refactor: Use mutex to protect m_open / m_time in EiClipboard 2026-06-19 08:26:51 -04:00
EiClipboard.h refactor: Use mutex to protect m_open / m_time in EiClipboard 2026-06-19 08:26:51 -04:00
EiEventQueueBuffer.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
EiEventQueueBuffer.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
EiKeyState.cpp fix: preserve locked modifiers on ei backend 2026-08-04 14:33:05 -04:00
EiKeyState.h fix: preserve locked modifiers on ei backend 2026-08-04 14:33:05 -04:00
EiScreen.cpp fix all keyboard shortcuts send the same keystroke 2026-07-26 21:11:40 -04:00
EiScreen.h fix: release EIS emulation grab when idle so client screens can sleep 2026-07-20 12:52:21 -04:00
IMSWindowsClipboardFacade.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
IOSXKeyResource.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
IOSXKeyResource.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboard.cpp refactor: Use mutex to protect m_time in MSWindowsClipboard 2026-06-19 08:26:51 -04:00
MSWindowsClipboard.h refactor: Use mutex to protect m_time in MSWindowsClipboard 2026-06-19 08:26:51 -04:00
MSWindowsClipboardAnyTextConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardAnyTextConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardBitmapConverter.cpp fix: handle top-down DIB images in clipboard bitmap converter 2026-08-03 22:17:26 +01:00
MSWindowsClipboardBitmapConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardFacade.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardFacade.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardHTMLConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardHTMLConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardUTF16Converter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsClipboardUTF16Converter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsDebugOutputter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsDebugOutputter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsDesks.cpp refactor: replace use of insert for std::maps with try_emplace 2026-06-22 10:27:35 -04:00
MSWindowsDesks.h fix(client): restore relative cursor positions locally 2026-06-10 15:34:27 +01:00
MSWindowsEventQueueBuffer.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsEventQueueBuffer.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsHandle.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsHook.cpp fix: resync Windows keys from low-level hook state 2026-08-10 21:52:37 +01:00
MSWindowsHook.h fix: resync Windows keys from low-level hook state 2026-08-10 21:52:37 +01:00
MSWindowsKeyState.cpp fix: resync Windows keys from low-level hook state 2026-08-10 21:52:37 +01:00
MSWindowsKeyState.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsPowerManager.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsPowerManager.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsProcess.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsProcess.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsScreen.cpp fix: preserve resolved Windows key button 2026-08-10 21:52:37 +01:00
MSWindowsScreen.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsScreenSaver.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsScreenSaver.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsSession.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsSession.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsWatchdog.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
MSWindowsWatchdog.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXAutoTypes.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboard.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboard.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardAnyBitmapConverter.cpp chore: OSXClipboardAnyBitmapConverter remove unused includes 2025-11-07 15:54:19 -05:00
OSXClipboardAnyBitmapConverter.h refactor: IClipboard::EFormat => enum class Clipboard::Format 2025-07-31 13:41:29 +01:00
OSXClipboardAnyTextConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardAnyTextConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardBMPConverter.cpp fix(macos): update BMP handling to support extended headers and improve pixel offset calculation 2026-05-19 17:48:58 +01:00
OSXClipboardBMPConverter.h fix(macos): update BMP handling to support extended headers and improve pixel offset calculation 2026-05-19 17:48:58 +01:00
OSXClipboardHTMLConverter.cpp refactor: IClipboard::EFormat => enum class Clipboard::Format 2025-07-31 13:41:29 +01:00
OSXClipboardHTMLConverter.h refactor: IClipboard::EFormat => enum class Clipboard::Format 2025-07-31 13:41:29 +01:00
OSXClipboardTextConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardTextConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardUTF8Converter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardUTF8Converter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardUTF16Converter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXClipboardUTF16Converter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXCocoaApp.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXCocoaApp.m chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXEventQueueBuffer.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXEventQueueBuffer.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXKeyState.cpp feat(macos): preserve the left/right side of modifier keys on the client 2026-08-10 17:33:48 -04:00
OSXKeyState.h feat(macos): preserve the left/right side of modifier keys on the client 2026-08-10 17:33:48 -04:00
OSXMediaKeySupport.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXMediaKeySupport.m chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXPasteboardPeeker.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXPasteboardPeeker.m chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXPowerManager.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXPowerManager.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXScreen.h fix(mac): ensure background clicks work correctly on macOS 27 2026-07-20 12:11:22 +01:00
OSXScreen.mm fix(mac): invalidate event tap CFMachPort on disable 2026-08-08 12:31:15 -04:00
OSXScreenSaver.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXScreenSaver.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXScreenSaverControl.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXScreenSaverUtil.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXScreenSaverUtil.m refactor: Reuse compliance 2025-01-27 17:05:47 -05:00
OSXUchrKeyResource.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
OSXUchrKeyResource.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
PortalClipboard.cpp feat: clipboard support for portal remote desktop 2026-06-18 22:06:37 +01:00
PortalClipboard.h feat: clipboard support for portal remote desktop 2026-06-18 22:06:37 +01:00
PortalInputCapture.cpp fix(wayland): Corrects the cursor coordinates mapping at primary desktop 2026-08-04 09:42:22 -04:00
PortalInputCapture.h refactor: PortalInputCapture remove extra private section in header 2026-06-19 08:14:54 -04:00
PortalRemoteDesktop.cpp refactor: make PortalRemoteDesktop:handleSessionTransfer a const 2026-06-19 08:14:54 -04:00
PortalRemoteDesktop.h refactor: make PortalRemoteDesktop:handleSessionTransfer a const 2026-06-19 08:14:54 -04:00
XDGKeyUtil.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XDGKeyUtil.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XDGPortalRegistry.h chore: move platform/Wayland.h -> common/PlatformInfo.h 2025-11-06 09:12:18 -05:00
XDGPowerManager.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XDGPowerManager.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboard.cpp fix: reivse scoped_lock to avoid deadlock for XWindowsClipboard 2026-07-08 13:27:50 +01:00
XWindowsClipboard.h refactor: use Mutex to protect vars in XWindowClipboard 2026-06-19 08:26:51 -04:00
XWindowsClipboardAnyBitmapConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardAnyBitmapConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardBMPConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardBMPConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardHTMLConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardHTMLConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardTextConverter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardTextConverter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardUCS2Converter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardUCS2Converter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardUTF8Converter.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsClipboardUTF8Converter.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsConfig.h.in chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsEventQueueBuffer.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsEventQueueBuffer.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsKeyState.cpp refactor: replace use of insert for std::maps with try_emplace 2026-06-22 10:27:35 -04:00
XWindowsKeyState.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsScreen.cpp fix: release keys before x11 kb map refresh 2026-08-10 22:07:00 +01:00
XWindowsScreen.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsScreenSaver.cpp refactor: replace use of insert for std::maps with try_emplace 2026-06-22 10:27:35 -04:00
XWindowsScreenSaver.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsUtil.cpp chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
XWindowsUtil.h chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00