Figment.so
Mac hostingWebsite hostingGuidesHow to usePricing

Essential Keyboard Shortcuts for Remote Mac

Short answer: enable SendSystemKeys in RealVNC Viewer (or FullscreenSystemKeys in TigerVNC), then press the Windows key where macOS asks for Command. That single setting fixes most conflicts. The 20-row verification table below lets you confirm every common shortcut before you start working.

If you drive a rented Mac over VNC from Windows or Linux, you have almost certainly fired a screenshot on the local desktop when you meant to grab one on the Mac, or Alt+Tabbed locally when you wanted the remote app switcher. The cause is always the same: your VNC client — or the local OS before it — intercepts the key event before it reaches macOS.

This guide shows exactly why that happens, how to pass keys through in RealVNC Viewer, TigerVNC and Remmina, and gives a 20-shortcut checklist to run after every new session. Figment rents a $29 virtual Intel macOS VM (browser-console access) and physical M-series Macs from $95/month; see /mac-hosting for plans. On the physical Macs you connect over a standard VNC-compatible client, so the remaps below apply directly. On the browser console the browser itself can swallow keys — the same three-layer debugging applies, with browser shortcuts added to the list of suspects.

Why Shortcuts Break: Key Events in the VNC Protocol

VNC uses the Remote Framebuffer protocol. RFC 6143 §7.5.4 defines the KeyEvent message as a 1-byte message type (value 4), a 1-byte down flag, 2 bytes of padding and a 4-byte X11 keysym. The client sends keysyms, not host virtual-key codes, and the remote server interprets them. There is no automatic Windows-to-Mac modifier translation in the protocol.

Three distinct failures follow from that design:

Failure modeExampleWhere it happens
Local OS swallows the keyWin key opens Start menuBefore the VNC client ever sees it
VNC client swallows the keyAlt+Tab switches local windowsInside the client's own shortcut layer
Wrong keysym reaches macOSCtrl+C lands as Control+C, not Cmd+CClient did not remap Ctrl→Super

macOS uses Command (⌘) as its primary modifier — see Apple's keyboard shortcuts reference. Windows and most Linux desktops use Ctrl for the same operations. You have to tell the VNC client what to do about that.

Top 5 Conflicts to Resolve First

#Windows/Linux key pressedWhat usually intercepts itIntended macOS action
1PrtScn / Win+Shift+SLocal screenshot toolRemote screenshot (Shift+Cmd+3/4)
2Alt+TabLocal app switcherRemote Cmd+Tab
3Ctrl+C / Ctrl+VKeysym arrives as Control, not CommandRemote Cmd+C / Cmd+V
4Win keyStart menu / activities overviewShould map to Cmd on Mac
5Ctrl+SpaceIBus/Fcitx input method toggle on LinuxSpotlight (Cmd+Space)

Conflicts 1 and 4 are OS-level; 2, 3 and 5 are a mix of client-level forwarding and keysym mapping. They need different fixes.

Remapping in RealVNC Viewer on Windows

The relevant parameter is SendSystemKeys. Confirm the exact name in the Help menu of your installed version — RealVNC has changed parameter names between editions.

  1. Open Preferences → Expert in RealVNC Viewer.
  2. Set SendSystemKeys to true. The client then forwards the Windows key, Alt+Tab, Alt+Esc and Ctrl+Esc to the remote session instead of handing them to Windows.
  3. To trigger a remote screenshot while PrtScn is still captured by Windows, open the RealVNC menu with F8 → Send key → Shift+Command+3.

For copy and paste: macOS treats keysym 0xffeb (Super_L — the Windows key) as left Command. With SendSystemKeys on, Win+C, Win+V, Win+X, Win+Z, Win+A all behave as their Cmd equivalents on the Mac. Your Ctrl key keeps its macOS Control role, which is what you want for shell shortcuts inside Terminal.

Remapping in TigerVNC and Remmina on Linux

The authoritative reference is the TigerVNC vncviewer manual. Two parameters matter:

  • ShortcutModifiers — the modifier combination TigerVNC reserves for its own shortcuts. The default is Ctrl,Alt. Switch it to Ctrl,Shift if you want Ctrl+Alt+* to go to macOS instead.
  • FullscreenSystemKeys — when enabled, TigerVNC grabs the keyboard in full-screen mode and forwards special keys such as Alt+Tab directly to the server.

Open the TigerVNC popup menu with Ctrl+Alt+M to change settings mid-session; the menu prefix moves with ShortcutModifiers.

