Clipboard, Context Menu, and Hidden Shortcuts on Windows
Everything power users and developers need: deep shortcuts, Windows Run commands, clipboard history, quirks, CF_HTML/RTF internals, detection methods, and modern Clipboard API patterns—fully actionable, copyable, and complete.
Windows shortcuts
Run commands
Clipboard API
CF_HTML & RTF
PowerShell & cmd
Keyboard shortcuts: clipboard, selection, and context menu
| Shortcut | Action | Notes |
|---|---|---|
| Ctrl + C | Copy | Standard; preserves rich formats when supported (HTML/RTF/images) |
| Ctrl + X | Cut | Moves selected content; not all apps allow cutting |
| Ctrl + V | Paste | Pastable formats depend on target app; can negotiate HTML/RTF/plain |
| Win + V | Clipboard history | Enable in Settings → System → Clipboard; supports text, small images |
| Shift + Insert | Paste (legacy) | Works in many consoles/older apps |
| Ctrl + Shift + V | Paste as plain text | App-dependent (e.g., VS Code, browsers) |
| Shift + F10 | Open context menu | Keyboard-only access to the context menu |
| Shift + Right-click | Extended Explorer menu | Shows extra verbs (e.g., “Copy as path”, “Open PowerShell here”) |
| Win + Shift + S | Snip & copy screenshot | Places image into clipboard via Snipping Tool |
| Ctrl + A | Select all | Fast pre-copy path to batch operations |
| Ctrl + Shift + C | DevTools copy element | Browser devtools; copies selection inner HTML/text |
Tip: In Explorer, hold Shift to reveal “Copy as path” in the context menu—critical for scripting.
Windows Run commands and system entry points
Clipboard-related commands
ms-settings:clipboard
ms-settings:keyboard
taskkill /IM rdpclip.exe /F & start rdpclip.exe
clip cmd.exe (pipe text into clipboard)
powershell Get-Clipboard
powershell Set-Clipboard 'Hello World'
Explorer & context menu tooling
shell:SendTo (edit “Send to” shortcuts)
shell:Startup (startup items)
shell:Recent (recent files)
shell:Downloads
cmd /c "echo %cd%|clip" (copy current dir)
Note: Windows Clipboard History (Win+V) is not programmatically accessible for privacy; you can enable, pin, clear, and sync, but apps cannot enumerate the full history.
Deep quirks, formats, and lesser-known behaviors
- Format negotiation: Copy often stores multiple formats concurrently (e.g., CF_TEXT, CF_UNICODETEXT, CF_HTML, RTF). The target app chooses the richest format it understands.
- CF_HTML header: HTML clipboard content includes a header with
StartHTML/EndHTML,StartFragment/EndFragment. You can parse this to extract only the fragment. - Newline normalization: Windows common controls may normalize line endings to
\r\n. When pasting into *nix-like editors, expect conversion to\n. - Images: Screenshots copied via Snipping Tool provide DIB/PNG; some apps only accept bitmap—pasting may fail if only PNG is present.
- Security model: Browsers gate read access—
navigator.clipboard.read()requires user gesture and permission; write access is more permissive but still gesture-bound. - Console behaviors: Windows Terminal and legacy cmd differ: legacy relies on menu or shortcuts like Ctrl+Insert/Shift+Insert; terminal maps modern Ctrl+C/V.
- Office “Clipboard Pane”: Office apps can store multiple items internally; separate from system history. Useful for bulk paste workflows.
- RDP clipboard driver (rdpclip): Remote sessions rely on
rdpclip.exe. Restart it if clipboard desync occurs.
Forensic tip: If pasting HTML into a text field yields raw markup, the target app treated clipboard as plain text—force “Paste as plain” or use an app that accepts CF_HTML.
Command line: copy, paste, transform
cmd.exe
type README.md | clip (copy file to clipboard)
echo Hello | clip
powershell Get-Clipboard
PowerShell
Get-Clipboard (reads text or objects)
Set-Clipboard -Value 'Hello World'
$img = Get-Clipboard -Format Image; $img (image retrieval)
[Windows.Forms.Clipboard]::ContainsAudio() (format probes)
[Windows.Forms.Clipboard]::GetData('HTML Format') (raw CF_HTML)
Clipboard API in the browser: practical patterns
Write text (with user gesture)
async function copyText(s){await navigator.clipboard.writeText(s);}
Read text (permission-gated)
async function readText(){const t=await navigator.clipboard.readText();return t;}
Write rich HTML
async function copyHTML(html){const blob=new Blob([html],{type:'text/html'});const item=new ClipboardItem({'text/html':blob});await navigator.clipboard.write([item]);}
Read items (images, HTML)
async function readItems(){const items=await navigator.clipboard.read();for(const it of items){for(const t of it.types){const b=await it.getType(t);console.log(t,b);}}}
Fallback for older browsers
function legacyCopy(el){el.select();document.execCommand('copy');}
Gesture rule: Browsers require user interaction (click/keypress) to read/write clipboard. Schedule clipboard calls inside event handlers.
Detecting and retrieving copied content
- Browser events: Use
copy,cut,pasteevents on inputs/document to intercept dataTransfer and enforce formats or normalization. - Selection tracking:
selectionchange+ explicit “Copy” button yields deterministic capture points; global clipboard history is not enumerable via web APIs. - Desktop scripts: Use PowerShell
Get-Clipboardpolling to observe changes for local automations (respect privacy).
Browser copy/paste interception
document.addEventListener('paste',e=>{const dt=e.clipboardData;const t=dt.getData('text/plain');const h=dt.getData('text/html');console.log({t,h});});
document.addEventListener('copy',e=>{e.clipboardData.setData('text/plain','Normalized');e.clipboardData.setData('text/html','<b>Normalized</b>');e.preventDefault();});
PowerShell watcher (simple)
$last='';while($true){$c=Get-Clipboard -ErrorAction SilentlyContinue; if($c -and $c -ne $last){Write-Host ('Changed: ' + $c); $last=$c} Start-Sleep -Milliseconds 500}
Privacy: Avoid logging sensitive clipboard contents. Build explicit opt-in tools.
CF_HTML structure: extract the fragment
function parseCFHTML(s){const get=n=>parseInt((s.match(new RegExp(n+'\\s*:\\s*(\\d+)'))||[])[1],10);const sh=get('StartHTML'),eh=get('EndHTML'),sf=get('StartFragment'),ef=get('EndFragment');const html=s.slice(sh,eh);const frag=s.slice(sf,ef);return {html,frag};}
When a source places CF_HTML onto the clipboard, it prepends a header with byte offsets. Parse them to extract just the fragment for clean pastes or transforms.
Copy-paste workflows and automations
- Normalized paste: Intercept
pasteand convert HTML → Markdown or plain text for content pipelines. - Scripted transforms: Use PowerShell to filter text (e.g., dedupe whitespace) and re-set clipboard.
- Path copying: Explorer “Copy as path” + batch scripts to process file lists from clipboard.
- Screenshot → text: Snip with Win + Shift + S, OCR in OneNote/PowerToys; result goes to clipboard.
PowerShell normalize whitespace
$c=Get-Clipboard; $n=([regex]'\s+').Replace($c,' '); Set-Clipboard -Value $n
Live browser demo: read/write clipboard and show content
Use the buttons below. Read requires user permission and an interaction.
// Clipboard output will appear here...
Troubleshooting and reliability patterns
- RDP desync: Restart
rdpclip.exe(see command above). - Browser denies read: Trigger from a click; check site permissions; serve over HTTPS.
- Format loss: Source or target doesn’t support the format—force plain text or pre-convert.
- Terminal copy issues: Check keybindings in Windows Terminal settings; map Ctrl+C/V.
- Office-only history: Use Office Clipboard pane to manage multiple items in Office apps.
Quick reference: everything at a glance
| Area | Key tools | Go-to shortcut/command |
|---|---|---|
| Clipboard history | System clipboard | Win + V |
| Screenshot to clipboard | Snipping Tool | Win + Shift + S |
| Copy path | Explorer extended menu | Shift + Right-click → “Copy as path” |
| System settings | Settings app | ms-settings:clipboard |
| Pipe to clipboard | cmd | clip |
| Scripted operations | PowerShell | Get-Clipboard, Set-Clipboard |
| Browser API | Navigator.clipboard | writeText(), readText(), write(), read() |
Final takeaways
- Master formats: CF_HTML and RTF determine rich paste; parse as needed.
- Automate wisely: cmd + PowerShell cover most desktop clipboard pipelines.
- Browser rules: Clipboard API needs gestures and permissions—design UX accordingly.
- Context menus: Extended menus and SendTo are your shortcut to custom workflows.
- History limits: Win+V is private to the OS—use Office pane or app-level histories for multi-item paste.
Comments
Post a Comment