Remmina (GTK VNC plugin):

  1. Edit the connection profile → Advanced tab.
  2. Set Keyboard grab to On connection or Always so your desktop environment stops intercepting keys while Remmina is focused.
  3. Keyboard grab is independent of the Quality/Performance setting; you can run medium quality and still keep every keystroke.

Linux Ctrl+Space conflict: change the IBus or Fcitx toggle in your desktop keyboard settings, then use Win+Space (forwarded as Super+Space → Spotlight) or bind Spotlight to a key you do not use locally.

Sending the Command Key from a Windows Keyboard

Windows keyboards have no Command key. These are the keysyms most VNC servers on macOS honour:

Windows/Linux keyX11 keysymmacOS reads it as
Left WinSuper_L (0xffeb)Left Command (⌘)
Right WinSuper_R (0xffec)Right Command (⌘)
Left AltAlt_L (0xffe9)Left Option (⌥)
Right AltAlt_R (0xffea)Right Option (⌥)
CtrlControl_L (0xffe3)Control (^)

Every macOS Cmd+key therefore becomes Win+key on your Windows keyboard once the system-keys setting is on.

The 20-Shortcut Verification Table

Run through this after configuring the client. Open TextEdit on the Mac for the editing checks and keep an eye on Mission Control for the system ones.

#Press on Win/Linux keyboardExpected macOS actionQuick verification
1Win+CCopy selected textSelect in TextEdit, Win+C, paste elsewhere
2Win+VPastePaste result from #1
3Win+XCutSelect text, Win+X, confirm removal
4Win+ZUndoType a word, Win+Z removes the last keystroke
5Win+Shift+ZRedoImmediately after #4
6Win+ASelect allWin+A in TextEdit highlights everything
7Win+SSave documentSave sheet or title-bar change
8Win+WClose windowFront window closes
9Win+QQuit applicationFront app quits
10Win+TabApp switcher stripSwitcher appears at centre of screen
11Win+SpaceSpotlightSpotlight field opens
12Win+Shift+3Full-screen screenshotPNG lands on Desktop
13Win+Shift+4Region screenshotCrosshair cursor
14Win+Shift+5Screenshot toolbarToolbar across bottom of screen
15Ctrl+UpMission ControlAll windows spread out
16Ctrl+DownApp ExposéOnly front app's windows
17Win+MMinimise front windowWindow slides into Dock
18Win+HHide front applicationWindows vanish, app still running
19Win+,App settings/preferencesFront app's settings open
20Win+Alt+EscForce Quit dialogForce Quit list appears

If a row fails, check in order: is the client still intercepting it (client shortcut list), is the local OS still eating it (test with another local app focused), is the Mac's own shortcut customised (System Settings → Keyboard → Keyboard Shortcuts).

A Pre-Session Sanity Check

Paste this into Terminal on the remote Mac after each new session to see whether a previous user left a system-level modifier remap behind:

# Run in Terminal on the remote Mac
defaults read -g AppleCurrentKeyboardLayoutInputSourceID 2>/dev/null \
  && echo "---" \
  && hidutil property --get "UserKeyMapping" 2>/dev/null \
  || echo "(no custom UserKeyMapping)"

A non-empty UserKeyMapping array means a prior session mapped keys at the HID layer — a frequent explanation for a stubborn remaining conflict.

Picking the Right Figment Plan for Daily Remote Use

If your work is editor, browser, SSH and command-line tooling, the $29 virtual Intel macOS VM (2 vCPU, 8 GiB RAM, 80 GiB disk) is the entry point. It runs macOS on Linux/KVM via a browser console, has no GPU acceleration or audio, and is Intel — so Xcode 26 or earlier is the supported toolchain line. Check the exact Xcode/macOS pair you need against Apple's porting notes for Apple silicon before committing.

If you need Apple-silicon execution, local Simulator for recent Xcode, or more RAM and concurrency, physical M-series starts at $95/month (exact chip, RAM and disk are confirmed in the quote; physical plans collect requests until supply is confirmed). The $49 i3 Mac is also request-based. For a managed CI setup — one M-series Mac, CI configuration, backups, monitoring and 30 minutes of monthly support — the Managed Build Mac is $249/month; the two-Mac Managed Mac Team is $999/month.

Request a configuration at /mac-hosting/start.

Related reading:


Subscribe for Figma design and website publishing guides.


Figment.so

Contact

Twitter

Website pricing

Compute index

About

Privacy

Terms